diff options
Diffstat (limited to 'test/string_matrix.test.cpp')
-rw-r--r-- | test/string_matrix.test.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/string_matrix.test.cpp b/test/string_matrix.test.cpp new file mode 100644 index 0000000..522a274 --- /dev/null +++ b/test/string_matrix.test.cpp @@ -0,0 +1,53 @@ +#include "engine/graphics/string_matrix.hpp" +#include "engine/data/bounds.hpp" + +#include <doctest/doctest.h> +#include <type_traits> + +constexpr uint32_t MATRIX_WIDTH = 76; +constexpr uint32_t MATRIX_HEIGHT = 31; + +TEST_CASE("String matrix") +{ + auto string_matrix = + StringMatrix(Bounds({.width = MATRIX_WIDTH, .height = MATRIX_HEIGHT})); + + SUBCASE("Can set & get elements") + { + // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) + const auto position = Vector2({.x = 56, .y = 20}); + + string_matrix.set(position, "#"); + + CHECK(string_matrix.get(position) == "#"); + } + + SUBCASE("Can iterate") + { + CHECK(std::is_same_v<decltype(string_matrix.begin()), + MatrixIterator<std::string_view>>); + + CHECK(std::is_same_v<decltype(string_matrix.end()), + MatrixIterator<std::string_view>>); + + uint32_t row_iter_cnt = 0; + + for (auto row : string_matrix) + { + row_iter_cnt++; + + CHECK(std::is_same_v<decltype(row), MatrixRow<std::string_view>>); + + uint32_t col_iter_cnt = 0; + + for (auto &col : row) + { + col_iter_cnt++; + } + + CHECK(col_iter_cnt == MATRIX_WIDTH); + } + + CHECK(row_iter_cnt == MATRIX_HEIGHT); + } +} |