diff options
| author | Ioannis Tzavaras <tzavaras.jannis@gmail.com> | 2026-04-01 02:16:23 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-01 00:16:23 +0100 |
| commit | 36f184ead8120a18cce4e70ae09eddcf331b7833 (patch) | |
| tree | 91d4584d818bf48af0b614bef87dfc871a8efd25 /tests/helpers/MathTransform.cpp | |
| parent | ccdfa4070ee56232fbcd20595e3ba047756cce4d (diff) | |
tests: add unit tests for Math transform utilities (#13935)
Diffstat (limited to 'tests/helpers/MathTransform.cpp')
| -rw-r--r-- | tests/helpers/MathTransform.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/helpers/MathTransform.cpp b/tests/helpers/MathTransform.cpp new file mode 100644 index 00000000..686721b9 --- /dev/null +++ b/tests/helpers/MathTransform.cpp @@ -0,0 +1,73 @@ +#include <helpers/math/Math.hpp> + +#include <gtest/gtest.h> + +using namespace Math; + +// wlTransformToHyprutils + +TEST(Helpers, mathWlTransformToHyprutils) { + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_NORMAL), eTransform::HYPRUTILS_TRANSFORM_NORMAL); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_90), eTransform::HYPRUTILS_TRANSFORM_90); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_180), eTransform::HYPRUTILS_TRANSFORM_180); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_270), eTransform::HYPRUTILS_TRANSFORM_270); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_FLIPPED), eTransform::HYPRUTILS_TRANSFORM_FLIPPED); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_FLIPPED_90), eTransform::HYPRUTILS_TRANSFORM_FLIPPED_90); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_FLIPPED_180), eTransform::HYPRUTILS_TRANSFORM_FLIPPED_180); + EXPECT_EQ(wlTransformToHyprutils(WL_OUTPUT_TRANSFORM_FLIPPED_270), eTransform::HYPRUTILS_TRANSFORM_FLIPPED_270); +} + +TEST(Helpers, mathWlTransformToHyprutilsInvalid) { + // Invalid value falls back to NORMAL + EXPECT_EQ(wlTransformToHyprutils(static_cast<wl_output_transform>(99)), eTransform::HYPRUTILS_TRANSFORM_NORMAL); +} + +// invertTransform + +TEST(Helpers, mathInvertTransformNonRotated) { + // Non-rotated transforms are their own inverse + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_NORMAL), WL_OUTPUT_TRANSFORM_NORMAL); + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_180), WL_OUTPUT_TRANSFORM_180); + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_FLIPPED), WL_OUTPUT_TRANSFORM_FLIPPED); + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_FLIPPED_180), WL_OUTPUT_TRANSFORM_FLIPPED_180); +} + +TEST(Helpers, mathInvertTransformRotated) { + // 90 and 270 swap when inverted (non-flipped) + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_90), WL_OUTPUT_TRANSFORM_270); + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_270), WL_OUTPUT_TRANSFORM_90); +} + +TEST(Helpers, mathInvertTransformFlippedRotated) { + // Flipped rotations: flipped bit stays, 90/270 don't swap + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_FLIPPED_90), WL_OUTPUT_TRANSFORM_FLIPPED_90); + EXPECT_EQ(invertTransform(WL_OUTPUT_TRANSFORM_FLIPPED_270), WL_OUTPUT_TRANSFORM_FLIPPED_270); +} + +TEST(Helpers, mathInvertTransformDoubleInvert) { + // Double invert returns original for all transforms + for (int i = 0; i <= 7; i++) { + auto t = static_cast<wl_output_transform>(i); + EXPECT_EQ(invertTransform(invertTransform(t)), t); + } +} + +// composeTransform + +TEST(Helpers, mathComposeTransformIdentity) { + // Composing with NORMAL is identity + for (int i = 0; i <= 7; i++) { + auto t = static_cast<eTransform>(i); + EXPECT_EQ(composeTransform(t, eTransform::HYPRUTILS_TRANSFORM_NORMAL), t); + EXPECT_EQ(composeTransform(eTransform::HYPRUTILS_TRANSFORM_NORMAL, t), t); + } +} + +TEST(Helpers, mathComposeTransformRotation) { + // 90 + 90 = 180 + EXPECT_EQ(composeTransform(eTransform::HYPRUTILS_TRANSFORM_90, eTransform::HYPRUTILS_TRANSFORM_90), eTransform::HYPRUTILS_TRANSFORM_180); + // 90 + 180 = 270 + EXPECT_EQ(composeTransform(eTransform::HYPRUTILS_TRANSFORM_90, eTransform::HYPRUTILS_TRANSFORM_180), eTransform::HYPRUTILS_TRANSFORM_270); + // 180 + 180 = NORMAL (360) + EXPECT_EQ(composeTransform(eTransform::HYPRUTILS_TRANSFORM_180, eTransform::HYPRUTILS_TRANSFORM_180), eTransform::HYPRUTILS_TRANSFORM_NORMAL); +} |
