Skip to content

Commit 346cf0d

Browse files
committed
Move all array tests into array test file
1 parent 2c27eb5 commit 346cf0d

File tree

2 files changed

+68
-64
lines changed

2 files changed

+68
-64
lines changed

source/containers/array.cpp

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@ export module containers.array;
1212

1313
import containers.begin_end;
1414
import containers.c_array;
15-
import containers.data;
1615
import containers.is_container;
1716
import containers.maximum_array_size;
18-
import containers.range_value_t;
1917

2018
import bounded;
2119
import std_module;
@@ -169,61 +167,3 @@ template<std::size_t index, typename T, containers::array_size_type<T> size>
169167
struct std::tuple_element<index, ::containers::array<T, size>> {
170168
using type = T;
171169
};
172-
173-
namespace {
174-
175-
constexpr auto size = 5_bi;
176-
constexpr containers::array<int, size> a = {};
177-
static_assert(a.size() == size, "Incorrect size.");
178-
static_assert(a[0_bi] == 0, "Incorrect value.");
179-
180-
static_assert(std::is_standard_layout_v<containers::array<int, 0_bi>>);
181-
static_assert(std::is_trivial_v<containers::array<int, 0_bi>>);
182-
static_assert(std::is_empty_v<containers::array<int, 0_bi>>);
183-
184-
template<typename T>
185-
concept qualifiers_are_contiguous_ranges =
186-
containers::contiguous_range<T const &> and
187-
containers::contiguous_range<T &>;
188-
189-
static_assert(qualifiers_are_contiguous_ranges<containers::array<int, 0_bi>>);
190-
static_assert(qualifiers_are_contiguous_ranges<containers::array<int, 5_bi>>);
191-
192-
static_assert(containers::is_container<containers::array<int, 0_bi>>);
193-
static_assert(containers::is_container<containers::array<int, 1_bi>>);
194-
195-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int const>>);
196-
static_assert(!bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int>>);
197-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int const>>);
198-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int>>);
199-
200-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int const, 3>>);
201-
static_assert(!bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int, 3>>);
202-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int const, 3>>);
203-
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int, 3>>);
204-
205-
constexpr auto array_n = containers::make_array_n(6_bi, 5);
206-
static_assert(std::same_as<containers::range_value_t<decltype(array_n)>, int>, "Incorrect type from make_array_n.");
207-
static_assert(array_n.size() == 6_bi, "Incorrect size from make_array_n.");
208-
static_assert(array_n[3_bi] == 5, "Incorrect values from make_array_n.");
209-
210-
struct non_copyable {
211-
non_copyable() = default;
212-
non_copyable(non_copyable const &) = delete;
213-
non_copyable(non_copyable &&) = default;
214-
};
215-
216-
constexpr auto array_non_copyable = containers::make_array_n(1_bi, non_copyable());
217-
static_assert(array_non_copyable.size() == 1_bi);
218-
219-
constexpr auto array_empty = containers::make_array_n(0_bi, 2);
220-
static_assert(array_empty.size() == 0_bi);
221-
222-
constexpr auto array_non_copyable_empty = containers::make_array_n(0_bi, non_copyable());
223-
static_assert(array_non_copyable_empty.size() == 0_bi);
224-
225-
constexpr auto large_size = 10000_bi;
226-
constexpr auto large_array_n = containers::make_array_n(large_size, 0);
227-
static_assert(large_array_n.size() == large_size);
228-
229-
} // namespace

source/containers/test/array.cpp

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,76 @@ export module containers.test.array;
88
import containers.test.test_sequence_container;
99

1010
import containers.array;
11+
import containers.data;
12+
import containers.is_container;
13+
import containers.range_value_t;
1114

1215
import bounded;
16+
import std_module;
1317

18+
namespace {
19+
1420
using namespace bounded::literal;
21+
22+
constexpr auto size = 5_bi;
23+
constexpr containers::array<int, size> a = {};
24+
static_assert(a.size() == size, "Incorrect size.");
25+
static_assert(a[0_bi] == 0, "Incorrect value.");
1526

16-
static_assert(containers_test::test_sequence_container_default_constructed_empty<containers::array<int, 0_bi>>());
17-
static_assert(containers_test::test_sequence_container_implicit_from_two_empty_braces<containers::array<int, 0_bi>>());
18-
static_assert(containers_test::test_special_members<containers::array<int, 0_bi>>([] { return containers::array<int, 0_bi>({}); }));
19-
static_assert(containers_test::test_special_members<containers::array<int, 5_bi>>([] { return containers::array({0, 1, 2, 3, 4}); }));
27+
static_assert(std::is_standard_layout_v<containers::array<int, 0_bi>>);
28+
static_assert(std::is_trivial_v<containers::array<int, 0_bi>>);
29+
static_assert(std::is_empty_v<containers::array<int, 0_bi>>);
30+
31+
template<typename T>
32+
concept qualifiers_are_contiguous_ranges =
33+
containers::contiguous_range<T const &> and
34+
containers::contiguous_range<T &>;
35+
36+
static_assert(qualifiers_are_contiguous_ranges<containers::array<int, 0_bi>>);
37+
static_assert(qualifiers_are_contiguous_ranges<containers::array<int, 5_bi>>);
38+
39+
static_assert(containers::is_container<containers::array<int, 0_bi>>);
40+
static_assert(containers::is_container<containers::array<int, 1_bi>>);
41+
42+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int const>>);
43+
static_assert(!bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int>>);
44+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int const>>);
45+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int>>);
46+
47+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int const, 3>>);
48+
static_assert(!bounded::convertible_to<containers::array<int, 3_bi> const &, std::span<int, 3>>);
49+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int const, 3>>);
50+
static_assert(bounded::convertible_to<containers::array<int, 3_bi> &, std::span<int, 3>>);
51+
52+
constexpr auto array_n = containers::make_array_n(6_bi, 5);
53+
static_assert(std::same_as<containers::range_value_t<decltype(array_n)>, int>, "Incorrect type from make_array_n.");
54+
static_assert(array_n.size() == 6_bi, "Incorrect size from make_array_n.");
55+
static_assert(array_n[3_bi] == 5, "Incorrect values from make_array_n.");
56+
57+
struct non_copyable {
58+
non_copyable() = default;
59+
non_copyable(non_copyable const &) = delete;
60+
non_copyable(non_copyable &&) = default;
61+
};
62+
63+
constexpr auto array_non_copyable = containers::make_array_n(1_bi, non_copyable());
64+
static_assert(array_non_copyable.size() == 1_bi);
65+
66+
constexpr auto array_empty = containers::make_array_n(0_bi, 2);
67+
static_assert(array_empty.size() == 0_bi);
68+
69+
constexpr auto array_non_copyable_empty = containers::make_array_n(0_bi, non_copyable());
70+
static_assert(array_non_copyable_empty.size() == 0_bi);
71+
72+
constexpr auto large_size = 10000_bi;
73+
constexpr auto large_array_n = containers::make_array_n(large_size, 0);
74+
static_assert(large_array_n.size() == large_size);
75+
76+
using namespace containers_test;
77+
78+
static_assert(test_sequence_container_default_constructed_empty<containers::array<int, 0_bi>>());
79+
static_assert(test_sequence_container_implicit_from_two_empty_braces<containers::array<int, 0_bi>>());
80+
static_assert(test_special_members<containers::array<int, 0_bi>>([] { return containers::array<int, 0_bi>({}); }));
81+
static_assert(test_special_members<containers::array<int, 5_bi>>([] { return containers::array({0, 1, 2, 3, 4}); }));
82+
83+
} // namespace

0 commit comments

Comments
 (0)