|
1 | 1 | #include <algorithm> |
| 2 | +#include <concepts> |
2 | 3 | #include <cstddef> |
3 | 4 | #include <ranges> |
| 5 | +#include <stdexcept> |
4 | 6 | #include <string> |
5 | 7 | #include <string_view> |
6 | 8 | #include <type_traits> |
@@ -80,20 +82,42 @@ TEST_CASE("test_array_empty", "[containers][Array]") { |
80 | 82 | REQUIRE((arr.begin() == arr.end())); |
81 | 83 | } |
82 | 84 |
|
83 | | -TEST_CASE("test_array_copy_and_move", "[containers][Array]") { |
84 | | - std::vector<int> vec; |
85 | | - for (int i{0}; i < cBufferSize; ++i) { |
86 | | - vec.push_back(i); |
| 85 | +TEST_CASE("test_array_reference", "[containers][Array]") { |
| 86 | + Array<int> arr(cBufferSize); |
| 87 | + for (int idx{0}; idx < cBufferSize; ++idx) { |
| 88 | + arr.at(idx) = idx; |
| 89 | + } |
| 90 | + auto const& arr_const_ref = arr; |
| 91 | + for (int idx{0}; idx < cBufferSize; ++idx) { |
| 92 | + REQUIRE(arr_const_ref.at(idx) == idx); |
87 | 93 | } |
| 94 | +} |
88 | 95 |
|
| 96 | +TEST_CASE("test_array_illegal_access", "[containers][Array]") { |
| 97 | + Array<int> arr(cBufferSize); |
| 98 | + REQUIRE_THROWS_AS(arr.at(-1), std::out_of_range); |
| 99 | + REQUIRE_THROWS_AS(arr.at(cBufferSize), std::out_of_range); |
| 100 | +} |
| 101 | + |
| 102 | +TEST_CASE("test_array_ranged_copy", "[containers][Array]") { |
| 103 | + std::vector<int> vec; |
| 104 | + for (int idx{0}; idx < cBufferSize; ++idx) { |
| 105 | + vec.push_back(idx); |
| 106 | + } |
89 | 107 | Array<int> arr(cBufferSize); |
90 | 108 | std::ranges::copy(vec, arr.begin()); |
91 | 109 | REQUIRE(std::ranges::equal(vec, arr)); |
92 | | - REQUIRE_THROWS_AS(arr.at(cBufferSize), std::out_of_range); |
| 110 | +} |
93 | 111 |
|
| 112 | +TEST_CASE("test_array_movable", "[containers][Array]") { |
| 113 | + Array<int> arr(cBufferSize); |
| 114 | + Array<int> reference_array(cBufferSize); |
| 115 | + for (int idx{0}; idx < cBufferSize; ++idx) { |
| 116 | + arr.at(idx) = idx; |
| 117 | + reference_array.at(idx) = idx; |
| 118 | + } |
94 | 119 | auto const arr_moved{std::move(arr)}; |
95 | | - REQUIRE(std::ranges::equal(vec, arr_moved)); |
96 | | - REQUIRE_THROWS_AS(arr_moved.at(cBufferSize), std::out_of_range); |
| 120 | + REQUIRE(std::ranges::equal(reference_array, arr_moved)); |
97 | 121 | } |
98 | 122 |
|
99 | 123 | TEMPLATE_TEST_CASE( |
|
0 commit comments