[libcxx-commits] [libcxx] 4a292ed - [libcxx][test] Construct non-empty containers in iterator's debug mode tests

Kristina Bessonova via libcxx-commits libcxx-commits at lists.llvm.org
Tue Apr 20 10:52:13 PDT 2021


Author: Kristina Bessonova
Date: 2021-04-20T19:51:55+02:00
New Revision: 4a292eda25bc999ec175f0d21b87cb0225b6da86

URL: https://github.com/llvm/llvm-project/commit/4a292eda25bc999ec175f0d21b87cb0225b6da86
DIFF: https://github.com/llvm/llvm-project/commit/4a292eda25bc999ec175f0d21b87cb0225b6da86.diff

LOG: [libcxx][test] Construct non-empty containers in iterator's debug mode tests

The debug mode tests for map/set's iterators construct empty
containers, making the code after the first increment meaningless.
It's never executed since the tests exit earlier.

It doesn't seem to be intentional, so the patch makes the tests
to construct containers that include at least one element.

Reviewed By: curdeius, Quuxplusone

Differential Revision: https://reviews.llvm.org/D100029

Added: 
    

Modified: 
    libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp
    libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp
index 29b063654846..762551d264b8 100644
--- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp
@@ -23,9 +23,13 @@
 
 int main(int, char**) {
     typedef std::unordered_map<int, std::string> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c;
+    c.insert(std::make_pair(42, std::string()));
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp
index 85e72b5ba663..e0d3eacc0d96 100644
--- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp
@@ -27,9 +27,12 @@
 int main(int, char**) {
     typedef std::unordered_map<int, std::string, std::hash<int>, std::equal_to<int>,
                         min_allocator<std::pair<const int, std::string>>> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c({{42, std::string()}});
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp
index d90ccc38fb79..4f48b6c8ed00 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp
@@ -23,9 +23,13 @@
 
 int main(int, char**) {
     typedef std::unordered_multimap<int, std::string> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c;
+    c.insert(std::make_pair(42, std::string()));
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp
index ded950493b97..dede94cd6897 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp
@@ -28,9 +28,13 @@
 int main(int, char**) {
     typedef std::unordered_multimap<int, std::string, std::hash<int>, std::equal_to<int>,
                         min_allocator<std::pair<const int, std::string>>> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c({{1, std::string()}});
+    c.insert(std::make_pair(42, std::string()));
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp
index 20cf082c999f..2fc397a020a3 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp
@@ -23,8 +23,10 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_multiset<T> C;
-    C c(1);
+    C c;
+    c.insert(42);
     C::iterator i = c.begin();
+    assert(i != c.end());
     ++i;
     assert(i == c.end());
     ++i;

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp
index 60027c485158..29ca4a676817 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp
@@ -26,8 +26,9 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_multiset<T, std::hash<T>, std::equal_to<T>, min_allocator<T>> C;
-    C c(1);
+    C c({42});
     C::iterator i = c.begin();
+    assert(i != c.end());
     ++i;
     assert(i == c.end());
     ++i;

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp
index d4748a5c5d14..bef45d405ec0 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp
@@ -23,9 +23,13 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_multiset<T> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c;
+    c.insert(42);
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp
index 24e2949e3fb4..9fbc69a44626 100644
--- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp
@@ -26,9 +26,12 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_multiset<T, std::hash<T>, std::equal_to<T>, min_allocator<T>> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c({42});
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp
index fea8d1feff19..03d1727b813c 100644
--- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp
@@ -23,8 +23,10 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_set<T> C;
-    C c(1);
+    C c;
+    c.insert(42);
     C::iterator i = c.begin();
+    assert(i != c.end());
     ++i;
     assert(i == c.end());
     ++i;

diff  --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp
index 18617d202373..7ea8a06c724b 100644
--- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp
@@ -26,8 +26,9 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_set<T, std::hash<T>, std::equal_to<T>, min_allocator<T>> C;
-    C c(1);
+    C c({42});
     C::iterator i = c.begin();
+    assert(i != c.end());
     ++i;
     assert(i == c.end());
     ++i;

diff  --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp
index 44da89714e28..5fa9983c7930 100644
--- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp
@@ -23,9 +23,13 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_set<T> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c;
+    c.insert(42);
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 

diff  --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp
index 98d5a2e129f8..89fc71aacf05 100644
--- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp
+++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp
@@ -26,9 +26,12 @@
 int main(int, char**) {
     typedef int T;
     typedef std::unordered_set<T, std::hash<T>, std::equal_to<T>, min_allocator<T>> C;
-    C c(1);
-    C::local_iterator i = c.begin(0);
+    C c({42});
+    C::size_type b = c.bucket(42);
+    C::local_iterator i = c.begin(b);
+    assert(i != c.end(b));
     ++i;
+    assert(i == c.end(b));
     ++i;
     assert(false);
 


        


More information about the libcxx-commits mailing list