diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp deleted file mode 100644 index 89c7b854586711..00000000000000 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp +++ /dev/null @@ -1,168 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// - -// template -// requires OutputIterator -// constexpr OutputIterator // constexpr after C++17 -// fill_n(Iter first, Size n, const T& value); - -#include -#include -#include - -#include "test_macros.h" -#include "test_iterators.h" -#include "user_defined_integral.h" - -#if TEST_STD_VER > 17 -TEST_CONSTEXPR bool test_constexpr() { - const std::size_t N = 5; - int ib[] = {0, 0, 0, 0, 0, 0}; // one bigger than N - - auto it = std::fill_n(std::begin(ib), N, 5); - return it == (std::begin(ib) + N) && std::all_of(std::begin(ib), it, [](int a) { return a == 5; }) && - *it == 0 // don't overwrite the last value in the output array - ; -} -#endif - -typedef UserDefinedIntegral UDI; - -template -void test_char() { - char a[4] = {}; - Iter it = std::fill_n(Iter(a), UDI(4), char(1)); - assert(base(it) == a + 4); - assert(a[0] == 1); - assert(a[1] == 1); - assert(a[2] == 1); - assert(a[3] == 1); -} - -template -void test_int() { - int a[4] = {}; - Iter it = std::fill_n(Iter(a), UDI(4), 1); - assert(base(it) == a + 4); - assert(a[0] == 1); - assert(a[1] == 1); - assert(a[2] == 1); - assert(a[3] == 1); -} - -void test_int_array() { - int a[4] = {}; - assert(std::fill_n(a, UDI(4), static_cast(1)) == a + 4); - assert(a[0] == 1); - assert(a[1] == 1); - assert(a[2] == 1); - assert(a[3] == 1); -} - -struct source { - source() : i(0) {} - - operator int() const { return i++; } - mutable int i; -}; - -void test_int_array_struct_source() { - int a[4] = {}; - assert(std::fill_n(a, UDI(4), source()) == a + 4); - assert(a[0] == 0); - assert(a[1] == 1); - assert(a[2] == 2); - assert(a[3] == 3); -} - -struct test1 { - test1() : c(0) {} - test1(char xc) : c(xc + 1) {} - char c; -}; - -void test_struct_array() { - test1 test1a[4] = {}; - assert(std::fill_n(test1a, UDI(4), static_cast(10)) == test1a + 4); - assert(test1a[0].c == 11); - assert(test1a[1].c == 11); - assert(test1a[2].c == 11); - assert(test1a[3].c == 11); -} - -class A { - char a_; - -public: - A() {} - explicit A(char a) : a_(a) {} - operator unsigned char() const { return 'b'; } - - friend bool operator==(const A& x, const A& y) { return x.a_ == y.a_; } -}; - -void test5() { - A a[3]; - assert(std::fill_n(&a[0], UDI(3), A('a')) == a + 3); - assert(a[0] == A('a')); - assert(a[1] == A('a')); - assert(a[2] == A('a')); -} - -struct Storage { - union { - unsigned char a; - unsigned char b; - }; -}; - -void test6() { - Storage foo[5]; - std::fill_n(&foo[0], UDI(5), Storage()); -} - -void test_deque() { - std::deque dq(5); - std::fill_n(dq.begin(), dq.size(), 4); - assert(dq[0] == 4); - assert(dq[1] == 4); - assert(dq[2] == 4); - assert(dq[3] == 4); - assert(dq[4] == 4); -} - -int main(int, char**) { - test_char >(); - test_char >(); - test_char >(); - test_char >(); - test_char(); - - test_int >(); - test_int >(); - test_int >(); - test_int >(); - test_int(); - - test_int_array(); - test_int_array_struct_source(); - test_struct_array(); - - test5(); - test6(); - - test_deque(); - -#if TEST_STD_VER > 17 - static_assert(test_constexpr()); -#endif - - return 0; -}