init_size.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <unordered_map>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//           class Alloc = allocator<pair<const Key, T>>>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// class unordered_map
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// unordered_map(initializer_list<value_type> il, size_type n);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <unordered_map>
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "../../../test_compare.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "../../../test_hash.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "../../../test_allocator.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main()
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _LIBCPP_MOVE
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        typedef std::unordered_map<int, std::string,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   test_hash<std::hash<int> >,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   test_compare<std::equal_to<int> >,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   test_allocator<std::pair<const int, std::string> >
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   > C;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        typedef std::pair<int, std::string> P;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        C c({
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(1, "one"),
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(2, "two"),
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(3, "three"),
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(4, "four"),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(1, "four"),
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                P(2, "four"),
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            },
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            7
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           );
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.bucket_count() == 7);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.size() == 4);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.at(1) == "one");
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.at(2) == "two");
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.at(3) == "three");
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.at(4) == "four");
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.hash_function() == test_hash<std::hash<int> >());
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.key_eq() == test_compare<std::equal_to<int> >());
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.get_allocator() ==
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               (test_allocator<std::pair<const int, std::string> >()));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(!c.empty());
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(std::distance(c.begin(), c.end()) == c.size());
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(std::distance(c.cbegin(), c.cend()) == c.size());
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.load_factor() == (float)c.size()/c.bucket_count());
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(c.max_load_factor() == 1);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)