forked from OSchip/llvm-project
LWG#2156 loosened the requirements on unordered containers 'rehash' calls. Add tests to make sure we meet these requirements. Since we met the stricter ones, no code change needed to meet the looser ones.
llvm-svn: 253223
This commit is contained in:
parent
a770379524
commit
a9197737f9
|
@ -21,6 +21,12 @@
|
|||
|
||||
#include "min_allocator.h"
|
||||
|
||||
template <class C>
|
||||
void rehash_postcondition(const C& c, size_t n)
|
||||
{
|
||||
assert(c.bucket_count() >= c.size() / c.max_load_factor() && c.bucket_count() >= n);
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void test(const C& c)
|
||||
{
|
||||
|
@ -49,13 +55,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 5);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 5);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
@ -77,13 +86,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 5);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 5);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
|
||||
#include "min_allocator.h"
|
||||
|
||||
template <class C>
|
||||
void rehash_postcondition(const C& c, size_t n)
|
||||
{
|
||||
assert(c.bucket_count() >= c.size() / c.max_load_factor() && c.bucket_count() >= n);
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void test(const C& c)
|
||||
{
|
||||
|
@ -77,13 +83,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 7);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 7);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
@ -105,13 +114,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 7);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 7);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
|
||||
#include "min_allocator.h"
|
||||
|
||||
template <class C>
|
||||
void rehash_postcondition(const C& c, size_t n)
|
||||
{
|
||||
assert(c.bucket_count() >= c.size() / c.max_load_factor() && c.bucket_count() >= n);
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void test(const C& c)
|
||||
{
|
||||
|
@ -48,13 +54,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 7);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 7);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
@ -76,13 +85,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 7);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 7);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
|
||||
#include "min_allocator.h"
|
||||
|
||||
template <class C>
|
||||
void rehash_postcondition(const C& c, size_t n)
|
||||
{
|
||||
assert(c.bucket_count() >= c.size() / c.max_load_factor() && c.bucket_count() >= n);
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void test(const C& c)
|
||||
{
|
||||
|
@ -48,13 +54,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 5);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 5);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
@ -76,13 +85,16 @@ int main()
|
|||
test(c);
|
||||
assert(c.bucket_count() >= 5);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 5);
|
||||
test(c);
|
||||
c.max_load_factor(2);
|
||||
c.rehash(3);
|
||||
rehash_postcondition(c, 3);
|
||||
assert(c.bucket_count() == 3);
|
||||
test(c);
|
||||
c.rehash(31);
|
||||
rehash_postcondition(c, 31);
|
||||
assert(c.bucket_count() == 31);
|
||||
test(c);
|
||||
}
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2119">2119</a></td><td>Missing <tt>hash</tt> specializations for extended integer types</td><td>Kona</td><td></td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2127">2127</a></td><td>Move-construction with <tt>raw_storage_iterator</tt></td><td>Kona</td><td>Complete</td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2133">2133</a></td><td>Attitude to overloaded comma for iterators</td><td>Kona</td><td>Complete</td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2156">2156</a></td><td>Unordered containers' <tt>reserve(n)</tt> reserves for <tt>n-1</tt> elements</td><td>Kona</td><td></td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2156">2156</a></td><td>Unordered containers' <tt>reserve(n)</tt> reserves for <tt>n-1</tt> elements</td><td>Kona</td><td>Complete</td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2218">2218</a></td><td>Unclear how containers use <tt>allocator_traits::construct()</tt></td><td>Kona</td><td></td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2219">2219</a></td><td><tt><i>INVOKE</i></tt>-ing a pointer to member with a <tt>reference_wrapper</tt> as the object expression</td><td>Kona</td><td></td></tr>
|
||||
<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2224">2224</a></td><td>Ambiguous status of access to non-live objects</td><td>Kona</td><td>Complete</td></tr>
|
||||
|
|
Loading…
Reference in New Issue