1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <unordered_map>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//           class Alloc = allocator<pair<const Key, T>>>
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class unordered_multimap
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// unordered_multimap& operator=(const unordered_multimap& u);
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <unordered_map>
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <string>
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
21f836d531b4146465342939fe32ae47d157ee07b2Howard Hinnant#include <cfloat>
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "../../../test_compare.h"
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "../../../test_hash.h"
251b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h"
26061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef test_allocator<std::pair<const int, std::string> > A;
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_multimap<int, std::string,
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   test_hash<std::hash<int> >,
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   test_compare<std::equal_to<int> >,
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   A
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   > C;
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::pair<int, std::string> P;
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1, "one"),
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2, "two"),
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3, "three"),
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4, "four"),
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1, "four"),
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2, "four"),
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c0(a, a + sizeof(a)/sizeof(a[0]),
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            7,
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_hash<std::hash<int> >(8),
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_compare<std::equal_to<int> >(9),
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            A(10)
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant           );
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c(a, a + 2,
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            7,
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_hash<std::hash<int> >(2),
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_compare<std::equal_to<int> >(3),
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            A(4)
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant           );
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c = c0;
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() == 7);
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.size() == 6);
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::const_iterator i = c.cbegin();
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 1);
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "one");
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 1);
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 2);
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "two");
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 2);
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 3);
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "three");
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 4);
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.hash_function() == test_hash<std::hash<int> >(8));
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.get_allocator() == A(4));
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(!c.empty());
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(c.begin(), c.end()) == c.size());
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(c.cbegin(), c.cend()) == c.size());
86f836d531b4146465342939fe32ae47d157ee07b2Howard Hinnant        assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.max_load_factor() == 1);
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
90ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        typedef std::unordered_multimap<int, std::string> C;
91ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        typedef std::pair<const int, std::string> P;
92ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        const P a[] =
93ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        {
94ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(1, "one"),
95ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(2, "two"),
96ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(3, "three"),
97ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(4, "four"),
98ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(1, "four"),
99ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow            P(2, "four"),
100ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        };
101ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        C c(a, a+sizeof(a)/sizeof(a[0]));
102ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        C *p = &c;
103ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        c = *p;
104ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        assert(c.size() == 6);
105ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow        assert(std::is_permutation(c.begin(), c.end(), a));
106ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow    }
107ebfc50ee89c8e47151bf6abe999fb7def08c908bMarshall Clow    {
108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef other_allocator<std::pair<const int, std::string> > A;
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_multimap<int, std::string,
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   test_hash<std::hash<int> >,
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   test_compare<std::equal_to<int> >,
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   A
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                                   > C;
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::pair<int, std::string> P;
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1, "one"),
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2, "two"),
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3, "three"),
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4, "four"),
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1, "four"),
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2, "four"),
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c0(a, a + sizeof(a)/sizeof(a[0]),
125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            7,
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_hash<std::hash<int> >(8),
127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_compare<std::equal_to<int> >(9),
128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            A(10)
129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant           );
130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c(a, a + 2,
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            7,
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_hash<std::hash<int> >(2),
133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            test_compare<std::equal_to<int> >(3),
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            A(4)
135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant           );
136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c = c0;
137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() >= 7);
138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.size() == 6);
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::const_iterator i = c.cbegin();
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 1);
141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "one");
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 1);
144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 2);
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "two");
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 2);
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 3);
153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "three");
154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->first == 4);
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(i->second == "four");
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.hash_function() == test_hash<std::hash<int> >(8));
158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.get_allocator() == A(10));
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(!c.empty());
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(c.begin(), c.end()) == c.size());
162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(c.cbegin(), c.cend()) == c.size());
163f836d531b4146465342939fe32ae47d157ee07b2Howard Hinnant        assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.max_load_factor() == 1);
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
1667a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant#if __cplusplus >= 201103L
1677a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant    {
1687a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        typedef min_allocator<std::pair<const int, std::string> > A;
1697a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        typedef std::unordered_multimap<int, std::string,
1707a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant                                   test_hash<std::hash<int> >,
1717a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant                                   test_compare<std::equal_to<int> >,
1727a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant                                   A
1737a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant                                   > C;
1747a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        typedef std::pair<int, std::string> P;
1757a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        P a[] =
1767a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        {
1777a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(1, "one"),
1787a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(2, "two"),
1797a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(3, "three"),
1807a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(4, "four"),
1817a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(1, "four"),
1827a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            P(2, "four"),
1837a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        };
1847a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        C c0(a, a + sizeof(a)/sizeof(a[0]),
1857a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            7,
1867a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            test_hash<std::hash<int> >(8),
1877a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            test_compare<std::equal_to<int> >(9),
1887a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            A()
1897a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant           );
1907a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        C c(a, a + 2,
1917a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            7,
1927a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            test_hash<std::hash<int> >(2),
1937a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            test_compare<std::equal_to<int> >(3),
1947a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant            A()
1957a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant           );
1967a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        c = c0;
1977a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.bucket_count() == 7);
1987a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.size() == 6);
1997a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        C::const_iterator i = c.cbegin();
2007a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 1);
2017a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "one");
2027a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        ++i;
2037a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 1);
2047a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "four");
2057a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        ++i;
2067a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 2);
2077a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "two");
2087a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        ++i;
2097a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 2);
2107a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "four");
2117a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        ++i;
2127a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 3);
2137a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "three");
2147a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        ++i;
2157a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->first == 4);
2167a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(i->second == "four");
2177a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.hash_function() == test_hash<std::hash<int> >(8));
2187a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
2197a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.get_allocator() == A());
2207a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(!c.empty());
2217a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(std::distance(c.begin(), c.end()) == c.size());
2227a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(std::distance(c.cbegin(), c.cend()) == c.size());
2237a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON);
2247a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant        assert(c.max_load_factor() == 1);
2257a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant    }
2267a6b7cedcb3359ad7d77e355b02ab982d9d2b25bHoward Hinnant#endif
227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
228