Skip to content

Commit c02236b

Browse files
committed
Mark some of the behavior in the move w/allocator constructors of deque/unordered containers as 'libc++-specific'. Thanks to Andrey Maksimov for pointing this out.
llvm-svn: 352512
1 parent dd47168 commit c02236b

File tree

5 files changed

+41
-36
lines changed

5 files changed

+41
-36
lines changed

libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <map>
1818
#include <cassert>
1919

20+
#include "test_macros.h"
2021
#include "MoveOnly.h"
2122
#include "../../../test_compare.h"
2223
#include "test_allocator.h"
@@ -62,7 +63,7 @@ int main()
6263
assert(m3 == m2);
6364
assert(m3.get_allocator() == A(7));
6465
assert(m3.key_comp() == C(5));
65-
assert(m1.empty());
66+
LIBCPP_ASSERT(m1.empty());
6667
}
6768
{
6869
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -101,7 +102,7 @@ int main()
101102
assert(m3 == m2);
102103
assert(m3.get_allocator() == A(5));
103104
assert(m3.key_comp() == C(5));
104-
assert(m1.empty());
105+
LIBCPP_ASSERT(m1.empty());
105106
}
106107
{
107108
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -140,7 +141,7 @@ int main()
140141
assert(m3 == m2);
141142
assert(m3.get_allocator() == A(5));
142143
assert(m3.key_comp() == C(5));
143-
assert(m1.empty());
144+
LIBCPP_ASSERT(m1.empty());
144145
}
145146
{
146147
typedef Counter<int> T;
@@ -176,14 +177,14 @@ int main()
176177

177178
M m3(std::move(m1), A());
178179
assert(m3 == m2);
179-
assert(m1.empty());
180+
LIBCPP_ASSERT(m1.empty());
180181
assert(Counter_base::gConstructed == num+6);
181182

182183
{
183184
M m4(std::move(m2), A(5));
184185
assert(Counter_base::gConstructed == num+6);
185186
assert(m4 == m3);
186-
assert(m2.empty());
187+
LIBCPP_ASSERT(m2.empty());
187188
}
188189
assert(Counter_base::gConstructed == num+3);
189190
}
@@ -226,7 +227,7 @@ int main()
226227
assert(m3 == m2);
227228
assert(m3.get_allocator() == A());
228229
assert(m3.key_comp() == C(5));
229-
assert(m1.empty());
230+
LIBCPP_ASSERT(m1.empty());
230231
}
231232
{
232233
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -265,6 +266,6 @@ int main()
265266
assert(m3 == m2);
266267
assert(m3.get_allocator() == A{});
267268
assert(m3.key_comp() == C(5));
268-
assert(m1.empty());
269+
LIBCPP_ASSERT(m1.empty());
269270
}
270271
}

libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <map>
1818
#include <cassert>
1919

20+
#include "test_macros.h"
2021
#include "MoveOnly.h"
2122
#include "../../../test_compare.h"
2223
#include "test_allocator.h"
@@ -62,7 +63,7 @@ int main()
6263
assert(m3 == m2);
6364
assert(m3.get_allocator() == A(7));
6465
assert(m3.key_comp() == C(5));
65-
assert(m1.empty());
66+
LIBCPP_ASSERT(m1.empty());
6667
}
6768
{
6869
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -101,7 +102,7 @@ int main()
101102
assert(m3 == m2);
102103
assert(m3.get_allocator() == A(5));
103104
assert(m3.key_comp() == C(5));
104-
assert(m1.empty());
105+
LIBCPP_ASSERT(m1.empty());
105106
}
106107
{
107108
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -140,7 +141,7 @@ int main()
140141
assert(m3 == m2);
141142
assert(m3.get_allocator() == A(5));
142143
assert(m3.key_comp() == C(5));
143-
assert(m1.empty());
144+
LIBCPP_ASSERT(m1.empty());
144145
}
145146
{
146147
typedef Counter<int> T;
@@ -176,14 +177,14 @@ int main()
176177

177178
M m3(std::move(m1), A());
178179
assert(m3 == m2);
179-
assert(m1.empty());
180+
LIBCPP_ASSERT(m1.empty());
180181
assert(Counter_base::gConstructed == 3*num);
181182

182183
{
183184
M m4(std::move(m2), A(5));
184185
assert(Counter_base::gConstructed == 3*num);
185186
assert(m4 == m3);
186-
assert(m2.empty());
187+
LIBCPP_ASSERT(m2.empty());
187188
}
188189
assert(Counter_base::gConstructed == 2*num);
189190
}
@@ -226,7 +227,7 @@ int main()
226227
assert(m3 == m2);
227228
assert(m3.get_allocator() == A());
228229
assert(m3.key_comp() == C(5));
229-
assert(m1.empty());
230+
LIBCPP_ASSERT(m1.empty());
230231
}
231232
{
232233
typedef std::pair<MoveOnly, MoveOnly> V;
@@ -265,6 +266,6 @@ int main()
265266
assert(m3 == m2);
266267
assert(m3.get_allocator() == A{});
267268
assert(m3.key_comp() == C(5));
268-
assert(m1.empty());
269+
LIBCPP_ASSERT(m1.empty());
269270
}
270271
}

libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <set>
1818
#include <cassert>
1919

20+
#include "test_macros.h"
2021
#include "MoveOnly.h"
2122
#include "../../../test_compare.h"
2223
#include "test_allocator.h"
@@ -60,7 +61,7 @@ int main()
6061
assert(m3 == m2);
6162
assert(m3.get_allocator() == A(7));
6263
assert(m3.key_comp() == C(5));
63-
assert(m1.empty());
64+
LIBCPP_ASSERT(m1.empty());
6465
}
6566
{
6667
typedef MoveOnly V;
@@ -98,7 +99,7 @@ int main()
9899
assert(m3 == m2);
99100
assert(m3.get_allocator() == A(5));
100101
assert(m3.key_comp() == C(5));
101-
assert(m1.empty());
102+
LIBCPP_ASSERT(m1.empty());
102103
}
103104
{
104105
typedef MoveOnly V;
@@ -136,7 +137,7 @@ int main()
136137
assert(m3 == m2);
137138
assert(m3.get_allocator() == A(5));
138139
assert(m3.key_comp() == C(5));
139-
assert(m1.empty());
140+
LIBCPP_ASSERT(m1.empty());
140141
}
141142
{
142143
typedef Counter<int> V;
@@ -170,14 +171,14 @@ int main()
170171

171172
M m3(std::move(m1), A());
172173
assert(m3 == m2);
173-
assert(m1.empty());
174+
LIBCPP_ASSERT(m1.empty());
174175
assert(Counter_base::gConstructed == 3*num);
175176

176177
{
177178
M m4(std::move(m2), A(5));
178179
assert(Counter_base::gConstructed == 3*num);
179180
assert(m4 == m3);
180-
assert(m2.empty());
181+
LIBCPP_ASSERT(m2.empty());
181182
}
182183
assert(Counter_base::gConstructed == 2*num);
183184
}

libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <set>
1818
#include <cassert>
1919

20+
#include "test_macros.h"
2021
#include "MoveOnly.h"
2122
#include "../../../test_compare.h"
2223
#include "test_allocator.h"
@@ -60,7 +61,7 @@ int main()
6061
assert(m3 == m2);
6162
assert(m3.get_allocator() == A(7));
6263
assert(m3.key_comp() == C(5));
63-
assert(m1.empty());
64+
LIBCPP_ASSERT(m1.empty());
6465
}
6566
{
6667
typedef MoveOnly V;
@@ -98,7 +99,7 @@ int main()
9899
assert(m3 == m2);
99100
assert(m3.get_allocator() == A(5));
100101
assert(m3.key_comp() == C(5));
101-
assert(m1.empty());
102+
LIBCPP_ASSERT(m1.empty());
102103
}
103104
{
104105
typedef MoveOnly V;
@@ -136,7 +137,7 @@ int main()
136137
assert(m3 == m2);
137138
assert(m3.get_allocator() == A(5));
138139
assert(m3.key_comp() == C(5));
139-
assert(m1.empty());
140+
LIBCPP_ASSERT(m1.empty());
140141
}
141142
{
142143
typedef Counter<int> V;
@@ -170,14 +171,14 @@ int main()
170171

171172
M m3(std::move(m1), A());
172173
assert(m3 == m2);
173-
assert(m1.empty());
174+
LIBCPP_ASSERT(m1.empty());
174175
assert(Counter_base::gConstructed == 6+num);
175176

176177
{
177178
M m4(std::move(m2), A(5));
178179
assert(Counter_base::gConstructed == 6+num);
179180
assert(m4 == m3);
180-
assert(m2.empty());
181+
LIBCPP_ASSERT(m2.empty());
181182
}
182183
assert(Counter_base::gConstructed == 3+num);
183184
}

libcxx/test/std/containers/sequences/deque/deque.cons/move_alloc.pass.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <deque>
1616
#include <cassert>
1717

