diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp @@ -0,0 +1,72 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// unordered_multiset(initializer_list init, size_type n, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + C c({ + 1, + 2, + 3, + 4, + 1, + 2 + }, + 7, + alloc); + + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 6); + assert(c.count(1) == 2); + assert(c.count(2) == 2); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// unordered_multiset(initializer_list init, size_type n, +// const hasher& hash, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + C c({ + 1, + 2, + 3, + 4, + 1, + 2 + }, + 7, + test_hash(5), + alloc); + + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 6); + assert(c.count(1) == 2); + assert(c.count(2) == 2); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter.pass.cpp rename from libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range.pass.cpp rename to libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size.pass.cpp rename from libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size.pass.cpp rename to libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// template +// unordered_multiset(InputIterator first, InputIterator last, size_type n, +// const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + int a[] = + { + 1, + 2, + 3, + 4, + 1, + 2 + }; + C c(cpp17_input_iterator(a), cpp17_input_iterator(a + sizeof(a)/sizeof(a[0])), + 7, + alloc + ); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 6); + assert(c.count(1) == 2); + assert(c.count(2) == 2); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash.pass.cpp rename from libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash.pass.cpp rename to libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// template +// unordered_multiset(InputIterator first, InputIterator last, size_type n, +// const hasher& hash, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + int a[] = + { + 1, + 2, + 3, + 4, + 1, + 2 + }; + C c(cpp17_input_iterator(a), cpp17_input_iterator(a + sizeof(a)/sizeof(a[0])), + 7, + test_hash(5), + alloc + ); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 6); + assert(c.count(1) == 2); + assert(c.count(2) == 2); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_equal.pass.cpp rename from libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal.pass.cpp rename to libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_equal.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_equal_allocator.pass.cpp rename from libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal_allocator.pass.cpp rename to libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_equal_allocator.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// unordered_multiset(size_type n, const allocator_type& alloc); + +#include +#include +#include + +#include "test_macros.h" +#include "../../../NotConstructible.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + C c(7, alloc); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(c.size() == 0); + assert(c.empty()); + assert(std::distance(c.begin(), c.end()) == 0); + assert(c.load_factor() == 0); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_multiset + +// unordered_multiset(size_type n, const hasher& hash, const allocator_type& alloc); + +#include +#include +#include + +#include "test_macros.h" +#include "../../../NotConstructible.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_multiset, + test_equal_to, + Allocator> C; + C c(7, test_hash(5), alloc); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(c.size() == 0); + assert(c.empty()); + assert(std::distance(c.begin(), c.end()) == 0); + assert(c.load_factor() == 0); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp @@ -0,0 +1,72 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// unordered_set(initializer_list init, size_type n, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + C c({ + 1, + 2, + 3, + 4, + 1, + 2 + }, + 7, + alloc); + + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 4); + assert(c.count(1) == 1); + assert(c.count(2) == 1); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// unordered_set(initializer_list init, size_type n, +// const hasher& hash, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + C c({ + 1, + 2, + 3, + 4, + 1, + 2 + }, + 7, + test_hash(5), + alloc); + + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 4); + assert(c.count(1) == 1); + assert(c.count(2) == 1); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter.pass.cpp rename from libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range.pass.cpp rename to libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size.pass.cpp rename from libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size.pass.cpp rename to libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// template +// unordered_set(InputIterator first, InputIterator last, size_type n, +// const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + int a[] = + { + 1, + 2, + 3, + 4, + 1, + 2 + }; + C c(cpp17_input_iterator(a), cpp17_input_iterator(a + sizeof(a)/sizeof(a[0])), + 7, + alloc + ); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 4); + assert(c.count(1) == 1); + assert(c.count(2) == 1); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash.pass.cpp rename from libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash.pass.cpp rename to libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// template +// unordered_set(InputIterator first, InputIterator last, size_type n, +// const hasher& hash, const allocator_type& alloc); + +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + int a[] = + { + 1, + 2, + 3, + 4, + 1, + 2 + }; + C c(cpp17_input_iterator(a), cpp17_input_iterator(a + sizeof(a)/sizeof(a[0])), + 7, + test_hash(5), + alloc + ); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.size() == 4); + assert(c.count(1) == 1); + assert(c.count(2) == 1); + assert(c.count(3) == 1); + assert(c.count(4) == 1); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(!c.empty()); + assert(static_cast(std::distance(c.begin(), c.end())) == c.size()); + assert(std::fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_equal.pass.cpp rename from libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal.pass.cpp rename to libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_equal.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_equal_allocator.pass.cpp rename from libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal_allocator.pass.cpp rename to libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_equal_allocator.pass.cpp diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// unordered_set(size_type n, const allocator_type& alloc); + +#include +#include +#include + +#include "test_macros.h" +#include "../../../NotConstructible.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + C c(7, alloc); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.hash_function() == test_hash()); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(c.size() == 0); + assert(c.empty()); + assert(std::distance(c.begin(), c.end()) == 0); + assert(c.load_factor() == 0); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +} diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11 + +// + +// template , class Pred = equal_to, +// class Alloc = allocator> +// class unordered_set + +// unordered_set(size_type n, const hasher& hash, const allocator_type& alloc); + +#include +#include +#include + +#include "test_macros.h" +#include "../../../NotConstructible.h" +#include "../../../test_compare.h" +#include "../../../test_hash.h" +#include "test_allocator.h" +#include "min_allocator.h" + +template +void test(const Allocator& alloc) +{ + typedef std::unordered_set, + test_equal_to, + Allocator> C; + C c(7, test_hash(5), alloc); + LIBCPP_ASSERT(c.bucket_count() == 7); + assert(c.hash_function() == test_hash(5)); + assert(c.key_eq() == test_equal_to()); + assert(c.get_allocator() == alloc); + assert(c.size() == 0); + assert(c.empty()); + assert(std::distance(c.begin(), c.end()) == 0); + assert(c.load_factor() == 0); + assert(c.max_load_factor() == 1); +} + +int main(int, char**) +{ + test(test_allocator(10)); + test(min_allocator()); + test(explicit_allocator()); + + return 0; +}