#include "IteratorTest.h" #include <alib/set> #include <alib/vector> #include <alib/pair> #include <sstream> #include <alib/istream> #include <alib/string> #include <alib/iterator> CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( IteratorTest, "bits" ); CPPUNIT_TEST_SUITE_REGISTRATION( IteratorTest ); void IteratorTest::setUp() { } void IteratorTest::tearDown() { } void IteratorTest::testIterator() { std::vector < int * > data; data.push_back ( new int ( 1 ) ); data.push_back ( new int ( 2 ) ); data.push_back ( new int ( 3 ) ); data.push_back ( new int ( 4 ) ); data.push_back ( new int ( 5 ) ); std::vector < int > ref { 1, 2, 3, 4, 5 }; bool res = std::equal ( ext::dereferencer ( data.begin ( ) ), ext::dereferencer ( data.end ( ) ), ref.begin ( ), ref.end ( ) ); CPPUNIT_ASSERT ( res ); for ( int * elem : data ) { delete elem; } } void IteratorTest::testReverser() { std::vector < int > data; data.push_back ( 1 ); data.push_back ( 2 ); data.push_back ( 3 ); data.push_back ( 4 ); data.push_back ( 5 ); std::vector < int > data2; data2.push_back ( 5 ); data2.push_back ( 4 ); data2.push_back ( 3 ); data2.push_back ( 2 ); data2.push_back ( 1 ); std::vector < int > trans; for ( int elem : ext::make_reverse ( data ) ) { trans.push_back ( elem ); } CPPUNIT_ASSERT ( data2 == trans ); const std::vector < int > & dataRef = data; trans.clear ( ); for ( int elem : ext::make_reverse ( dataRef ) ) { trans.push_back ( elem ); } CPPUNIT_ASSERT ( data2 == trans ); } void IteratorTest::testCallbackIterator ( ) { int expected; ext::callback_iterator < int > out = ext::make_callback_iterator < int > ( [ & ] ( int value ) -> void { CPPUNIT_ASSERT ( value == expected ); } ); expected = 10; * out = 10; }