Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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;
}
}
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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;
}