[libcxx-commits] [libcxx] [libc++][test] Refactor tests for rotate and rotate_copy (PR #126458)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Feb 19 10:14:30 PST 2025
================
@@ -358,91 +356,90 @@ test1()
assert(*ie[4] == 4);
std::unique_ptr<int> ig[6];
- const int sg = static_cast<int>(sizeof(ig)/sizeof(ig[0]));
+ const int sg = static_cast<int>(sizeof(ig) / sizeof(ig[0]));
for (int i = 0; i < sg; ++i)
- ig[i].reset(new int(i));
- r = std::rotate(Iter(ig), Iter(ig), Iter(ig+sg));
- assert(base(r) == ig+sg);
+ ig[i].reset(new int(i));
+ r = std::rotate(Iter(ig), Iter(ig), Iter(ig + sg));
+ assert(base(r) == ig + sg);
assert(*ig[0] == 0);
assert(*ig[1] == 1);
assert(*ig[2] == 2);
assert(*ig[3] == 3);
assert(*ig[4] == 4);
assert(*ig[5] == 5);
- r = std::rotate(Iter(ig), Iter(ig+1), Iter(ig+sg));
- assert(base(r) == ig+5);
+ r = std::rotate(Iter(ig), Iter(ig + 1), Iter(ig + sg));
+ assert(base(r) == ig + 5);
assert(*ig[0] == 1);
assert(*ig[1] == 2);
assert(*ig[2] == 3);
assert(*ig[3] == 4);
assert(*ig[4] == 5);
assert(*ig[5] == 0);
- r = std::rotate(Iter(ig), Iter(ig+2), Iter(ig+sg));
- assert(base(r) == ig+4);
+ r = std::rotate(Iter(ig), Iter(ig + 2), Iter(ig + sg));
+ assert(base(r) == ig + 4);
assert(*ig[0] == 3);
assert(*ig[1] == 4);
assert(*ig[2] == 5);
assert(*ig[3] == 0);
assert(*ig[4] == 1);
assert(*ig[5] == 2);
- r = std::rotate(Iter(ig), Iter(ig+3), Iter(ig+sg));
- assert(base(r) == ig+3);
+ r = std::rotate(Iter(ig), Iter(ig + 3), Iter(ig + sg));
+ assert(base(r) == ig + 3);
assert(*ig[0] == 0);
assert(*ig[1] == 1);
assert(*ig[2] == 2);
assert(*ig[3] == 3);
assert(*ig[4] == 4);
assert(*ig[5] == 5);
- r = std::rotate(Iter(ig), Iter(ig+4), Iter(ig+sg));
- assert(base(r) == ig+2);
+ r = std::rotate(Iter(ig), Iter(ig + 4), Iter(ig + sg));
+ assert(base(r) == ig + 2);
assert(*ig[0] == 4);
assert(*ig[1] == 5);
assert(*ig[2] == 0);
assert(*ig[3] == 1);
assert(*ig[4] == 2);
assert(*ig[5] == 3);
- r = std::rotate(Iter(ig), Iter(ig+5), Iter(ig+sg));
- assert(base(r) == ig+1);
+ r = std::rotate(Iter(ig), Iter(ig + 5), Iter(ig + sg));
+ assert(base(r) == ig + 1);
assert(*ig[0] == 3);
assert(*ig[1] == 4);
assert(*ig[2] == 5);
assert(*ig[3] == 0);
assert(*ig[4] == 1);
assert(*ig[5] == 2);
- r = std::rotate(Iter(ig), Iter(ig+sg), Iter(ig+sg));
+ r = std::rotate(Iter(ig), Iter(ig + sg), Iter(ig + sg));
assert(base(r) == ig);
assert(*ig[0] == 3);
assert(*ig[1] == 4);
assert(*ig[2] == 5);
assert(*ig[3] == 0);
assert(*ig[4] == 1);
assert(*ig[5] == 2);
-}
+ }
+};
#endif // TEST_STD_VER >= 11
-int main(int, char**)
-{
- test<forward_iterator<int*> >();
- test<bidirectional_iterator<int*> >();
- test<random_access_iterator<int*> >();
- test<int*>();
+TEST_CONSTEXPR_CXX20 bool test() {
+ types::for_each(types::forward_iterator_list<int*>(), TestIter());
-#if TEST_STD_VER >= 11
+#if TEST_STD_VER >= 11 && TEST_STD_VER <= 17
+ types::for_each(types::forward_iterator_list<std::unique_ptr<int>*>(), TestUniquePtr());
+#elif TEST_STD_VER == 20
+ if (!std::is_constant_evaluated())
+ types::for_each(types::forward_iterator_list<std::unique_ptr<int>*>(), TestUniquePtr());
+#elif TEST_STD_VER >= 23
+ types::for_each(types::forward_iterator_list<std::unique_ptr<int>*>(), TestUniquePtr());
+#endif
----------------
ldionne wrote:
Same comment I left in another review about `TEST_IS_CONSTANT_EVALUATED`.
https://github.com/llvm/llvm-project/pull/126458
More information about the libcxx-commits
mailing list