|
| 1 | +#include <CSFML/Graphics/Transform.h> |
| 2 | + |
| 3 | +#include <catch2/catch_test_macros.hpp> |
| 4 | + |
| 5 | +#include <array> |
| 6 | + |
| 7 | +TEST_CASE("[Graphics] sfTransform") |
| 8 | +{ |
| 9 | + SECTION("Construction") |
| 10 | + { |
| 11 | + constexpr sfTransform transform{}; |
| 12 | + STATIC_CHECK(std::size(transform.matrix) == 9); |
| 13 | + for (const auto element : transform.matrix) |
| 14 | + CHECK(element == 0); |
| 15 | + } |
| 16 | + |
| 17 | + SECTION("sfTransform_Identity") |
| 18 | + { |
| 19 | + CHECK(sfTransform_Identity.matrix[0] == 1); |
| 20 | + CHECK(sfTransform_Identity.matrix[1] == 0); |
| 21 | + CHECK(sfTransform_Identity.matrix[2] == 0); |
| 22 | + CHECK(sfTransform_Identity.matrix[3] == 0); |
| 23 | + CHECK(sfTransform_Identity.matrix[4] == 1); |
| 24 | + CHECK(sfTransform_Identity.matrix[5] == 0); |
| 25 | + CHECK(sfTransform_Identity.matrix[6] == 0); |
| 26 | + CHECK(sfTransform_Identity.matrix[7] == 0); |
| 27 | + CHECK(sfTransform_Identity.matrix[8] == 1); |
| 28 | + } |
| 29 | + |
| 30 | + SECTION("sfTransform_fromMatrix") |
| 31 | + { |
| 32 | + const auto transform = sfTransform_fromMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9); |
| 33 | + CHECK(transform.matrix[0] == 1); |
| 34 | + CHECK(transform.matrix[1] == 2); |
| 35 | + CHECK(transform.matrix[2] == 3); |
| 36 | + CHECK(transform.matrix[3] == 4); |
| 37 | + CHECK(transform.matrix[4] == 5); |
| 38 | + CHECK(transform.matrix[5] == 6); |
| 39 | + CHECK(transform.matrix[6] == 7); |
| 40 | + CHECK(transform.matrix[7] == 8); |
| 41 | + CHECK(transform.matrix[8] == 9); |
| 42 | + } |
| 43 | + |
| 44 | + SECTION("sfTransform_getMatrix") |
| 45 | + { |
| 46 | + const auto transform = sfTransform_fromMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9); |
| 47 | + std::array<float, 16> matrix{}; |
| 48 | + matrix.fill(std::numeric_limits<float>::signaling_NaN()); |
| 49 | + sfTransform_getMatrix(&transform, matrix.data()); |
| 50 | + CHECK(matrix[0] == 1); |
| 51 | + CHECK(matrix[1] == 4); |
| 52 | + CHECK(matrix[2] == 0); |
| 53 | + CHECK(matrix[3] == 7); |
| 54 | + CHECK(matrix[4] == 2); |
| 55 | + CHECK(matrix[5] == 5); |
| 56 | + CHECK(matrix[6] == 0); |
| 57 | + CHECK(matrix[7] == 8); |
| 58 | + CHECK(matrix[8] == 0); |
| 59 | + CHECK(matrix[9] == 0); |
| 60 | + CHECK(matrix[10] == 1); |
| 61 | + CHECK(matrix[11] == 0); |
| 62 | + CHECK(matrix[12] == 3); |
| 63 | + CHECK(matrix[13] == 6); |
| 64 | + CHECK(matrix[14] == 0); |
| 65 | + CHECK(matrix[15] == 9); |
| 66 | + } |
| 67 | + |
| 68 | + SECTION("sfTransform_getInverse") |
| 69 | + { |
| 70 | + SECTION("Identity") |
| 71 | + { |
| 72 | + const auto inverse = sfTransform_getInverse(&sfTransform_Identity); |
| 73 | + for (std::size_t i = 0; i < std::size(inverse.matrix); ++i) |
| 74 | + CHECK(inverse.matrix[0] == sfTransform_Identity.matrix[0]); |
| 75 | + } |
| 76 | + |
| 77 | + SECTION("Non-identity") |
| 78 | + { |
| 79 | + const auto transform = sfTransform_fromMatrix(1, 2, 3, 4, 5, 4, 3, 2, 1); |
| 80 | + const auto inverse = sfTransform_getInverse(&transform); |
| 81 | + CHECK(inverse.matrix[0] == 0.375f); |
| 82 | + CHECK(inverse.matrix[1] == -0.5f); |
| 83 | + CHECK(inverse.matrix[2] == 0.875f); |
| 84 | + CHECK(inverse.matrix[3] == -1); |
| 85 | + CHECK(inverse.matrix[4] == 1); |
| 86 | + CHECK(inverse.matrix[5] == -1); |
| 87 | + CHECK(inverse.matrix[6] == 0.875f); |
| 88 | + CHECK(inverse.matrix[7] == -0.5f); |
| 89 | + CHECK(inverse.matrix[8] == 0.375f); |
| 90 | + } |
| 91 | + } |
| 92 | + |
| 93 | + SECTION("sfTransform_transformPoint") |
| 94 | + { |
| 95 | + } |
| 96 | + |
| 97 | + SECTION("sfTransform_transformRect") |
| 98 | + { |
| 99 | + } |
| 100 | + |
| 101 | + SECTION("sfTransform_combine") |
| 102 | + { |
| 103 | + } |
| 104 | + |
| 105 | + SECTION("sfTransform_translate") |
| 106 | + { |
| 107 | + } |
| 108 | + |
| 109 | + SECTION("sfTransform_rotate") |
| 110 | + { |
| 111 | + } |
| 112 | + |
| 113 | + SECTION("sfTransform_rotateWithCenter") |
| 114 | + { |
| 115 | + } |
| 116 | + |
| 117 | + SECTION("sfTransform_scale") |
| 118 | + { |
| 119 | + } |
| 120 | + |
| 121 | + SECTION("sfTransform_scaleWithCenter") |
| 122 | + { |
| 123 | + } |
| 124 | + |
| 125 | + SECTION("sfTransform_equal") |
| 126 | + { |
| 127 | + } |
| 128 | +} |
0 commit comments