1// { dg-options "-std=gnu++0x" } 2 3// Copyright (C) 2010 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10// 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15// 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20// range insert 21 22#include <string> 23#include <iterator> 24#include <algorithm> 25#include <unordered_map> 26#include <testsuite_hooks.h> 27 28void test01() 29{ 30 bool test __attribute__((unused)) = true; 31 32 typedef std::unordered_map<std::string, int> Map; 33 typedef std::pair<const std::string, int> Pair; 34 35 Map m; 36 VERIFY(m.empty()); 37 38 Pair A[5] = 39 { 40 Pair("red", 5), 41 Pair("green", 9), 42 Pair("blue", 3), 43 Pair("cyan", 8), 44 Pair("magenta", 7) 45 }; 46 47 m.insert(A+0, A+5); 48 VERIFY(m.size() == 5); 49 VERIFY(std::distance(m.begin(), m.end()) == 5); 50 51 VERIFY(m["red"] == 5); 52 VERIFY(m["green"] == 9); 53 VERIFY(m["blue"] == 3); 54 VERIFY(m["cyan"] == 8); 55 VERIFY(m["magenta"] == 7); 56} 57 58void test02() 59{ 60 bool test __attribute__((unused)) = true; 61 62 typedef std::unordered_map<std::string, int> Map; 63 typedef std::pair<const std::string, int> Pair; 64 65 Map m; 66 VERIFY(m.empty()); 67 68 Pair A[9] = 69 { 70 Pair("red", 5), 71 Pair("green", 9), 72 Pair("red", 19), 73 Pair("blue", 3), 74 Pair("blue", 60), 75 Pair("cyan", 8), 76 Pair("magenta", 7), 77 Pair("blue", 99), 78 Pair("green", 33) 79 }; 80 81 m.insert(A+0, A+9); 82 VERIFY(m.size() == 5); 83 VERIFY(std::distance(m.begin(), m.end()) == 5); 84 85 VERIFY(m["red"] == 5); 86 VERIFY(m["green"] == 9); 87 VERIFY(m["blue"] == 3); 88 VERIFY(m["cyan"] == 8); 89 VERIFY(m["magenta"] == 7); 90} 91 92int main() 93{ 94 test01(); 95 test02(); 96 return 0; 97} 98