diff --git a/alib2std/test-src/extensions/VectorTest.cpp b/alib2std/test-src/extensions/VectorTest.cpp
index ad2fc793e720987ef746144df981fc3d30b8f167..2857ae9cafdb75b81c8215072471b1d536594395 100644
--- a/alib2std/test-src/extensions/VectorTest.cpp
+++ b/alib2std/test-src/extensions/VectorTest.cpp
@@ -1,6 +1,7 @@
 #include "VectorTest.h"
 #include <alib/vector>
 #include <alib/type_traits>
+#include <alib/algorithm>
 
 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( VectorTest, "bits" );
 CPPUNIT_TEST_SUITE_REGISTRATION( VectorTest );
@@ -17,6 +18,21 @@ void VectorTest::testProperties() {
 	const ext::vector<int>& constData = data;
 
 	CPPUNIT_ASSERT((std::is_same<decltype(constData[0]), const int&>::value));
+
+	int moves;
+	int copies;
+
+	ext::vector < Moveable > vec;
+	vec.push_back ( Moveable ( moves, copies ) );
+	vec.push_back ( Moveable ( moves, copies ) );
+	vec.push_back ( Moveable ( moves, copies ) );
+	vec.push_back ( Moveable ( moves, copies ) );
+
+	vec.erase ( ext::unique ( vec.begin ( ), vec.end ( ), [ ] ( const Moveable &, const Moveable & ) { return true; } ), vec.end ( ) );
+
+	CPPUNIT_ASSERT ( vec.size ( ) == 1 );
+
+	CPPUNIT_ASSERT(copies == 0);
 }
 
 void VectorTest::testVectorBool() {
diff --git a/alib2std/test-src/extensions/VectorTest.h b/alib2std/test-src/extensions/VectorTest.h
index dc4291e6cd78995284b7d3a6175236069f083a93..825fe7480cff0584f481ec3c03d9afababb03543 100644
--- a/alib2std/test-src/extensions/VectorTest.h
+++ b/alib2std/test-src/extensions/VectorTest.h
@@ -15,6 +15,40 @@ class VectorTest : public CppUnit::TestFixture
   CPPUNIT_TEST( testVectorBool5 );
   CPPUNIT_TEST_SUITE_END();
 
+public:
+class Moveable {
+	int& m_moves;
+	int& m_copies;
+
+public:
+	Moveable(int& moves, int& copies) : m_moves(moves), m_copies(copies) {
+		m_moves = 0;
+		m_copies = 0;
+	}
+
+	Moveable(const Moveable& src) : m_moves(src.m_moves), m_copies(src.m_copies) {
+		m_copies++;
+	}
+
+	Moveable(Moveable&& src) : m_moves(src.m_moves), m_copies(src.m_copies) {
+		m_moves++;
+	}
+
+	Moveable & operator = ( const Moveable & ) {
+		m_copies ++;
+		return * this;
+	}
+
+	Moveable & operator = ( Moveable && ) {
+		m_moves ++;
+		return * this;
+	}
+
+	bool operator<(const Moveable&) const {
+		return false;
+	}
+};
+
 public:
   void setUp();
   void tearDown();