[libcxx-commits] [libcxx] 665148d - [libc++][test] Fix test not relying on MinSequenceContainer (#140372)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri May 30 10:12:51 PDT 2025


Author: Hui
Date: 2025-05-30T13:12:48-04:00
New Revision: 665148d5e169762fe53a1bcb09b91aff7f8b89f7

URL: https://github.com/llvm/llvm-project/commit/665148d5e169762fe53a1bcb09b91aff7f8b89f7
DIFF: https://github.com/llvm/llvm-project/commit/665148d5e169762fe53a1bcb09b91aff7f8b89f7.diff

LOG: [libc++][test] Fix  test not relying on MinSequenceContainer (#140372)

The affected tests are relying on the fact that `MinSequenceContainer`
does not have `insert_range`. This prevents landing of #140287.

This PR creates a new helper class to allow the change in MinSequenceContainer.

Added: 
    

Modified: 
    libcxx/test/libcxx/containers/container.adaptors/flat.multiset/insert_range.pass.cpp
    libcxx/test/libcxx/containers/container.adaptors/flat.set/insert_range.pass.cpp
    libcxx/test/libcxx/containers/container.adaptors/flat_helpers.h

Removed: 
    


################################################################################
diff  --git a/libcxx/test/libcxx/containers/container.adaptors/flat.multiset/insert_range.pass.cpp b/libcxx/test/libcxx/containers/container.adaptors/flat.multiset/insert_range.pass.cpp
index 3ca021c2ac650..d69b05a4dee5d 100644
--- a/libcxx/test/libcxx/containers/container.adaptors/flat.multiset/insert_range.pass.cpp
+++ b/libcxx/test/libcxx/containers/container.adaptors/flat.multiset/insert_range.pass.cpp
@@ -16,24 +16,27 @@
 // out there are in that situation.
 // https://github.com/llvm/llvm-project/issues/136656
 
+#include <algorithm>
+#include <cassert>
 #include <flat_set>
 #include <ranges>
 #include <sstream>
 #include <vector>
 
-#include "MinSequenceContainer.h"
+#include "../flat_helpers.h"
 #include "test_macros.h"
 
 void test() {
-  MinSequenceContainer<int> v;
+  NotQuiteSequenceContainer<int> v;
   std::flat_multiset s(v);
   std::istringstream ints("0 1 1 0");
   auto r = std::ranges::subrange(std::istream_iterator<int>(ints), std::istream_iterator<int>()) |
            std::views::transform([](int i) { return i * i; });
   static_assert(
-      ![](auto& t) { return requires { t.insert_range(r); }; }(v),
+      ![](auto& t) { return requires { t.insert_range(t.end(), r); }; }(v),
       "This test is to test the case where the underlying container does not provide insert_range");
   s.insert_range(r);
+  assert(std::ranges::equal(s, std::vector<int>{0, 0, 1, 1}));
 }
 
 int main(int, char**) {

diff  --git a/libcxx/test/libcxx/containers/container.adaptors/flat.set/insert_range.pass.cpp b/libcxx/test/libcxx/containers/container.adaptors/flat.set/insert_range.pass.cpp
index 8023e251ccb17..35b9737e85106 100644
--- a/libcxx/test/libcxx/containers/container.adaptors/flat.set/insert_range.pass.cpp
+++ b/libcxx/test/libcxx/containers/container.adaptors/flat.set/insert_range.pass.cpp
@@ -16,24 +16,27 @@
 // out there are in that situation.
 // https://github.com/llvm/llvm-project/issues/136656
 
+#include <algorithm>
+#include <cassert>
 #include <flat_set>
 #include <ranges>
 #include <sstream>
 #include <vector>
 
-#include "MinSequenceContainer.h"
+#include "../flat_helpers.h"
 #include "test_macros.h"
 
 void test() {
-  MinSequenceContainer<int> v;
+  NotQuiteSequenceContainer<int> v;
   std::flat_set s(v);
   std::istringstream ints("0 1 1 0");
   auto r = std::ranges::subrange(std::istream_iterator<int>(ints), std::istream_iterator<int>()) |
            std::views::transform([](int i) { return i * i; });
   static_assert(
-      ![](auto& t) { return requires { t.insert_range(r); }; }(v),
+      ![](auto& t) { return requires { t.insert_range(t.end(), r); }; }(v),
       "This test is to test the case where the underlying container does not provide insert_range");
   s.insert_range(r);
+  assert(std::ranges::equal(s, std::vector<int>{0, 1}));
 }
 
 int main(int, char**) {

diff  --git a/libcxx/test/libcxx/containers/container.adaptors/flat_helpers.h b/libcxx/test/libcxx/containers/container.adaptors/flat_helpers.h
index 1242c29715daa..cc59f59cc4ecc 100644
--- a/libcxx/test/libcxx/containers/container.adaptors/flat_helpers.h
+++ b/libcxx/test/libcxx/containers/container.adaptors/flat_helpers.h
@@ -9,6 +9,8 @@
 #ifndef TEST_LIBCXX_CONTAINERS_CONTAINER_ADAPTORS_FLAT_HELPERS_H
 #define TEST_LIBCXX_CONTAINERS_CONTAINER_ADAPTORS_FLAT_HELPERS_H
 
+#include <vector>
+
 struct TrackCopyMove {
   mutable int copy_count = 0;
   int move_count         = 0;
@@ -37,4 +39,10 @@ struct TrackCopyMove {
   constexpr bool operator<(const TrackCopyMove&) const { return false; }
 };
 
+template <class T>
+struct NotQuiteSequenceContainer : std::vector<T> {
+  // hide the name insert_range
+  void insert_range() = delete;
+};
+
 #endif // TEST_LIBCXX_CONTAINERS_CONTAINER_ADAPTORS_FLAT_HELPERS_H


        


More information about the libcxx-commits mailing list