Skip to content

Commit 19453d4

Browse files
rudybearmeta-codesync[bot]
authored andcommitted
igl | Add Color and ColorSpace unit tests
Reviewed By: rameshviswanathan Differential Revision: D109746457 fbshipit-source-id: c1f80447332f44dd76f33740c0c607cc4fb04e63
1 parent c101e3c commit 19453d4

1 file changed

Lines changed: 102 additions & 0 deletions

File tree

‎src/igl/tests/ColorTest.cpp‎

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
#include <gtest/gtest.h>
9+
10+
#include <igl/Color.h>
11+
12+
#include <igl/ColorSpace.h>
13+
14+
namespace igl::tests {
15+
16+
// ---------------------------------------------------------------------------
17+
// Color
18+
// ---------------------------------------------------------------------------
19+
20+
TEST(ColorTest, ThreeArgConstructorDefaultsAlphaToOne) {
21+
constexpr Color c(0.1f, 0.2f, 0.3f);
22+
EXPECT_FLOAT_EQ(c.r, 0.1f);
23+
EXPECT_FLOAT_EQ(c.g, 0.2f);
24+
EXPECT_FLOAT_EQ(c.b, 0.3f);
25+
EXPECT_FLOAT_EQ(c.a, 1.0f);
26+
}
27+
28+
TEST(ColorTest, FourArgConstructor) {
29+
constexpr Color c(0.5f, 0.6f, 0.7f, 0.8f);
30+
EXPECT_FLOAT_EQ(c.r, 0.5f);
31+
EXPECT_FLOAT_EQ(c.g, 0.6f);
32+
EXPECT_FLOAT_EQ(c.b, 0.7f);
33+
EXPECT_FLOAT_EQ(c.a, 0.8f);
34+
}
35+
36+
TEST(ColorTest, ZeroColor) {
37+
constexpr Color c(0.0f, 0.0f, 0.0f, 0.0f);
38+
EXPECT_FLOAT_EQ(c.r, 0.0f);
39+
EXPECT_FLOAT_EQ(c.g, 0.0f);
40+
EXPECT_FLOAT_EQ(c.b, 0.0f);
41+
EXPECT_FLOAT_EQ(c.a, 0.0f);
42+
}
43+
44+
TEST(ColorTest, ToFloatPtrPointsToR) {
45+
const Color c(0.1f, 0.2f, 0.3f, 0.4f);
46+
const float* ptr = c.toFloatPtr();
47+
ASSERT_NE(ptr, nullptr);
48+
EXPECT_FLOAT_EQ(ptr[0], 0.1f);
49+
EXPECT_FLOAT_EQ(ptr[1], 0.2f);
50+
EXPECT_FLOAT_EQ(ptr[2], 0.3f);
51+
EXPECT_FLOAT_EQ(ptr[3], 0.4f);
52+
}
53+
54+
TEST(ColorTest, ConstexprConstruction) {
55+
constexpr Color c3(1.0f, 0.0f, 0.0f);
56+
constexpr Color c4(1.0f, 0.0f, 0.0f, 0.5f);
57+
EXPECT_FLOAT_EQ(c3.a, 1.0f);
58+
EXPECT_FLOAT_EQ(c4.a, 0.5f);
59+
}
60+
61+
// ---------------------------------------------------------------------------
62+
// ColorSpace
63+
// ---------------------------------------------------------------------------
64+
65+
TEST(ColorSpaceTest, ToStringCoversAllValues) {
66+
EXPECT_STREQ(colorSpaceToString(ColorSpace::SRGBLinear), "SRGBLinear");
67+
EXPECT_STREQ(colorSpaceToString(ColorSpace::SRGBNonlinear), "SRGBNonlinear");
68+
EXPECT_STREQ(colorSpaceToString(ColorSpace::DisplayP3Nonlinear), "DisplayP3Nonlinear");
69+
EXPECT_STREQ(colorSpaceToString(ColorSpace::ExtendedSRGBLinear), "ExtendedSRGBLinear");
70+
EXPECT_STREQ(colorSpaceToString(ColorSpace::DisplayP3Linear), "DisplayP3Linear");
71+
EXPECT_STREQ(colorSpaceToString(ColorSpace::DCIP3Nonlinear), "DCIP3Nonlinear");
72+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT709Linear), "BT709Linear");
73+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT709Nonlinear), "BT709Nonlinear");
74+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT2020Linear), "BT2020Linear");
75+
EXPECT_STREQ(colorSpaceToString(ColorSpace::HDR10St2084), "HDR10St2084");
76+
EXPECT_STREQ(colorSpaceToString(ColorSpace::DolbyVision), "DolbyVision");
77+
EXPECT_STREQ(colorSpaceToString(ColorSpace::HDR10HLG), "HDR10HLG");
78+
EXPECT_STREQ(colorSpaceToString(ColorSpace::AdobeRGBLinear), "AdobeRGBLinear");
79+
EXPECT_STREQ(colorSpaceToString(ColorSpace::AdobeRGBNonlinear), "AdobeRGBNonlinear");
80+
EXPECT_STREQ(colorSpaceToString(ColorSpace::PassThrough), "PassThrough");
81+
EXPECT_STREQ(colorSpaceToString(ColorSpace::ExtendedSRGBNonlinear), "ExtendedSRGBNonlinear");
82+
EXPECT_STREQ(colorSpaceToString(ColorSpace::DisplayNativeAMD), "DisplayNativeAMD");
83+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT601Nonlinear), "BT601Nonlinear");
84+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT2020Nonlinear), "BT2020Nonlinear");
85+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT2100HLGNonlinear), "BT2100HLGNonlinear");
86+
EXPECT_STREQ(colorSpaceToString(ColorSpace::BT2100PQNonlinear), "BT2100PQNonlinear");
87+
}
88+
89+
TEST(ColorSpaceTest, EnumValuesAreDistinct) {
90+
EXPECT_NE(static_cast<uint8_t>(ColorSpace::SRGBLinear),
91+
static_cast<uint8_t>(ColorSpace::SRGBNonlinear));
92+
EXPECT_NE(static_cast<uint8_t>(ColorSpace::BT2020Linear),
93+
static_cast<uint8_t>(ColorSpace::BT2020Nonlinear));
94+
EXPECT_NE(static_cast<uint8_t>(ColorSpace::HDR10St2084),
95+
static_cast<uint8_t>(ColorSpace::HDR10HLG));
96+
}
97+
98+
TEST(ColorSpaceTest, FirstEnumValueIsZero) {
99+
EXPECT_EQ(static_cast<uint8_t>(ColorSpace::SRGBLinear), 0u);
100+
}
101+
102+
} // namespace igl::tests

0 commit comments

Comments
 (0)