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)