Skip to content

Commit 6a92949

Browse files
committed
[libcxx][test][NFC] Add tests for backward iteration over associative
containers Add test cases for iteration over the ordered associative container from end to begin using operator-- Reviewed By: Quuxplusone, rarutyun Differential Revision: https://reviews.llvm.org/D118114
1 parent d28051c commit 6a92949

File tree

4 files changed

+128
-0
lines changed

4 files changed

+128
-0
lines changed

libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ int main(int, char**)
7777
i->second = 2.5;
7878
assert(i->second == 2.5);
7979
}
80+
assert(i == m.end());
81+
for (int j = m.size(); j >= 1; --j)
82+
{
83+
--i;
84+
assert(i->first == j);
85+
assert(i->second == 2.5);
86+
i->second = 1;
87+
assert(i->second == 1);
88+
}
89+
assert(i == m.begin());
8090
}
8191
{
8292
typedef std::pair<const int, double> V;
@@ -119,6 +129,14 @@ int main(int, char**)
119129
assert(i->first == j);
120130
assert(i->second == 1);
121131
}
132+
assert(i == m.end());
133+
for (int j = m.size(); j >= 1; --j)
134+
{
135+
--i;
136+
assert(i->first == j);
137+
assert(i->second == 1);
138+
}
139+
assert(i == m.begin());
122140
}
123141
#if TEST_STD_VER >= 11
124142
{
@@ -164,6 +182,16 @@ int main(int, char**)
164182
i->second = 2.5;
165183
assert(i->second == 2.5);
166184
}
185+
assert(i == m.end());
186+
for (int j = m.size(); j >= 1; --j)
187+
{
188+
--i;
189+
assert(i->first == j);
190+
assert(i->second == 2.5);
191+
i->second = 1;
192+
assert(i->second == 1);
193+
}
194+
assert(i == m.begin());
167195
}
168196
{
169197
typedef std::pair<const int, double> V;
@@ -206,6 +234,14 @@ int main(int, char**)
206234
assert(i->first == j);
207235
assert(i->second == 1);
208236
}
237+
assert(i == m.end());
238+
for (int j = m.size(); j >= 1; --j)
239+
{
240+
--i;
241+
assert(i->first == j);
242+
assert(i->second == 1);
243+
}
244+
assert(i == m.begin());
209245
}
210246
#endif
211247
#if TEST_STD_VER > 11

libcxx/test/std/containers/associative/multimap/iterator.pass.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,17 @@ int main(int, char**)
7878
i->second = 2.5;
7979
assert(i->second == 2.5);
8080
}
81+
assert(i == m.end());
82+
for (int j = 8; j >= 1; --j)
83+
for (double d = 1; d <= 2; d += .5)
84+
{
85+
--i;
86+
assert(i->first == j);
87+
assert(i->second == 2.5);
88+
i->second = d;
89+
assert(i->second == d);
90+
}
91+
assert(i == m.begin());
8192
}
8293
{
8394
typedef std::pair<const int, double> V;
@@ -121,6 +132,15 @@ int main(int, char**)
121132
assert(i->first == j);
122133
assert(i->second == d);
123134
}
135+
assert(i == m.end());
136+
for (int j = 8; j >= 1; --j)
137+
for (double d = 2; d >= 1; d -= .5)
138+
{
139+
--i;
140+
assert(i->first == j);
141+
assert(i->second == d);
142+
}
143+
assert(i == m.begin());
124144
}
125145
#if TEST_STD_VER >= 11
126146
{
@@ -167,6 +187,17 @@ int main(int, char**)
167187
i->second = 2.5;
168188
assert(i->second == 2.5);
169189
}
190+
assert(i == m.end());
191+
for (int j = 8; j >= 1; --j)
192+
for (double d = 1; d <= 2; d += .5)
193+
{
194+
--i;
195+
assert(i->first == j);
196+
assert(i->second == 2.5);
197+
i->second = d;
198+
assert(i->second == d);
199+
}
200+
assert(i == m.begin());
170201
}
171202
{
172203
typedef std::pair<const int, double> V;
@@ -210,6 +241,15 @@ int main(int, char**)
210241
assert(i->first == j);
211242
assert(i->second == d);
212243
}
244+
assert(i == m.end());
245+
for (int j = 8; j >= 1; --j)
246+
for (double d = 2; d >= 1; d -= .5)
247+
{
248+
--i;
249+
assert(i->first == j);
250+
assert(i->second == d);
251+
}
252+
assert(i == m.begin());
213253
}
214254
#endif
215255
#if TEST_STD_VER > 11

