summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIoannis Tzavaras <tzavaras.jannis@gmail.com>2026-03-28 23:40:44 +0200
committerGitHub <noreply@github.com>2026-03-28 21:40:44 +0000
commitfdf0e7a305592668e1b01ea4830d239e5151152c (patch)
tree57ab05d65866573da794bcf590d1b3f02901b26c /tests
parent0be78d099baeecf6b71a2e12c4b9efc9da251c8f (diff)
tests: add unit tests for CHyprColor (#13891)
Diffstat (limited to 'tests')
-rw-r--r--tests/helpers/Color.cpp96
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/helpers/Color.cpp b/tests/helpers/Color.cpp
new file mode 100644
index 00000000..4dd56268
--- /dev/null
+++ b/tests/helpers/Color.cpp
@@ -0,0 +1,96 @@
+#include <helpers/Color.hpp>
+
+#include <gtest/gtest.h>
+
+TEST(Helpers, colorConstructorDefault) {
+ CHyprColor c;
+ EXPECT_DOUBLE_EQ(c.r, 0.0);
+ EXPECT_DOUBLE_EQ(c.g, 0.0);
+ EXPECT_DOUBLE_EQ(c.b, 0.0);
+ EXPECT_DOUBLE_EQ(c.a, 0.0);
+}
+
+TEST(Helpers, colorConstructorFloats) {
+ CHyprColor c(0.5f, 0.25f, 0.75f, 1.0f);
+ EXPECT_FLOAT_EQ(c.r, 0.5);
+ EXPECT_FLOAT_EQ(c.g, 0.25);
+ EXPECT_FLOAT_EQ(c.b, 0.75);
+ EXPECT_FLOAT_EQ(c.a, 1.0);
+}
+
+TEST(Helpers, colorConstructorHex) {
+ // Format: 0xAARRGGBB
+ CHyprColor white(0xFFFFFFFFULL);
+ EXPECT_NEAR(white.r, 1.0, 0.01);
+ EXPECT_NEAR(white.g, 1.0, 0.01);
+ EXPECT_NEAR(white.b, 1.0, 0.01);
+ EXPECT_NEAR(white.a, 1.0, 0.01);
+
+ CHyprColor red(0xFFFF0000ULL);
+ EXPECT_NEAR(red.r, 1.0, 0.01);
+ EXPECT_NEAR(red.g, 0.0, 0.01);
+ EXPECT_NEAR(red.b, 0.0, 0.01);
+ EXPECT_NEAR(red.a, 1.0, 0.01);
+
+ CHyprColor transparent(0x00000000ULL);
+ EXPECT_NEAR(transparent.r, 0.0, 0.01);
+ EXPECT_NEAR(transparent.g, 0.0, 0.01);
+ EXPECT_NEAR(transparent.b, 0.0, 0.01);
+ EXPECT_NEAR(transparent.a, 0.0, 0.01);
+}
+
+TEST(Helpers, colorGetAsHex) {
+ CHyprColor white(1.0f, 1.0f, 1.0f, 1.0f);
+ EXPECT_EQ(white.getAsHex(), 0xFFFFFFFF);
+
+ CHyprColor black(0.0f, 0.0f, 0.0f, 1.0f);
+ EXPECT_EQ(black.getAsHex(), 0xFF000000);
+
+ CHyprColor transparent(0.0f, 0.0f, 0.0f, 0.0f);
+ EXPECT_EQ(transparent.getAsHex(), 0x00000000);
+}
+
+TEST(Helpers, colorStripA) {
+ CHyprColor c(0.5f, 0.25f, 0.75f, 0.3f);
+ CHyprColor stripped = c.stripA();
+
+ EXPECT_FLOAT_EQ(stripped.r, 0.5);
+ EXPECT_FLOAT_EQ(stripped.g, 0.25);
+ EXPECT_FLOAT_EQ(stripped.b, 0.75);
+ EXPECT_FLOAT_EQ(stripped.a, 1.0);
+
+ // original unchanged
+ EXPECT_FLOAT_EQ(c.a, 0.3f);
+}
+
+TEST(Helpers, colorModifyA) {
+ CHyprColor c(0.5f, 0.25f, 0.75f, 1.0f);
+ CHyprColor modified = c.modifyA(0.5f);
+
+ EXPECT_FLOAT_EQ(modified.r, 0.5);
+ EXPECT_FLOAT_EQ(modified.g, 0.25);
+ EXPECT_FLOAT_EQ(modified.b, 0.75);
+ EXPECT_FLOAT_EQ(modified.a, 0.5);
+
+ // original unchanged
+ EXPECT_FLOAT_EQ(c.a, 1.0);
+}
+
+TEST(Helpers, colorEquality) {
+ CHyprColor a(1.0f, 0.0f, 0.0f, 1.0f);
+ CHyprColor b(1.0f, 0.0f, 0.0f, 1.0f);
+ CHyprColor c(0.0f, 1.0f, 0.0f, 1.0f);
+ CHyprColor d(1.0f, 0.0f, 0.0f, 0.5f);
+
+ EXPECT_EQ(a, b);
+ EXPECT_NE(a, c);
+ EXPECT_NE(a, d); // different alpha
+}
+
+TEST(Helpers, colorConstants) {
+ EXPECT_EQ(Colors::WHITE, CHyprColor(1.0f, 1.0f, 1.0f, 1.0f));
+ EXPECT_EQ(Colors::BLACK, CHyprColor(0.0f, 0.0f, 0.0f, 1.0f));
+ EXPECT_EQ(Colors::RED, CHyprColor(1.0f, 0.0f, 0.0f, 1.0f));
+ EXPECT_EQ(Colors::GREEN, CHyprColor(0.0f, 1.0f, 0.0f, 1.0f));
+ EXPECT_EQ(Colors::BLUE, CHyprColor(0.0f, 0.0f, 1.0f, 1.0f));
+}