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