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_name, forward)
17 : {
18 4 : Key k ("user/user\\/key4\\/1/user\\/key4\\/2/user\\/key4\\/3", KEY_END);
19 :
20 2 : Key::iterator it = k.begin ();
21 8 : ASSERT_EQ ((*it), "user") << "name wrong";
22 2 : ++it;
23 :
24 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
25 2 : ++it;
26 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
27 2 : ++it;
28 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
29 2 : ++it;
30 6 : ASSERT_EQ (it, k.end ()) << "not at end";
31 :
32 2 : --it;
33 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
34 2 : --it;
35 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
36 2 : --it;
37 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
38 2 : --it;
39 8 : ASSERT_EQ ((*it), "user") << "name wrong";
40 6 : ASSERT_EQ (it, k.begin ()) << "not at begin";
41 :
42 4 : it++;
43 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
44 4 : it++;
45 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
46 4 : it++;
47 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
48 4 : it++;
49 6 : ASSERT_EQ (it, k.end ()) << "not at end";
50 :
51 2 : it--;
52 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
53 2 : it--;
54 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
55 2 : it--;
56 : }
57 :
58 20 : TEST (test_iter_name, reverse)
59 : {
60 4 : Key k ("user/user\\/key4\\/1/user\\/key4\\/2/user\\/key4\\/3", KEY_END);
61 :
62 2 : Key::reverse_iterator it = k.rend ();
63 8 : ASSERT_EQ ((*it), "") << "name wrong";
64 2 : --it;
65 8 : ASSERT_EQ ((*it), "user") << "name wrong";
66 2 : --it;
67 :
68 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
69 2 : --it;
70 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
71 2 : --it;
72 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
73 : // --it; // Misusage, do not go past begin
74 6 : ASSERT_EQ (it, k.rbegin ()) << "not at end";
75 :
76 2 : ++it;
77 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
78 2 : ++it;
79 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
80 2 : ++it;
81 8 : ASSERT_EQ ((*it), "user") << "name wrong";
82 2 : ++it;
83 6 : ASSERT_EQ (it, k.rend ()) << "not at begin";
84 :
85 4 : it--;
86 8 : ASSERT_EQ ((*it), "user") << "name wrong";
87 4 : it--;
88 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
89 4 : it--;
90 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
91 4 : it--;
92 8 : ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
93 : // it--; // Misusage, do not go past begin
94 6 : ASSERT_EQ (it, k.rbegin ()) << "not at end";
95 :
96 4 : it++;
97 8 : ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
98 4 : it++;
99 8 : ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
100 : }
101 :
102 20 : TEST (iterNameCascading, forward)
103 : {
104 4 : Key k ("/\\/key4\\/1/\\/key4\\/2/\\/key4\\/3", KEY_END);
105 :
106 2 : Key::iterator it = k.begin ();
107 8 : ASSERT_EQ ((*it), "") << "cascading name wrong";
108 2 : ++it;
109 :
110 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
111 2 : ++it;
112 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
113 2 : ++it;
114 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
115 2 : ++it;
116 6 : ASSERT_EQ (it, k.end ()) << "not at end";
117 :
118 2 : --it;
119 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
120 2 : --it;
121 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
122 2 : --it;
123 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
124 2 : --it;
125 8 : ASSERT_EQ ((*it), "") << "name wrong";
126 6 : ASSERT_EQ (it, k.begin ()) << "not at begin";
127 :
128 4 : it++;
129 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
130 4 : it++;
131 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
132 4 : it++;
133 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
134 4 : it++;
135 6 : ASSERT_EQ (it, k.end ()) << "not at end";
136 :
137 2 : it--;
138 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
139 2 : it--;
140 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
141 2 : it--;
142 : }
143 :
144 20 : TEST (iterNameCascading, reverse)
145 : {
146 4 : Key k ("/\\/key4\\/1/\\/key4\\/2/\\/key4\\/3", KEY_END);
147 :
148 2 : Key::reverse_iterator it = k.rend ();
149 8 : ASSERT_EQ ((*it), "") << "name wrong";
150 2 : --it;
151 8 : ASSERT_EQ ((*it), "") << "name wrong";
152 2 : --it;
153 :
154 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
155 2 : --it;
156 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
157 2 : --it;
158 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
159 : // --it; // Misusage, do not go past begin
160 6 : ASSERT_EQ (it, k.rbegin ()) << "not at end";
161 :
162 2 : ++it;
163 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
164 2 : ++it;
165 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
166 2 : ++it;
167 8 : ASSERT_EQ ((*it), "") << "name wrong";
168 2 : ++it;
169 6 : ASSERT_EQ (it, k.rend ()) << "not at begin";
170 :
171 4 : it--;
172 8 : ASSERT_EQ ((*it), "") << "name wrong";
173 4 : it--;
174 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
175 4 : it--;
176 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
177 4 : it--;
178 8 : ASSERT_EQ ((*it), "/key4/3") << "name wrong";
179 : // it--; // Misusage, do not go past begin
180 6 : ASSERT_EQ (it, k.rbegin ()) << "not at end";
181 :
182 4 : it++;
183 8 : ASSERT_EQ ((*it), "/key4/2") << "name wrong";
184 4 : it++;
185 8 : ASSERT_EQ ((*it), "/key4/1") << "name wrong";
186 6 : }
|