init_size_hash_equal.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
16fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//===----------------------------------------------------------------------===//
26fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//
36fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//                     The LLVM Compiler Infrastructure
46fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//
56fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// This file is distributed under the University of Illinois Open Source
66fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// License. See LICENSE.TXT for details.
76fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//
86fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//===----------------------------------------------------------------------===//
96fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// <unordered_map>
116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//           class Alloc = allocator<pair<const Key, T>>>
146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// class unordered_map
156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org// unordered_map(initializer_list<value_type> il, size_type n,
176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org//               const hasher& hf, const key_equal& eql);
186fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include <unordered_map>
206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include <string>
216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include <cassert>
226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "../../../test_compare.h"
246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "../../../test_hash.h"
256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "../../../test_allocator.h"
266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgint main()
286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org{
296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#ifdef _LIBCPP_MOVE
306fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org    {
316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        typedef std::unordered_map<int, std::string,
326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                                   test_hash<std::hash<int> >,
336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                                   test_compare<std::equal_to<int> >,
346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                                   test_allocator<std::pair<const int, std::string> >
356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                                   > C;
366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        typedef std::pair<int, std::string> P;
376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        C c({
386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(1, "one"),
396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(2, "two"),
406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(3, "three"),
416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(4, "four"),
426fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(1, "four"),
436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                P(2, "four"),
446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            },
4510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            7,
466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            test_hash<std::hash<int> >(8),
476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            test_compare<std::equal_to<int> >(9)
486fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org           );
496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.bucket_count() == 7);
506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.size() == 4);
516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.at(1) == "one");
526fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.at(2) == "two");
536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.at(3) == "three");
546fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.at(4) == "four");
556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.hash_function() == test_hash<std::hash<int> >(8));
566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
576fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.get_allocator() ==
58dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org               (test_allocator<std::pair<const int, std::string> >()));
59dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org        assert(!c.empty());
606fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(std::distance(c.begin(), c.end()) == c.size());
616fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(std::distance(c.cbegin(), c.cend()) == c.size());
626fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.load_factor() == (float)c.size()/c.bucket_count());
636fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org        assert(c.max_load_factor() == 1);
646fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org    }
656fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#endif
666fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org}
676fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org