init.pass.cpp revision 7a6b7cedcb3359ad7d77e355b02ab982d9d2b25b
15976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org//===----------------------------------------------------------------------===// 25976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// 35976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// The LLVM Compiler Infrastructure 45976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// 55976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// This file is dual licensed under the MIT and the University of Illinois Open 65976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// Source Licenses. See LICENSE.TXT for details. 75976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// 85976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org//===----------------------------------------------------------------------===// 95976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// <unordered_map> 115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// class Alloc = allocator<pair<const Key, T>>> 145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// class unordered_map 155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// unordered_map(initializer_list<value_type> il); 175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <unordered_map> 195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <string> 205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <cassert> 215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <cfloat> 225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "../../../test_compare.h" 245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "../../../test_hash.h" 255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "../../../test_allocator.h" 265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "../../../min_allocator.h" 275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgint main() 295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org{ 305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org { 325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org typedef std::unordered_map<int, std::string, 335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org test_hash<std::hash<int> >, 345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org test_compare<std::equal_to<int> >, 355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org test_allocator<std::pair<const int, std::string> > 365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org > C; 375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org typedef std::pair<int, std::string> P; 385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org C c = { 395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(1, "one"), 405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(2, "two"), 415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(3, "three"), 425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(4, "four"), 435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(1, "four"), 445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org P(2, "four"), 455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org }; 465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.bucket_count() >= 5); 475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.size() == 4); 485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.at(1) == "one"); 495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.at(2) == "two"); 505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.at(3) == "three"); 515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.at(4) == "four"); 525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.hash_function() == test_hash<std::hash<int> >()); 535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.key_eq() == test_compare<std::equal_to<int> >()); 545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.get_allocator() == 555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org (test_allocator<std::pair<const int, std::string> >())); 565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(!c.empty()); 575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(std::distance(c.begin(), c.end()) == c.size()); 585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(std::distance(c.cbegin(), c.cend()) == c.size()); 595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); 605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org assert(c.max_load_factor() == 1); 615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#if __cplusplus >= 201103L 635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org { 64 typedef std::unordered_map<int, std::string, 65 test_hash<std::hash<int> >, 66 test_compare<std::equal_to<int> >, 67 min_allocator<std::pair<const int, std::string> > 68 > C; 69 typedef std::pair<int, std::string> P; 70 C c = { 71 P(1, "one"), 72 P(2, "two"), 73 P(3, "three"), 74 P(4, "four"), 75 P(1, "four"), 76 P(2, "four"), 77 }; 78 assert(c.bucket_count() >= 5); 79 assert(c.size() == 4); 80 assert(c.at(1) == "one"); 81 assert(c.at(2) == "two"); 82 assert(c.at(3) == "three"); 83 assert(c.at(4) == "four"); 84 assert(c.hash_function() == test_hash<std::hash<int> >()); 85 assert(c.key_eq() == test_compare<std::equal_to<int> >()); 86 assert(c.get_allocator() == 87 (min_allocator<std::pair<const int, std::string> >())); 88 assert(!c.empty()); 89 assert(std::distance(c.begin(), c.end()) == c.size()); 90 assert(std::distance(c.cbegin(), c.cend()) == c.size()); 91 assert(fabs(c.load_factor() - (float)c.size()/c.bucket_count()) < FLT_EPSILON); 92 assert(c.max_load_factor() == 1); 93 } 94#endif 95#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 96} 97