Part 8 of LWG Issue 2210' unordered_set and unordered multiset; this got missed when I went on vacation
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191705 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -61,5 +61,49 @@ int main()
|
||||
assert(c.load_factor() == 0);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef NotConstructible T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
|
||||
A a(43);
|
||||
C c(3, a);
|
||||
assert(c.bucket_count() == 3);
|
||||
assert(c.hash_function() == HF());
|
||||
assert(c.key_eq() == Comp ());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
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);
|
||||
}
|
||||
{
|
||||
typedef NotConstructible T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
|
||||
HF hf(42);
|
||||
A a(43);
|
||||
C c(4, hf, a);
|
||||
assert(c.bucket_count() == 4);
|
||||
assert(c.hash_function() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp ());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
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);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
@@ -88,6 +88,76 @@ int main()
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
|
||||
A a(42);
|
||||
C c({
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
}, 12, a);
|
||||
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == HF());
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
|
||||
A a(42);
|
||||
HF hf(43);
|
||||
C c({
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
}, 12, hf, a);
|
||||
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
|
||||
}
|
||||
|
@@ -93,5 +93,75 @@ int main()
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
T arr[] =
|
||||
{
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
};
|
||||
A a(42);
|
||||
C c(input_iterator<T*>(arr), input_iterator<T*>(arr + sizeof(arr)/sizeof(arr[0])), 12, a);
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == HF());
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_multiset<T, HF, Comp, A> C;
|
||||
T arr[] =
|
||||
{
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
};
|
||||
HF hf(43);
|
||||
A a(42);
|
||||
C c(input_iterator<T*>(arr), input_iterator<T*>(arr + sizeof(arr)/sizeof(arr[0])), 16, hf, a);
|
||||
assert(c.bucket_count() >= 16);
|
||||
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() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
@@ -61,5 +61,49 @@ int main()
|
||||
assert(c.load_factor() == 0);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef NotConstructible T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
|
||||
A a(43);
|
||||
C c(3, a);
|
||||
assert(c.bucket_count() == 3);
|
||||
assert(c.hash_function() == HF());
|
||||
assert(c.key_eq() == Comp ());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
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);
|
||||
}
|
||||
{
|
||||
typedef NotConstructible T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
|
||||
HF hf(42);
|
||||
A a(43);
|
||||
C c(4, hf, a);
|
||||
assert(c.bucket_count() == 4);
|
||||
assert(c.hash_function() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp ());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
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);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
@@ -88,6 +88,76 @@ int main()
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
|
||||
A a(42);
|
||||
C c({
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
}, 12, a);
|
||||
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == HF());
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
|
||||
A a(42);
|
||||
HF hf(43);
|
||||
C c({
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
}, 12, hf, a);
|
||||
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
|
||||
}
|
||||
|
@@ -93,5 +93,76 @@ int main()
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
T arr[] =
|
||||
{
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
};
|
||||
A a(42);
|
||||
C c(input_iterator<T*>(arr), input_iterator<T*>(arr + sizeof(arr)/sizeof(arr[0])), 12, a);
|
||||
assert(c.bucket_count() >= 12);
|
||||
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() == HF());
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
{
|
||||
typedef int T;
|
||||
typedef test_hash<std::hash<T>> HF;
|
||||
typedef test_compare<std::equal_to<T>> Comp;
|
||||
typedef test_allocator<T> A;
|
||||
typedef std::unordered_set<T, HF, Comp, A> C;
|
||||
T arr[] =
|
||||
{
|
||||
T(1),
|
||||
T(2),
|
||||
T(3),
|
||||
T(4),
|
||||
T(1),
|
||||
T(2)
|
||||
};
|
||||
HF hf(43);
|
||||
A a(42);
|
||||
C c(input_iterator<T*>(arr), input_iterator<T*>(arr + sizeof(arr)/sizeof(arr[0])), 16, hf, a);
|
||||
assert(c.bucket_count() >= 16);
|
||||
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() == hf);
|
||||
assert(!(c.hash_function() == HF()));
|
||||
assert(c.key_eq() == Comp());
|
||||
assert(c.get_allocator() == a);
|
||||
assert(!(c.get_allocator() == A()));
|
||||
assert(!c.empty());
|
||||
assert(std::distance(c.begin(), c.end()) == c.size());
|
||||
assert(std::distance(c.cbegin(), c.cend()) == c.size());
|
||||
assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
|
||||
assert(c.max_load_factor() == 1);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user