[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