init_size.pass.cpp revision 73d21a4f0774d3fadab98e690619a359cfb160a3
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===//
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// License. See LICENSE.TXT for details.
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===//
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// <unordered_map>
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//           class Alloc = allocator<pair<const Key, T>>>
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// class unordered_map
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// unordered_map(initializer_list<value_type> il, size_type n);
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <unordered_map>
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string>
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <cassert>
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "../../../test_compare.h"
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "../../../test_hash.h"
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "../../../test_allocator.h"
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int main()
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles){
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    {
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        typedef std::unordered_map<int, std::string,
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                   test_hash<std::hash<int> >,
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                   test_compare<std::equal_to<int> >,
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                   test_allocator<std::pair<const int, std::string> >
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                   > C;
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        typedef std::pair<int, std::string> P;
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        C c({
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(1, "one"),
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(2, "two"),
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(3, "three"),
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(4, "four"),
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(1, "four"),
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                P(2, "four"),
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            },
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            7
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)           );
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.bucket_count() == 7);
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.size() == 4);
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.at(1) == "one");
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.at(2) == "two");
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.at(3) == "three");
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.at(4) == "four");
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.hash_function() == test_hash<std::hash<int> >());
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.key_eq() == test_compare<std::equal_to<int> >());
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.get_allocator() ==
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)               (test_allocator<std::pair<const int, std::string> >()));
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(!c.empty());
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(std::distance(c.begin(), c.end()) == c.size());
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert(std::distance(c.cbegin(), c.cend()) == c.size());
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.load_factor() == (float)c.size()/c.bucket_count());
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        assert(c.max_load_factor() == 1);
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)