Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : */
8 :
9 : #include <tests.hpp>
10 :
11 : #include <algorithm>
12 : #include <vector>
13 :
14 : #include <gtest/gtest.h>
15 :
16 20 : TEST (test_iter, iterate)
17 : {
18 12 : KeySet ks2 (5, *Key ("user/key2/1", KEY_END), *Key ("user/key2/2", KEY_END), *Key ("user/key2/3", KEY_VALUE, "value", KEY_END),
19 10 : KS_END);
20 :
21 12 : ASSERT_EQ ((*ks2.begin ()).getName (), "user/key2/1") << "name wrong";
22 12 : ASSERT_EQ (ks2.begin ()->getName (), "user/key2/1") << "name wrong";
23 14 : ASSERT_EQ ((ks2.begin ()[0])->getName (), "user/key2/1") << "name wrong";
24 14 : ASSERT_EQ ((*(++ks2.begin ())).getName (), "user/key2/2") << "name wrong";
25 14 : ASSERT_EQ ((++ks2.begin ())->getName (), "user/key2/2") << "name wrong";
26 16 : ASSERT_EQ ((*(ks2.begin () + 1)).getName (), "user/key2/2") << "name wrong";
27 16 : ASSERT_EQ ((ks2.begin () + 1)->getName (), "user/key2/2") << "name wrong";
28 14 : ASSERT_EQ ((ks2.begin ()[1])->getName (), "user/key2/2") << "name wrong";
29 16 : ASSERT_EQ ((*(ks2.begin () + 2)).getName (), "user/key2/3") << "name wrong";
30 16 : ASSERT_EQ ((ks2.begin () + 2)->getName (), "user/key2/3") << "name wrong";
31 14 : ASSERT_EQ ((ks2.begin ()[2])->getName (), "user/key2/3") << "name wrong";
32 10 : ASSERT_EQ ((ks2.begin () + 3), ks2.end ()) << "end iterator broken";
33 :
34 12 : ASSERT_EQ ((*ks2.rbegin ()).getName (), "user/key2/3") << "name wrong";
35 12 : ASSERT_EQ (ks2.rbegin ()->getName (), "user/key2/3") << "name wrong";
36 12 : ASSERT_EQ ((ks2.rbegin ()[0])->getName (), "user/key2/3") << "name wrong";
37 14 : ASSERT_EQ ((*(++ks2.rbegin ())).getName (), "user/key2/2") << "name wrong";
38 14 : ASSERT_EQ ((++ks2.rbegin ())->getName (), "user/key2/2") << "name wrong";
39 16 : ASSERT_EQ ((*(ks2.rbegin () + 1)).getName (), "user/key2/2") << "name wrong";
40 16 : ASSERT_EQ ((ks2.rbegin () + 1)->getName (), "user/key2/2") << "name wrong";
41 12 : ASSERT_EQ ((ks2.rbegin ()[1])->getName (), "user/key2/2") << "name wrong";
42 16 : ASSERT_EQ ((*(ks2.rbegin () + 2)).getName (), "user/key2/1") << "name wrong";
43 16 : ASSERT_EQ ((ks2.rbegin () + 2)->getName (), "user/key2/1") << "name wrong";
44 12 : ASSERT_EQ ((ks2.rbegin ()[2])->getName (), "user/key2/1") << "name wrong";
45 10 : ASSERT_EQ ((ks2.rbegin () + 3), ks2.rend ()) << "end iterator broken";
46 :
47 12 : ASSERT_EQ ((*ks2.cbegin ()).getName (), "user/key2/1") << "name wrong";
48 12 : ASSERT_EQ (ks2.cbegin ()->getName (), "user/key2/1") << "name wrong";
49 14 : ASSERT_EQ ((ks2.cbegin ()[0])->getName (), "user/key2/1") << "name wrong";
50 14 : ASSERT_EQ ((*(++ks2.cbegin ())).getName (), "user/key2/2") << "name wrong";
51 14 : ASSERT_EQ ((++ks2.cbegin ())->getName (), "user/key2/2") << "name wrong";
52 16 : ASSERT_EQ ((*(ks2.cbegin () + 1)).getName (), "user/key2/2") << "name wrong";
53 16 : ASSERT_EQ ((ks2.cbegin () + 1)->getName (), "user/key2/2") << "name wrong";
54 14 : ASSERT_EQ ((ks2.cbegin ()[1])->getName (), "user/key2/2") << "name wrong";
55 16 : ASSERT_EQ ((*(ks2.cbegin () + 2)).getName (), "user/key2/3") << "name wrong";
56 16 : ASSERT_EQ ((ks2.cbegin () + 2)->getName (), "user/key2/3") << "name wrong";
57 14 : ASSERT_EQ ((ks2.cbegin ()[2])->getName (), "user/key2/3") << "name wrong";
58 10 : ASSERT_EQ ((ks2.cbegin () + 3), ks2.cend ()) << "end iterator broken";
59 :
60 12 : ASSERT_EQ ((*ks2.crbegin ()).getName (), "user/key2/3") << "name wrong";
61 12 : ASSERT_EQ (ks2.crbegin ()->getName (), "user/key2/3") << "name wrong";
62 12 : ASSERT_EQ ((ks2.crbegin ()[0])->getName (), "user/key2/3") << "name wrong";
63 14 : ASSERT_EQ ((*(++ks2.crbegin ())).getName (), "user/key2/2") << "name wrong";
64 14 : ASSERT_EQ ((++ks2.crbegin ())->getName (), "user/key2/2") << "name wrong";
65 16 : ASSERT_EQ ((*(ks2.crbegin () + 1)).getName (), "user/key2/2") << "name wrong";
66 16 : ASSERT_EQ ((ks2.crbegin () + 1)->getName (), "user/key2/2") << "name wrong";
67 12 : ASSERT_EQ ((ks2.crbegin ()[1])->getName (), "user/key2/2") << "name wrong";
68 16 : ASSERT_EQ ((*(ks2.crbegin () + 2)).getName (), "user/key2/1") << "name wrong";
69 16 : ASSERT_EQ ((ks2.crbegin () + 2)->getName (), "user/key2/1") << "name wrong";
70 12 : ASSERT_EQ ((ks2.crbegin ()[2])->getName (), "user/key2/1") << "name wrong";
71 10 : ASSERT_EQ ((ks2.crbegin () + 3), ks2.crend ()) << "end iterator broken";
72 : }
73 :
74 20 : TEST (test_iter, const_iterate)
75 : {
76 : // std::cout << "testing const iterate" << std::endl;
77 8 : const KeySet ks2 (5, *Key ("user/key2/1", KEY_END), *Key ("user/key2/2", KEY_END),
78 12 : *Key ("user/key2/3", KEY_VALUE, "value", KEY_END), KS_END);
79 :
80 12 : ASSERT_EQ ((*ks2.begin ()).getName (), "user/key2/1") << "name wrong";
81 12 : ASSERT_EQ (ks2.begin ()->getName (), "user/key2/1") << "name wrong";
82 14 : ASSERT_EQ ((ks2.begin ()[0])->getName (), "user/key2/1") << "name wrong";
83 14 : ASSERT_EQ ((*(++ks2.begin ())).getName (), "user/key2/2") << "name wrong";
84 14 : ASSERT_EQ ((++ks2.begin ())->getName (), "user/key2/2") << "name wrong";
85 16 : ASSERT_EQ ((*(ks2.begin () + 1)).getName (), "user/key2/2") << "name wrong";
86 16 : ASSERT_EQ ((ks2.begin () + 1)->getName (), "user/key2/2") << "name wrong";
87 14 : ASSERT_EQ ((ks2.begin ()[1])->getName (), "user/key2/2") << "name wrong";
88 16 : ASSERT_EQ ((*(ks2.begin () + 2)).getName (), "user/key2/3") << "name wrong";
89 16 : ASSERT_EQ ((ks2.begin () + 2)->getName (), "user/key2/3") << "name wrong";
90 14 : ASSERT_EQ ((ks2.begin ()[2])->getName (), "user/key2/3") << "name wrong";
91 10 : ASSERT_EQ ((ks2.begin () + 3), ks2.end ()) << "end iterator broken";
92 :
93 12 : ASSERT_EQ ((*ks2.rbegin ()).getName (), "user/key2/3") << "name wrong";
94 12 : ASSERT_EQ (ks2.rbegin ()->getName (), "user/key2/3") << "name wrong";
95 12 : ASSERT_EQ ((ks2.rbegin ()[0])->getName (), "user/key2/3") << "name wrong";
96 14 : ASSERT_EQ ((*(++ks2.rbegin ())).getName (), "user/key2/2") << "name wrong";
97 14 : ASSERT_EQ ((++ks2.rbegin ())->getName (), "user/key2/2") << "name wrong";
98 16 : ASSERT_EQ ((*(ks2.rbegin () + 1)).getName (), "user/key2/2") << "name wrong";
99 16 : ASSERT_EQ ((ks2.rbegin () + 1)->getName (), "user/key2/2") << "name wrong";
100 12 : ASSERT_EQ ((ks2.rbegin ()[1])->getName (), "user/key2/2") << "name wrong";
101 16 : ASSERT_EQ ((*(ks2.rbegin () + 2)).getName (), "user/key2/1") << "name wrong";
102 16 : ASSERT_EQ ((ks2.rbegin () + 2)->getName (), "user/key2/1") << "name wrong";
103 12 : ASSERT_EQ ((ks2.rbegin ()[2])->getName (), "user/key2/1") << "name wrong";
104 10 : ASSERT_EQ ((ks2.rbegin () + 3), ks2.rend ()) << "end iterator broken";
105 :
106 12 : ASSERT_EQ ((*ks2.cbegin ()).getName (), "user/key2/1") << "name wrong";
107 12 : ASSERT_EQ (ks2.cbegin ()->getName (), "user/key2/1") << "name wrong";
108 14 : ASSERT_EQ ((ks2.cbegin ()[0])->getName (), "user/key2/1") << "name wrong";
109 14 : ASSERT_EQ ((*(++ks2.cbegin ())).getName (), "user/key2/2") << "name wrong";
110 14 : ASSERT_EQ ((++ks2.cbegin ())->getName (), "user/key2/2") << "name wrong";
111 16 : ASSERT_EQ ((*(ks2.cbegin () + 1)).getName (), "user/key2/2") << "name wrong";
112 16 : ASSERT_EQ ((ks2.cbegin () + 1)->getName (), "user/key2/2") << "name wrong";
113 14 : ASSERT_EQ ((ks2.cbegin ()[1])->getName (), "user/key2/2") << "name wrong";
114 16 : ASSERT_EQ ((*(ks2.cbegin () + 2)).getName (), "user/key2/3") << "name wrong";
115 16 : ASSERT_EQ ((ks2.cbegin () + 2)->getName (), "user/key2/3") << "name wrong";
116 14 : ASSERT_EQ ((ks2.cbegin ()[2])->getName (), "user/key2/3") << "name wrong";
117 10 : ASSERT_EQ ((ks2.cbegin () + 3), ks2.cend ()) << "end iterator broken";
118 :
119 12 : ASSERT_EQ ((*ks2.crbegin ()).getName (), "user/key2/3") << "name wrong";
120 12 : ASSERT_EQ (ks2.crbegin ()->getName (), "user/key2/3") << "name wrong";
121 12 : ASSERT_EQ ((ks2.crbegin ()[0])->getName (), "user/key2/3") << "name wrong";
122 14 : ASSERT_EQ ((*(++ks2.crbegin ())).getName (), "user/key2/2") << "name wrong";
123 14 : ASSERT_EQ ((++ks2.crbegin ())->getName (), "user/key2/2") << "name wrong";
124 16 : ASSERT_EQ ((*(ks2.crbegin () + 1)).getName (), "user/key2/2") << "name wrong";
125 16 : ASSERT_EQ ((ks2.crbegin () + 1)->getName (), "user/key2/2") << "name wrong";
126 12 : ASSERT_EQ ((ks2.crbegin ()[1])->getName (), "user/key2/2") << "name wrong";
127 16 : ASSERT_EQ ((*(ks2.crbegin () + 2)).getName (), "user/key2/1") << "name wrong";
128 16 : ASSERT_EQ ((ks2.crbegin () + 2)->getName (), "user/key2/1") << "name wrong";
129 12 : ASSERT_EQ ((ks2.crbegin ()[2])->getName (), "user/key2/1") << "name wrong";
130 10 : ASSERT_EQ ((ks2.crbegin () + 3), ks2.crend ()) << "end iterator broken";
131 : }
132 :
133 20 : TEST (test_iter, iterator)
134 : {
135 : // std::cout << "test iterator" << std::endl;
136 12 : KeySet ks4 (5, *Key ("user/key4/1", KEY_END), *Key ("user/key4/2", KEY_END), *Key ("user/key4/3", KEY_VALUE, "value", KEY_END),
137 10 : KS_END);
138 :
139 2 : KeySet::iterator it = ks4.begin ();
140 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
141 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
142 4 : it += 1;
143 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
144 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
145 4 : it += 1;
146 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
147 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
148 4 : it += 1;
149 6 : ASSERT_EQ (it, ks4.end ()) << "not at end";
150 4 : it -= 1;
151 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
152 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
153 4 : it -= 1;
154 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
155 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
156 4 : it -= 1;
157 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
158 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
159 6 : ASSERT_EQ (it, ks4.begin ()) << "not at begin";
160 :
161 :
162 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
163 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
164 4 : it++;
165 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
166 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
167 4 : it++;
168 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
169 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
170 4 : it++;
171 6 : ASSERT_EQ (it, ks4.end ()) << "not at end";
172 4 : it--;
173 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
174 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
175 4 : it--;
176 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
177 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
178 4 : it--;
179 : }
180 :
181 20 : TEST (test_iter, const_iterator)
182 : {
183 : // std::cout << "test const iterator" << std::endl;
184 8 : const KeySet ks4 (5, *Key ("user/key4/1", KEY_END), *Key ("user/key4/2", KEY_END),
185 12 : *Key ("user/key4/3", KEY_VALUE, "value", KEY_END), KS_END);
186 :
187 2 : KeySet::iterator it = ks4.begin ();
188 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
189 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
190 4 : it += 1;
191 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
192 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
193 4 : it += 1;
194 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
195 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
196 4 : it += 1;
197 6 : ASSERT_EQ (it, ks4.end ()) << "not at end";
198 4 : it -= 1;
199 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
200 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
201 4 : it -= 1;
202 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
203 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
204 4 : it -= 1;
205 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
206 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
207 6 : ASSERT_EQ (it, ks4.begin ()) << "not at begin";
208 :
209 :
210 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
211 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
212 4 : it++;
213 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
214 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
215 4 : it++;
216 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
217 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
218 4 : it++;
219 6 : ASSERT_EQ (it, ks4.end ()) << "not at end";
220 4 : it--;
221 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
222 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
223 4 : it--;
224 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
225 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
226 4 : it--;
227 :
228 10 : ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
229 10 : ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
230 2 : ++it;
231 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
232 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
233 2 : ++it;
234 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
235 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
236 2 : ++it;
237 6 : ASSERT_EQ (it, ks4.end ()) << "not at end";
238 2 : --it;
239 10 : ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
240 10 : ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
241 2 : --it;
242 10 : ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
243 10 : ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
244 2 : --it;
245 6 : }
|