18+
#include "test_macros.h"
1819
#include "MoveOnly.h"
1920
#include "test_allocator.h"
2021
#include "min_allocator.h"
@@ -23,62 +24,62 @@ int main()
2324
{
2425
{
2526
int ab[] = {3, 4, 2, 8, 0, 1, 44, 34, 45, 96, 80, 1, 13, 31, 45};
26-
int* an = ab + sizeof(ab)/sizeof(ab[0]);
27+
const int* an = ab + sizeof(ab)/sizeof(ab[0]);
2728
typedef test_allocator<MoveOnly> A;
2829
std::deque<MoveOnly, A> c1(A(1));
2930
for (int* p = ab; p < an; ++p)
3031
c1.push_back(MoveOnly(*p));
3132
std::deque<MoveOnly, A> c2(A(1));
3233
for (int* p = ab; p < an; ++p)
3334
c2.push_back(MoveOnly(*p));
34-
std::deque<MoveOnly, A> c3(std::move(c1), A(3));
35+
std::deque<MoveOnly, A> c3(std::move(c1), A(3)); // unequal allocator
3536
assert(c2 == c3);
3637
assert(c3.get_allocator() == A(3));
37-
assert(c1.size() != 0);
38+
LIBCPP_ASSERT(c1.size() != 0);
3839
}
3940
{
4041
int ab[] = {3, 4, 2, 8, 0, 1, 44, 34, 45, 96, 80, 1, 13, 31, 45};
41-
int* an = ab + sizeof(ab)/sizeof(ab[0]);
42+
const int* an = ab + sizeof(ab)/sizeof(ab[0]);
4243
typedef test_allocator<MoveOnly> A;
4344
std::deque<MoveOnly, A> c1(A(1));
4445
for (int* p = ab; p < an; ++p)
4546
c1.push_back(MoveOnly(*p));
4647
std::deque<MoveOnly, A> c2(A(1));
4748
for (int* p = ab; p < an; ++p)
4849
c2.push_back(MoveOnly(*p));
49-
std::deque<MoveOnly, A> c3(std::move(c1), A(1));
50+
std::deque<MoveOnly, A> c3(std::move(c1), A(1)); // equal allocator
5051
assert(c2 == c3);
5152
assert(c3.get_allocator() == A(1));
52-
assert(c1.size() == 0);
53+
LIBCPP_ASSERT(c1.size() == 0);
5354
}
5455
{
5556
int ab[] = {3, 4, 2, 8, 0, 1, 44, 34, 45, 96, 80, 1, 13, 31, 45};
56-
int* an = ab + sizeof(ab)/sizeof(ab[0]);
57+
const int* an = ab + sizeof(ab)/sizeof(ab[0]);
5758
typedef other_allocator<MoveOnly> A;
5859
std::deque<MoveOnly, A> c1(A(1));
5960
for (int* p = ab; p < an; ++p)
6061
c1.push_back(MoveOnly(*p));
6162
std::deque<MoveOnly, A> c2(A(1));
6263
for (int* p = ab; p < an; ++p)
6364
c2.push_back(MoveOnly(*p));
64-
std::deque<MoveOnly, A> c3(std::move(c1), A(3));
65+
std::deque<MoveOnly, A> c3(std::move(c1), A(3)); // unequal allocator
6566
assert(c2 == c3);
6667
assert(c3.get_allocator() == A(3));
67-
assert(c1.size() != 0);
68+
LIBCPP_ASSERT(c1.size() != 0);
6869
}
6970
{
7071
int ab[] = {3, 4, 2, 8, 0, 1, 44, 34, 45, 96, 80, 1, 13, 31, 45};
71-
int* an = ab + sizeof(ab)/sizeof(ab[0]);
72+
const int* an = ab + sizeof(ab)/sizeof(ab[0]);
7273
typedef min_allocator<MoveOnly> A;
7374
std::deque<MoveOnly, A> c1(A{});
7475
for (int* p = ab; p < an; ++p)
7576
c1.push_back(MoveOnly(*p));
7677
std::deque<MoveOnly, A> c2(A{});
7778
for (int* p = ab; p < an; ++p)
7879
c2.push_back(MoveOnly(*p));
79-
std::deque<MoveOnly, A> c3(std::move(c1), A());
80+
std::deque<MoveOnly, A> c3(std::move(c1), A()); // equal allocator
8081
assert(c2 == c3);
8182
assert(c3.get_allocator() == A());
82-
assert(c1.size() == 0);
83+
LIBCPP_ASSERT(c1.size() == 0);
8384
}
8485
}

0 commit comments

Comments
 (0)