libcxx/test/std/containers/associative/multiset/iterator.pass.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ int main(int, char**)
7373
for (int j = 1; j <= 8; ++j)
7474
for (int n = 0; n < 3; ++n, ++i)
7575
assert(*i == j);
76+
assert(i == m.end());
77+
for (int j = 8; j >= 1; --j)
78+
for (int n = 0; n < 3; ++n) {
79+
--i;
80+
assert(*i == j);
81+
}
82+
assert(i == m.begin());
7683
}
7784
{
7885
typedef int V;
@@ -113,6 +120,13 @@ int main(int, char**)
113120
for (int j = 1; j <= 8; ++j)
114121
for (int k = 0; k < 3; ++k, ++i)
115122
assert(*i == j);
123+
assert(i == m.end());
124+
for (int j = 8; j >= 1; --j)
125+
for (int k = 0; k < 3; ++k) {
126+
--i;
127+
assert(*i == j);
128+
}
129+
assert(i == m.begin());
116130
}
117131
#if TEST_STD_VER >= 11
118132
{
@@ -154,6 +168,13 @@ int main(int, char**)
154168
for (int j = 1; j <= 8; ++j)
155169
for (int n = 0; n < 3; ++n, ++i)
156170
assert(*i == j);
171+
assert(i == m.end());
172+
for (int j = 8; j >= 1; --j)
173+
for (int n = 0; n < 3; ++n) {
174+
--i;
175+
assert(*i == j);
176+
}
177+
assert(i == m.begin());
157178
}
158179
{
159180
typedef int V;
@@ -194,6 +215,13 @@ int main(int, char**)
194215
for (int j = 1; j <= 8; ++j)
195216
for (int k = 0; k < 3; ++k, ++i)
196217
assert(*i == j);
218+
assert(i == m.end());
219+
for (int j = 8; j >= 1; --j)
220+
for (int k = 0; k < 3; ++k) {
221+
--i;
222+
assert(*i == j);
223+
}
224+
assert(i == m.begin());
197225
}
198226
#endif
199227
#if TEST_STD_VER > 11

libcxx/test/std/containers/associative/set/iterator.pass.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ int main(int, char**)
7272
assert(i == k);
7373
for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
7474
assert(*i == j);
75+
assert(i == m.end());
76+
for (int j = m.size(); j >= 1; --j) {
77+
--i;
78+
assert(*i == j);
79+
}
80+
assert(i == m.begin());
7581
}
7682
{
7783
typedef int V;
@@ -111,6 +117,12 @@ int main(int, char**)
111117
i = m.begin();
112118
for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
113119
assert(*i == j);
120+
assert(i == m.end());
121+
for (int j = m.size(); j >= 1; --j) {
122+
--i;
123+
assert(*i == j);
124+
}
125+
assert(i == m.begin());
114126
}
115127
#if TEST_STD_VER >= 11
116128
{
@@ -151,6 +163,12 @@ int main(int, char**)
151163
assert(i == k);
152164
for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
153165
assert(*i == j);
166+
assert(i == m.end());
167+
for (int j = m.size(); j >= 1; --j) {
168+
--i;
169+
assert(*i == j);
170+
}
171+
assert(i == m.begin());
154172
}
155173
{
156174
typedef int V;
@@ -190,6 +208,12 @@ int main(int, char**)
190208
i = m.begin();
191209
for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
192210
assert(*i == j);
211+
assert(i == m.end());
212+
for (int j = m.size(); j >= 1; --j) {
213+
--i;
214+
assert(*i == j);
215+
}
216+
assert(i == m.begin());
193217
}
194218
#endif
195219
#if TEST_STD_VER > 11

0 commit comments

Comments
 (0)