Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libcxx/test/libcxx/gdb/gdb_pretty_printer_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def invoke(self, arg, from_tty):
except RuntimeError as e:
# At this point, lots of different things could be wrong, so don't try to
# recover or figure it out. Don't exit either, because then it's
# impossible debug the framework itself.
# impossible to debug the framework itself.
print("FAIL: Something is wrong in the test framework.")
print(str(e))
test_failures += 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS

#include <algorithm>
#include <array>
#include <cassert>

#include "test_macros.h"
Expand All @@ -26,18 +27,19 @@ template <class Iter>
void
test_with_iterator()
{
int empty[] = {};
std::random_shuffle(Iter(empty), Iter(empty));
std::array<int, 0> empty_arr = {};
int* const empty = empty_arr.data();
std::random_shuffle(Iter(empty), Iter(empty));

const int all_elements[] = {1, 2, 3, 4};
int shuffled[] = {1, 2, 3, 4};
const unsigned size = sizeof(all_elements)/sizeof(all_elements[0]);
const int all_elements[] = {1, 2, 3, 4};
int shuffled[] = {1, 2, 3, 4};
const unsigned size = sizeof(all_elements) / sizeof(all_elements[0]);

std::random_shuffle(Iter(shuffled), Iter(shuffled+size));
assert(std::is_permutation(shuffled, shuffled+size, all_elements));
std::random_shuffle(Iter(shuffled), Iter(shuffled + size));
assert(std::is_permutation(shuffled, shuffled + size, all_elements));

std::random_shuffle(Iter(shuffled), Iter(shuffled+size));
assert(std::is_permutation(shuffled, shuffled+size, all_elements));
std::random_shuffle(Iter(shuffled), Iter(shuffled + size));
assert(std::is_permutation(shuffled, shuffled + size, all_elements));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ constexpr bool test_iterators() {
}

{ // first range empty
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[] = {5, 4, 3, 2, 1};
int c[5];

Expand All @@ -103,7 +104,8 @@ constexpr bool test_iterators() {

{ // second range empty
int a[] = {5, 4, 3, 2, 1};
int b[] = {};
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
int c[5];

auto ret = std::ranges::transform(
Expand All @@ -115,8 +117,10 @@ constexpr bool test_iterators() {
}

{ // both ranges empty
int a[] = {};
int b[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
int c[5];

auto ret = std::ranges::transform(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ constexpr bool test_iterators() {
}

{ // first range empty
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[] = {5, 4, 3, 2, 1};
int c[5];

Expand All @@ -108,7 +109,8 @@ constexpr bool test_iterators() {

{ // second range empty
int a[] = {5, 4, 3, 2, 1};
int b[] = {};
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
int c[5];

auto range1 = std::ranges::subrange(In1(a), Sent1(In1(a + 5)));
Expand All @@ -122,8 +124,10 @@ constexpr bool test_iterators() {
}

{ // both ranges empty
int a[] = {};
int b[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
int c[5];

auto range1 = std::ranges::subrange(In1(a), Sent1(In1(a)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,17 @@ constexpr bool test_iterators() {

{ // first range empty
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[5];
auto ret = std::ranges::transform(In1(a), Sent1(In1(a)), Out(b), [](int i) { return i * 2; });
assert(base(ret.in) == a);
assert(base(ret.out) == b);
}

{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[5];
auto range = std::ranges::subrange(In1(a), Sent1(In1(a)));
auto ret = std::ranges::transform(range, Out(b), [](int i) { return i * 2; });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@ constexpr void test_iterators() {

{ // suffix has zero length
int a[] = {1, 2, 3, 4, 5, 6};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto whole = std::ranges::subrange(Iter1(a), Sent1(Iter1(a + 6)));
auto suffix = std::ranges::subrange(Iter2(p), Sent2(Iter2(p)));
{
Expand All @@ -170,7 +171,8 @@ constexpr void test_iterators() {
}

{ // range has zero length
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {1, 2, 3, 4, 5, 6, 7, 8};
auto whole = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto suffix = std::ranges::subrange(Iter2(p), Sent2(Iter2(p + 8)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
// Proj1 proj1 = {}, Proj2 proj2 = {});

#include <algorithm>
#include <array>
#include <cassert>
#include <concepts>
#include <functional>
Expand Down Expand Up @@ -200,14 +201,18 @@ constexpr void test_iterators() {

{ // check that two empty ranges work
{
int a[] = {};
int b[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
auto ret = std::ranges::equal(Iter1(a), Sent1(Iter1(a)), Iter2(b), Sent2(Iter2(b)));
assert(ret);
}
{
int a[] = {};
int b[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto range2 = std::ranges::subrange(Iter2(b), Sent2(Iter2(b)));
auto ret = std::ranges::equal(range1, range2);
Expand All @@ -217,13 +222,15 @@ constexpr void test_iterators() {

{ // check that it works with the first range empty
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[] = {1, 2};
auto ret = std::ranges::equal(Iter1(a), Sent1(Iter1(a)), Iter2(b), Sent2(Iter2(b + 2)));
assert(!ret);
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int b[] = {1, 2};
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto range2 = std::ranges::subrange(Iter2(b), Sent2(Iter2(b + 2)));
Expand All @@ -235,13 +242,15 @@ constexpr void test_iterators() {
{ // check that it works with the second range empty
{
int a[] = {1, 2};
int b[] = {};
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
auto ret = std::ranges::equal(Iter1(a), Sent1(Iter1(a + 2)), Iter2(b), Sent2(Iter2(b)));
assert(!ret);
}
{
int a[] = {1, 2};
int b[] = {};
std::array<int, 0> b_arr = {};
int* const b = b_arr.data();
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a + 2)));
auto range2 = std::ranges::subrange(Iter2(b), Sent2(Iter2(b)));
auto ret = std::ranges::equal(range1, range2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,16 @@ constexpr void test_iterators() {
{ // pattern has zero length
{
int a[] = {6, 7, 8};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto ret = std::ranges::find_end(Iter1(a), Sent1(Iter1(a + 3)), Iter2(p), Sent2(Iter2(p)));
assert(base(ret.begin()) == a + 3);
assert(base(ret.end()) == a + 3);
}
{
int a[] = {6, 7, 8};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a + 3)));
auto range2 = std::ranges::subrange(Iter2(p), Sent2(Iter2(p)));
auto ret = std::ranges::find_end(range1, range2);
Expand All @@ -200,14 +202,16 @@ constexpr void test_iterators() {

{ // range has zero length
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {6, 7, 8};
auto ret = std::ranges::find_end(Iter1(a), Sent1(Iter1(a)), Iter2(p), Sent2(Iter2(p + 3)));
assert(base(ret.begin()) == a);
assert(base(ret.end()) == a);
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {6, 7, 8};
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto range2 = std::ranges::subrange(Iter2(p), Sent2(Iter2(p + 3)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
// ranges::for_each(R&& r, Fun f, Proj proj = {});

#include <algorithm>
#include <array>
#include <ranges>

#include "almost_satisfies_types.h"
Expand Down Expand Up @@ -98,11 +99,13 @@ constexpr void test_iterator() {

{ // check that an empty range works
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::ranges::for_each(Iter(a), Sent(Iter(a)), [](auto&) { assert(false); });
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
auto range = std::ranges::subrange(Iter(a), Sent(Iter(a)));
std::ranges::for_each(range, [](auto&) { assert(false); });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
// ranges::for_each_n(I first, iter_difference_t<I> n, Fun f, Proj proj = {});

#include <algorithm>
#include <array>
#include <ranges>

#include "almost_satisfies_types.h"
Expand Down Expand Up @@ -58,7 +59,8 @@ constexpr void test_iterator() {
}

{ // check that an empty range works
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
std::ranges::for_each_n(Iter(a), 0, [](auto&) { assert(false); });
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,16 @@ constexpr void test_iterators() {
{ // pattern has zero length
{
int a[] = {6, 7, 8};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto ret = std::ranges::search(Iter1(a), Sent1(Iter1(a + 3)), Iter2(p), Sent2(Iter2(p)));
assert(base(ret.begin()) == a);
assert(base(ret.end()) == a);
}
{
int a[] = {6, 7, 8};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a + 3)));
auto range2 = std::ranges::subrange(Iter2(p), Sent2(Iter2(p)));
auto ret = std::ranges::search(range1, range2);
Expand All @@ -201,14 +203,16 @@ constexpr void test_iterators() {

{ // range has zero length
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {6, 7, 8};
auto ret = std::ranges::search(Iter1(a), Sent1(Iter1(a)), Iter2(p), Sent2(Iter2(p + 3)));
assert(base(ret.begin()) == a);
assert(base(ret.end()) == a);
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {6, 7, 8};
auto range1 = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto range2 = std::ranges::subrange(Iter2(p), Sent2(Iter2(p + 3)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,15 @@ constexpr void test_iterators() {

{ // range has zero length
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
auto ret = std::ranges::search_n(Iter(a), Sent(Iter(a)), 1, 1);
assert(base(ret.begin()) == a);
assert(base(ret.end()) == a);
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
auto range = std::ranges::subrange(Iter(a), Sent(Iter(a)));
auto ret = std::ranges::search_n(range, 1, 1);
assert(base(ret.begin()) == a);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,16 @@ constexpr void test_iterators() {
{ // prefix has zero length
{
int a[] = {1, 2, 3, 4, 5, 6};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
std::same_as<bool> decltype(auto) ret =
std::ranges::starts_with(Iter1(a), Sent1(Iter1(a + 6)), Iter2(p), Sent2(Iter2(p)));
assert(ret);
}
{
int a[] = {1, 2, 3, 4, 5, 6};
int p[] = {};
std::array<int, 0> p_arr = {};
int* const p = p_arr.data();
auto whole = std::ranges::subrange(Iter1(a), Sent1(Iter1(a + 6)));
auto prefix = std::ranges::subrange(Iter2(p), Sent2(Iter2(p)));
std::same_as<bool> decltype(auto) ret = std::ranges::starts_with(whole, prefix);
Expand All @@ -153,14 +155,16 @@ constexpr void test_iterators() {

{ // range has zero length
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {1, 2, 3, 4, 5, 6, 7, 8};
std::same_as<bool> decltype(auto) ret =
std::ranges::starts_with(Iter1(a), Sent1(Iter1(a)), Iter2(p), Sent2(Iter2(p + 8)));
assert(!ret);
}
{
int a[] = {};
std::array<int, 0> a_arr = {};
int* const a = a_arr.data();
int p[] = {1, 2, 3, 4, 5, 6, 7, 8};
auto whole = std::ranges::subrange(Iter1(a), Sent1(Iter1(a)));
auto prefix = std::ranges::subrange(Iter2(p), Sent2(Iter2(p + 8)));
Expand Down
Loading