]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / unordered_map / erase / 1.cc
index 70fb41e68e737dac962e9eedab5a73cb727c9c50..5527768cc57442439b9e3f09cfa8015bee73c5e9 100644 (file)
@@ -1,8 +1,8 @@
-// { dg-options "-std=gnu++0x" }
+// { dg-do run { target c++11 } }
 
 // 2010-02-10  Paolo Carlini  <paolo.carlini@oracle.com> 
 //
-// Copyright (C) 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010-2024 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
 #include <string>
 #include <testsuite_hooks.h>
 
+namespace
+{
+  std::size_t
+  get_nb_bucket_elems(const std::unordered_map<std::string, int>& us)
+  {
+    std::size_t nb = 0;
+    for (std::size_t b = 0; b != us.bucket_count(); ++b)
+      nb += us.bucket_size(b);
+    return nb;
+  }
+}
+
 void test01()
 {
-  bool test __attribute__((unused)) = true;
-  
   typedef std::unordered_map<std::string, int> Map;
   typedef Map::iterator       iterator;
   typedef Map::const_iterator const_iterator;
   typedef Map::value_type     value_type;
 
   Map m1;
-
   m1.insert(value_type("because to why", 1));
   m1.insert(value_type("the stockholm syndrome", 2));
   m1.insert(value_type("a cereous night", 3));
@@ -45,14 +55,20 @@ void test01()
   m1.insert(value_type("belonging (no longer mix)", 9));
   m1.insert(value_type("one line behind", 10));
   VERIFY( m1.size() == 10 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
 
   VERIFY( m1.erase("eeilo") == 1 );
   VERIFY( m1.size() == 9 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   iterator it1 = m1.find("eeilo");
   VERIFY( it1 == m1.end() );
 
   VERIFY( m1.erase("tillsammans") == 1 );
   VERIFY( m1.size() == 8 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   iterator it2 = m1.find("tillsammans");
   VERIFY( it2 == m1.end() );
 
@@ -61,17 +77,23 @@ void test01()
   VERIFY( it3 != m1.end() );
   VERIFY( m1.erase(it3->first) == 1 );
   VERIFY( m1.size() == 7 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   it3 = m1.find("belonging (no longer mix)");
   VERIFY( it3 == m1.end() );
 
   VERIFY( !m1.erase("abra") );
   VERIFY( m1.size() == 7 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
 
   VERIFY( !m1.erase("eeilo") );
   VERIFY( m1.size() == 7 );
 
   VERIFY( m1.erase("because to why") == 1 );
   VERIFY( m1.size() == 6 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   iterator it4 = m1.find("because to why");
   VERIFY( it4 == m1.end() );
 
@@ -87,11 +109,15 @@ void test01()
 
   VERIFY( m1.erase(it5->first) == 1 );
   VERIFY( m1.size() == 5 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   it5 = m1.find("umbra/penumbra");
   VERIFY( it5 == m1.end() );
 
   VERIFY( m1.erase(it6->first) == 1 );
   VERIFY( m1.size() == 4 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   it6 = m1.find("one line behind");
   VERIFY( it6 == m1.end() );
 
@@ -103,6 +129,8 @@ void test01()
 
   VERIFY( m1.erase(it8->first) == 1 );
   VERIFY( m1.size() == 3 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   VERIFY( ++it7 == it9 );
 
   iterator it10 = it9;
@@ -110,15 +138,21 @@ void test01()
   iterator it11 = it10;
 
   VERIFY( m1.erase(it9->first) == 1 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   VERIFY( m1.size() == 2 );
   VERIFY( ++it10 == m1.end() );
 
-  m1.erase(m1.begin());
+  VERIFY( m1.erase(m1.begin()) != m1.end() );  
   VERIFY( m1.size() == 1 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   VERIFY( m1.begin() == it11 );
 
   VERIFY( m1.erase(m1.begin()->first) == 1 );  
   VERIFY( m1.size() == 0 );
+  VERIFY( get_nb_bucket_elems(m1) == m1.size() );
+  VERIFY( distance(m1.begin(), m1.end()) - m1.size() == 0 );
   VERIFY( m1.begin() == m1.end() );
 }