[committed] more unordered associative container test cases
Matt Austern
austern@apple.com
Sat Feb 19 09:05:00 GMT 2005
Index: testsuite/tr1/6_containers/unordered/insert/array_syntax.cc
===================================================================
RCS file:
/cvs/gcc/gcc/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/
array_syntax.cc,v
retrieving revision 1.1
diff -p -r1.1 array_syntax.cc
*** testsuite/tr1/6_containers/unordered/insert/array_syntax.cc 18 Feb
2005 07:50:08 -0000 1.1
--- testsuite/tr1/6_containers/unordered/insert/array_syntax.cc 18 Feb
2005 23:05:55 -0000
*************** void test01()
*** 44,50 ****
VERIFY(m.begin()->second == 17);
VERIFY(m["red"] == 17);
! m["blue"] == 9;
VERIFY(m.size() == 2);
VERIFY(m["blue"] == 9);
--- 44,50 ----
VERIFY(m.begin()->second == 17);
VERIFY(m["red"] == 17);
! m["blue"] = 9;
VERIFY(m.size() == 2);
VERIFY(m["blue"] == 9);
Index: testsuite/tr1/6_containers/unordered/insert/map_range.cc
===================================================================
RCS file: testsuite/tr1/6_containers/unordered/insert/map_range.cc
diff -N testsuite/tr1/6_containers/unordered/insert/map_range.cc
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/tr1/6_containers/unordered/insert/map_range.cc 18 Feb
2005 23:05:55 -0000
***************
*** 0 ****
--- 1,99 ----
+ // { dg-do run }
+
+ // 2005-2-17 Matt Austern <austern@apple.com>
+ //
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307,
+ // USA.
+
+ // 6.3.4.4 unordered_map
+ // range insert
+
+ #include <string>
+ #include <iterator>
+ #include <algorithm>
+ #include <tr1/unordered_map>
+ #include "testsuite_hooks.h"
+
+ bool test __attribute__((unused)) = true;
+
+ void test01()
+ {
+ typedef std::tr1::unordered_map<std::string, int> Map;
+ typedef std::pair<const std::string, int> Pair;
+
+ Map m;
+ VERIFY(m.empty());
+
+ Pair A[5] =
+ {
+ Pair("red", 5),
+ Pair("green", 9),
+ Pair("blue", 3),
+ Pair("cyan", 8),
+ Pair("magenta", 7)
+ };
+
+ m.insert(A+0, A+5);
+ VERIFY(m.size() == 5);
+ VERIFY(std::distance(m.begin(), m.end()) == 5);
+
+ VERIFY(m["red"] == 5);
+ VERIFY(m["green"] == 9);
+ VERIFY(m["blue"] == 3);
+ VERIFY(m["cyan"] == 8);
+ VERIFY(m["magenta"] == 7);
+ }
+
+ void test02()
+ {
+ typedef std::tr1::unordered_map<std::string, int> Map;
+ typedef std::pair<const std::string, int> Pair;
+
+ Map m;
+ VERIFY(m.empty());
+
+ Pair A[9] =
+ {
+ Pair("red", 5),
+ Pair("green", 9),
+ Pair("red", 19),
+ Pair("blue", 3),
+ Pair("blue", 60),
+ Pair("cyan", 8),
+ Pair("magenta", 7),
+ Pair("blue", 99),
+ Pair("green", 33)
+ };
+
+ m.insert(A+0, A+9);
+ VERIFY(m.size() == 5);
+ VERIFY(std::distance(m.begin(), m.end()) == 5);
+
+ VERIFY(m["red"] == 5);
+ VERIFY(m["green"] == 9);
+ VERIFY(m["blue"] == 3);
+ VERIFY(m["cyan"] == 8);
+ VERIFY(m["magenta"] == 7);
+ }
+
+ int main()
+ {
+ test01();
+ test02();
+ return 0;
+ }
Index: testsuite/tr1/6_containers/unordered/insert/multimap_range.cc
===================================================================
RCS file: testsuite/tr1/6_containers/unordered/insert/multimap_range.cc
diff -N testsuite/tr1/6_containers/unordered/insert/multimap_range.cc
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/tr1/6_containers/unordered/insert/multimap_range.cc 18
Feb 2005 23:05:55 -0000
***************
*** 0 ****
--- 1,93 ----
+ // { dg-do run }
+
+ // 2005-2-17 Matt Austern <austern@apple.com>
+ //
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307,
+ // USA.
+
+ // 6.3.4.6 unordered_multimap
+ // range insert
+
+ #include <string>
+ #include <iterator>
+ #include <algorithm>
+ #include <tr1/unordered_map>
+ #include "testsuite_hooks.h"
+
+ bool test __attribute__((unused)) = true;
+
+ void test01()
+ {
+ typedef std::tr1::unordered_multimap<std::string, int> Map;
+ typedef std::pair<const std::string, int> Pair;
+
+ Map m;
+ VERIFY(m.empty());
+
+ Pair A[5] =
+ {
+ Pair("red", 5),
+ Pair("green", 9),
+ Pair("blue", 3),
+ Pair("cyan", 8),
+ Pair("magenta", 7)
+ };
+
+ m.insert(A+0, A+5);
+ VERIFY(m.size() == 5);
+ VERIFY(std::distance(m.begin(), m.end()) == 5);
+
+ for (int i = 0; i < 5; ++i)
+ VERIFY(std::find(m.begin(), m.end(), A[i]) != m.end());
+ }
+
+ void test02()
+ {
+ typedef std::tr1::unordered_multimap<std::string, int> Map;
+ typedef std::pair<const std::string, int> Pair;
+
+ Map m;
+ VERIFY(m.empty());
+
+ Pair A[9] =
+ {
+ Pair("red", 5),
+ Pair("green", 9),
+ Pair("red", 19),
+ Pair("blue", 3),
+ Pair("blue", 60),
+ Pair("cyan", 8),
+ Pair("magenta", 7),
+ Pair("blue", 99),
+ Pair("green", 33)
+ };
+
+ m.insert(A+0, A+9);
+ VERIFY(m.size() == 9);
+ VERIFY(std::distance(m.begin(), m.end()) == 9);
+
+ for (int i = 0; i < 9; ++i)
+ VERIFY(std::find(m.begin(), m.end(), A[i]) != m.end());
+ }
+
+ int main()
+ {
+ test01();
+ test02();
+ return 0;
+ }
Index: testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
===================================================================
RCS file: testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
diff -N testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/tr1/6_containers/unordered/insert/multiset_range.cc 18
Feb 2005 23:05:55 -0000
***************
*** 0 ****
--- 1,81 ----
+ // { dg-do run }
+
+ // 2005-2-17 Matt Austern <austern@apple.com>
+ //
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307,
+ // USA.
+
+ // 6.3.4.5 unordered_multiset
+ // range insert
+
+ #include <string>
+ #include <iterator>
+ #include <algorithm>
+ #include <tr1/unordered_set>
+ #include "testsuite_hooks.h"
+
+ bool test __attribute__((unused)) = true;
+
+ void test01()
+ {
+ typedef std::tr1::unordered_multiset<std::string> Set;
+ Set s;
+ VERIFY(s.empty());
+
+ const int N = 10;
+ const std::string A[N] = { "red", "green", "blue", "violet", "cyan",
+ "magenta", "yellow", "orange", "pink", "gray" };
+
+ s.insert(A+0, A+N);
+ VERIFY(s.size() == N);
+ VERIFY(std::distance(s.begin(), s.end()) == N);
+
+ for (int i = 0; i < N; ++i) {
+ std::string str = A[i];
+ Set::iterator it = std::find(s.begin(), s.end(), str);
+ VERIFY(it != s.end());
+ }
+ }
+
+ void test02()
+ {
+ typedef std::tr1::unordered_multiset<int> Set;
+ Set s;
+ VERIFY(s.empty());
+
+ const int N = 8;
+ const int A[N] = { 3, 7, 4, 8, 2, 4, 6, 7 };
+
+ s.insert(A+0, A+N);
+ VERIFY(s.size() == N);
+ VERIFY(std::distance(s.begin(), s.end()) == N);
+
+ VERIFY(std::count(s.begin(), s.end(), 2) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 3) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 4) == 2);
+ VERIFY(std::count(s.begin(), s.end(), 6) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 7) == 2);
+ VERIFY(std::count(s.begin(), s.end(), 8) == 1);
+ }
+
+ int main()
+ {
+ test01();
+ test02();
+ return 0;
+ }
Index: testsuite/tr1/6_containers/unordered/insert/set_range.cc
===================================================================
RCS file: testsuite/tr1/6_containers/unordered/insert/set_range.cc
diff -N testsuite/tr1/6_containers/unordered/insert/set_range.cc
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/tr1/6_containers/unordered/insert/set_range.cc 18 Feb
2005 23:05:55 -0000
***************
*** 0 ****
--- 1,81 ----
+ // { dg-do run }
+
+ // 2005-2-17 Matt Austern <austern@apple.com>
+ //
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307,
+ // USA.
+
+ // 6.3.4.3 unordered_set
+ // range insert
+
+ #include <string>
+ #include <iterator>
+ #include <algorithm>
+ #include <tr1/unordered_set>
+ #include "testsuite_hooks.h"
+
+ bool test __attribute__((unused)) = true;
+
+ void test01()
+ {
+ typedef std::tr1::unordered_set<std::string> Set;
+ Set s;
+ VERIFY(s.empty());
+
+ const int N = 10;
+ const std::string A[N] = { "red", "green", "blue", "violet", "cyan",
+ "magenta", "yellow", "orange", "pink", "gray" };
+
+ s.insert(A+0, A+N);
+ VERIFY(s.size() == N);
+ VERIFY(std::distance(s.begin(), s.end()) == N);
+
+ for (int i = 0; i < N; ++i) {
+ std::string str = A[i];
+ Set::iterator it = std::find(s.begin(), s.end(), str);
+ VERIFY(it != s.end());
+ }
+ }
+
+ void test02()
+ {
+ typedef std::tr1::unordered_set<int> Set;
+ Set s;
+ VERIFY(s.empty());
+
+ const int N = 8;
+ const int A[N] = { 3, 7, 4, 8, 2, 4, 6, 7 };
+
+ s.insert(A+0, A+N);
+ VERIFY(s.size() == 6);
+ VERIFY(std::distance(s.begin(), s.end()) == 6);
+
+ VERIFY(std::count(s.begin(), s.end(), 2) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 3) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 4) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 6) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 7) == 1);
+ VERIFY(std::count(s.begin(), s.end(), 8) == 1);
+ }
+
+ int main()
+ {
+ test01();
+ test02();
+ return 0;
+ }
More information about the Gcc-patches
mailing list