From 0a55d17bcd45a7af9d6db9786ff22c563c971bf6 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Wed, 11 Sep 2013 00:06:45 +0000 Subject: LWG Issue #2210 Part 4 - map/multimap llvm-svn: 190454 --- .../multiset.cons/initializer_list.pass.cpp | 18 ++++++++++++ .../multiset.cons/iter_iter_alloc.pass.cpp | 34 ++++++++++++++++++++++ .../initializer_list_compare_alloc.pass.cpp | 22 ++++++++++++++ .../set/set.cons/iter_iter_alloc.pass.cpp | 32 ++++++++++++++++++++ 4 files changed, 106 insertions(+) (limited to 'libcxx/test') diff --git a/libcxx/test/containers/associative/multiset/multiset.cons/initializer_list.pass.cpp b/libcxx/test/containers/associative/multiset/multiset.cons/initializer_list.pass.cpp index 9e3186d9233..60e6940e723 100644 --- a/libcxx/test/containers/associative/multiset/multiset.cons/initializer_list.pass.cpp +++ b/libcxx/test/containers/associative/multiset/multiset.cons/initializer_list.pass.cpp @@ -51,5 +51,23 @@ int main() assert(*++i == V(5)); assert(*++i == V(6)); } +#if _LIBCPP_STD_VER > 11 + { + typedef std::multiset, min_allocator> C; + typedef C::value_type V; + min_allocator a; + C m ({1, 2, 3, 4, 5, 6}, a); + assert(m.size() == 6); + assert(distance(m.begin(), m.end()) == 6); + C::const_iterator i = m.cbegin(); + assert(*i == V(1)); + assert(*++i == V(2)); + assert(*++i == V(3)); + assert(*++i == V(4)); + assert(*++i == V(5)); + assert(*++i == V(6)); + assert(m.get_allocator() == a); + } +#endif #endif } diff --git a/libcxx/test/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp b/libcxx/test/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp index a83e2ae581d..b6d25d6ec5f 100644 --- a/libcxx/test/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp +++ b/libcxx/test/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp @@ -55,4 +55,38 @@ int main() assert(*next(m.begin(), 6) == 3); assert(*next(m.begin(), 7) == 3); assert(*next(m.begin(), 8) == 3); +#if _LIBCPP_STD_VER > 11 + { + typedef int V; + V ar[] = + { + 1, + 1, + 1, + 2, + 2, + 2, + 3, + 3, + 3 + }; + typedef test_allocator A; + typedef test_compare > C; + A a; + std::multiset m(ar, ar+sizeof(ar)/sizeof(ar[0]), a); + + assert(m.size() == 9); + assert(distance(m.begin(), m.end()) == 9); + assert(*next(m.begin(), 0) == 1); + assert(*next(m.begin(), 1) == 1); + assert(*next(m.begin(), 2) == 1); + assert(*next(m.begin(), 3) == 2); + assert(*next(m.begin(), 4) == 2); + assert(*next(m.begin(), 5) == 2); + assert(*next(m.begin(), 6) == 3); + assert(*next(m.begin(), 7) == 3); + assert(*next(m.begin(), 8) == 3); + assert(m.get_allocator() == a); + } +#endif } diff --git a/libcxx/test/containers/associative/set/set.cons/initializer_list_compare_alloc.pass.cpp b/libcxx/test/containers/associative/set/set.cons/initializer_list_compare_alloc.pass.cpp index c180915aec8..d4021acfc30 100644 --- a/libcxx/test/containers/associative/set/set.cons/initializer_list_compare_alloc.pass.cpp +++ b/libcxx/test/containers/associative/set/set.cons/initializer_list_compare_alloc.pass.cpp @@ -12,6 +12,7 @@ // class set // set(initializer_list il, const key_compare& comp, const allocator_type& a); +// set(initializer_list il, const allocator_type& a); #include #include @@ -21,6 +22,7 @@ int main() { #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + { typedef test_compare > Cmp; typedef test_allocator A; typedef std::set C; @@ -37,5 +39,25 @@ int main() assert(*++i == V(6)); assert(m.key_comp() == Cmp(10)); assert(m.get_allocator() == A(4)); + } +#if _LIBCPP_STD_VER > 11 + { + typedef test_compare > Cmp; + typedef test_allocator A; + typedef std::set C; + typedef C::value_type V; + C m({1, 2, 3, 4, 5, 6}, A(4)); + assert(m.size() == 6); + assert(distance(m.begin(), m.end()) == 6); + C::const_iterator i = m.cbegin(); + assert(*i == V(1)); + assert(*++i == V(2)); + assert(*++i == V(3)); + assert(*++i == V(4)); + assert(*++i == V(5)); + assert(*++i == V(6)); + assert(m.get_allocator() == A(4)); + } +#endif #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS } diff --git a/libcxx/test/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp b/libcxx/test/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp index 9b4992bdb09..1ae4634a5b7 100644 --- a/libcxx/test/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp +++ b/libcxx/test/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp @@ -14,6 +14,10 @@ // template // set(InputIterator first, InputIterator last, // const value_compare& comp, const allocator_type& a); +// +// template +// set(InputIterator first, InputIterator last, +// const allocator_type& a); #include #include @@ -49,4 +53,32 @@ int main() assert(*m.begin() == 1); assert(*next(m.begin()) == 2); assert(*next(m.begin(), 2) == 3); +#if _LIBCPP_STD_VER > 11 + { + typedef int V; + V ar[] = + { + 1, + 1, + 1, + 2, + 2, + 2, + 3, + 3, + 3 + }; + typedef test_allocator A; + typedef test_compare > C; + A a(7); + std::set m(ar, ar+sizeof(ar)/sizeof(ar[0]), a); + + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == 1); + assert(*next(m.begin()) == 2); + assert(*next(m.begin(), 2) == 3); + assert(m.get_allocator() == a); + } +#endif } -- cgit v1.2.3