[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(
-  { return requires { t.insert_range(r); }; }(v),
+  { 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(
-  { return requires { t.insert_range(r); }; }(v),
+  { 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