summaryrefslogtreecommitdiffstats
path: root/libcxx/test
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test')
-rw-r--r--libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp28
-rw-r--r--libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp35
2 files changed, 53 insertions, 10 deletions
diff --git a/libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp
index c277e9e192d..f955135209c 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp
@@ -19,10 +19,10 @@
#include "test_macros.h"
#include "min_allocator.h"
+#include "test_allocator.h"
-int main(int, char**)
-{
- {
+void test_basic() {
+ {
typedef std::pair<const int, double> V;
std::map<int, double> m =
{
@@ -70,6 +70,28 @@ int main(int, char**)
assert(*next(m.begin()) == V(2, 1));
assert(*next(m.begin(), 2) == V(3, 1));
}
+}
+
+
+void duplicate_keys_test() {
+ typedef std::map<int, int, std::less<int>, test_allocator<std::pair<const int, int> > > Map;
+ typedef test_alloc_base AllocBase;
+ {
+ LIBCPP_ASSERT(AllocBase::alloc_count == 0);
+ Map s = {{1, 0}, {2, 0}, {3, 0}};
+ LIBCPP_ASSERT(AllocBase::alloc_count == 3);
+ s = {{4, 0}, {4, 0}, {4, 0}, {4, 0}};
+ LIBCPP_ASSERT(AllocBase::alloc_count == 1);
+ assert(s.size() == 1);
+ assert(s.begin()->first == 4);
+ }
+ LIBCPP_ASSERT(AllocBase::alloc_count == 0);
+}
+
+int main(int, char**)
+{
+ test_basic();
+ duplicate_keys_test();
return 0;
}
diff --git a/libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp
index e04f49c9993..3762446467e 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp
@@ -16,13 +16,14 @@
#include <set>
#include <cassert>
+#include <iostream>
#include "test_macros.h"
#include "min_allocator.h"
+#include "test_allocator.h"
-int main(int, char**)
-{
- {
+void basic_test() {
+ {
typedef std::set<int> C;
typedef C::value_type V;
C m = {10, 8};
@@ -36,9 +37,9 @@ int main(int, char**)
assert(*++i == V(4));
assert(*++i == V(5));
assert(*++i == V(6));
- }
- {
- typedef std::set<int, std::less<int>, min_allocator<int>> C;
+ }
+ {
+ typedef std::set<int, std::less<int>, min_allocator<int> > C;
typedef C::value_type V;
C m = {10, 8};
m = {1, 2, 3, 4, 5, 6};
@@ -51,7 +52,27 @@ int main(int, char**)
assert(*++i == V(4));
assert(*++i == V(5));
assert(*++i == V(6));
- }
+ }
+}
+
+void duplicate_keys_test() {
+ typedef std::set<int, std::less<int>, test_allocator<int> > Set;
+ typedef test_alloc_base AllocBase;
+ {
+ LIBCPP_ASSERT(AllocBase::alloc_count == 0);
+ Set s = {1, 2, 3};
+ LIBCPP_ASSERT(AllocBase::alloc_count == 3);
+ s = {4, 4, 4, 4, 4};
+ LIBCPP_ASSERT(AllocBase::alloc_count == 1);
+ assert(s.size() == 1);
+ assert(*s.begin() == 4);
+ }
+ LIBCPP_ASSERT(AllocBase::alloc_count == 0);
+}
+
+int main(int, char**) {
+ basic_test();
+ duplicate_keys_test();
return 0;
}
OpenPOWER on IntegriCloud