From 82302862d6ae1ac83beb278eacb151587669068a Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 9 Jan 2015 19:21:56 +0100
Subject: [PATCH] add set_difference tests

---
 alib2data/test-src/std/StdSet.cpp | 45 +++++++++++++++++++++++++++++++
 alib2data/test-src/std/StdSet.h   | 21 +++++++++++++++
 2 files changed, 66 insertions(+)
 create mode 100644 alib2data/test-src/std/StdSet.cpp
 create mode 100644 alib2data/test-src/std/StdSet.h

diff --git a/alib2data/test-src/std/StdSet.cpp b/alib2data/test-src/std/StdSet.cpp
new file mode 100644
index 0000000000..b67f5013a9
--- /dev/null
+++ b/alib2data/test-src/std/StdSet.cpp
@@ -0,0 +1,45 @@
+#include "StdSet.h"
+#include <set>
+#include <algorithm>
+
+#include "alphabet/Symbol.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( StdSet );
+
+void StdSet::setUp() {
+}
+
+void StdSet::tearDown() {
+}
+
+void StdSet::test1() {
+	int first[] = {5,10,15,20,25};
+	int second[] = {50,40,30,20,10};
+	std::vector<int> v(10);                      // 0  0  0  0  0  0  0  0  0  0
+	std::vector<int>::iterator it;
+
+	std::sort (first,first+5);     //  5 10 15 20 25
+	std::sort (second,second+5);   // 10 20 30 40 50
+
+	it=std::set_difference (first, first+5, second, second+5, v.begin());
+	v.resize(it-v.begin());
+
+	CPPUNIT_ASSERT_EQUAL(5,  v[0]);
+	CPPUNIT_ASSERT_EQUAL(15, v[1]);
+	CPPUNIT_ASSERT_EQUAL(25, v[2]);
+}
+
+
+void StdSet::test2() {
+	std::set<alphabet::Symbol> first  = {alphabet::symbolFrom(1)};
+	std::set<alphabet::Symbol> second  = {alphabet::symbolFrom(1), alphabet::symbolFrom(2), alphabet::symbolFrom(3)};
+
+	std::set<alphabet::Symbol> firstMinusSecond;
+	std::set<alphabet::Symbol> secondMinusFirst;
+
+	std::set_difference (first.begin(), first.end(), second.begin(), second.end(), std::inserter(firstMinusSecond, firstMinusSecond.end()));
+	std::set_difference (second.begin(), second.end(), first.begin(), first.end(), std::inserter(secondMinusFirst, secondMinusFirst.end()));
+
+	CPPUNIT_ASSERT_EQUAL(firstMinusSecond.size(), 0ul);
+	CPPUNIT_ASSERT_EQUAL(secondMinusFirst.size(), 2ul);
+}
diff --git a/alib2data/test-src/std/StdSet.h b/alib2data/test-src/std/StdSet.h
new file mode 100644
index 0000000000..42578867d3
--- /dev/null
+++ b/alib2data/test-src/std/StdSet.h
@@ -0,0 +1,21 @@
+#ifndef SET_TEST_H_
+#define SET_TEST_H_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class StdSet : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( StdSet );
+  CPPUNIT_TEST( test1 );
+  CPPUNIT_TEST( test2 );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void test1();
+  void test2();
+};
+
+#endif  // SET_TEST_H_
-- 
GitLab