xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
test_color.cc
浏览该文件的文档.
1#include <gtest/gtest.h>
2
4
10TEST(TestColor, CreateWithDefaultValues) {
11 // 测试默认构造函数
13
14 EXPECT_EQ(color.r(), 0.0f);
15 EXPECT_EQ(color.g(), 0.0f);
16 EXPECT_EQ(color.b(), 0.0f);
17 EXPECT_EQ(color.a(), 1.0f);
18}
19
20TEST(TestColor, CreateWithCustomValues) {
21 // 测试自定义参数构造函数
22 xcal::property::Color color{0.5f, 0.6f, 0.7f, 0.8f};
23
24 EXPECT_EQ(color.r(), 0.5f);
25 EXPECT_EQ(color.g(), 0.6f);
26 EXPECT_EQ(color.b(), 0.7f);
27 EXPECT_EQ(color.a(), 0.8f);
28}
29
30TEST(TestColor, CreateWithDefaultAlpha) {
31 // 测试默认透明度构造函数
32 xcal::property::Color color{0.1f, 0.2f, 0.3f};
33
34 EXPECT_EQ(color.r(), 0.1f);
35 EXPECT_EQ(color.g(), 0.2f);
36 EXPECT_EQ(color.b(), 0.3f);
37 EXPECT_EQ(color.a(), 1.0f); // 默认透明度应为 1.0
38}
39
40TEST(TestColor, ModifyColorComponents) {
41 // 测试颜色分量修改功能
43
44 // 修改各个分量
45 color.r() = 0.9f;
46 color.g() = 0.8f;
47 color.b() = 0.7f;
48 color.a() = 0.6f;
49
50 EXPECT_EQ(color.r(), 0.9f);
51 EXPECT_EQ(color.g(), 0.8f);
52 EXPECT_EQ(color.b(), 0.7f);
53 EXPECT_EQ(color.a(), 0.6f);
54}
55
56TEST(TestColor, ToHexConversion) {
57 // 测试十六进制转换功能
58 xcal::property::Color color(1.0f, 0.0f, 0.0f); // 红色
59
60 // 红色应该转换为 0xFF0000
61 size_t hex = color.to_hex();
62 EXPECT_EQ(hex, 0xFF0000u);
63
64 // 绿色测试
65 xcal::property::Color green(0.0f, 1.0f, 0.0f);
66 EXPECT_EQ(green.to_hex(), 0x00FF00u);
67
68 // 蓝色测试
69 xcal::property::Color blue(0.0f, 0.0f, 1.0f);
70 EXPECT_EQ(blue.to_hex(), 0x0000FFu);
71
72 // 混合颜色测试
73 xcal::property::Color mixed(0.5f, 0.5f, 0.5f);
74 EXPECT_EQ(mixed.to_hex(), 0x7F7F7Fu);
75}
76
77TEST(TestColor, ToHexStringConversion) {
78 // 测试十六进制字符串转换功能
79 xcal::property::Color red(1.0f, 0.0f, 0.0f);
80 std::string hexStr = red.to_hex_string();
81
82 // 应该以 # 开头并包含十六进制值
83 EXPECT_TRUE(hexStr.starts_with("#"));
84 EXPECT_GT(hexStr.size(), 1u);
85
86 // 测试其他颜色
87 xcal::property::Color green(0.0f, 1.0f, 0.0f);
88 EXPECT_TRUE(green.to_hex_string().starts_with("#"));
89}
90
91TEST(TestColor, ColorComponentRange) {
92 // 测试颜色分量范围处理
94
95 // 测试超出范围的值(应该被接受)
96 color.r() = 2.0f; // 超出 1.0
97 color.g() = -1.0f; // 负值
98
99 EXPECT_EQ(color.r(), 2.0f);
100 EXPECT_EQ(color.g(), -1.0f);
101
102 // 测试边界值
103 color.r() = 0.0f;
104 color.g() = 1.0f;
105 color.b() = 0.5f;
106
107 EXPECT_EQ(color.r(), 0.0f);
108 EXPECT_EQ(color.g(), 1.0f);
109 EXPECT_EQ(color.b(), 0.5f);
110}
111
112TEST(TestColor, AlphaComponentBehavior) {
113 // 测试透明度分量行为
114 xcal::property::Color transparent(0.5f, 0.5f, 0.5f, 0.0f);
115 EXPECT_EQ(transparent.a(), 0.0f); // 完全透明
116
117 xcal::property::Color opaque(0.5f, 0.5f, 0.5f, 1.0f);
118 EXPECT_EQ(opaque.a(), 1.0f); // 完全不透明
119
120 xcal::property::Color semi(0.5f, 0.5f, 0.5f, 0.5f);
121 EXPECT_EQ(semi.a(), 0.5f); // 半透明
122}
颜色属性类
Definition color.hpp:16
const float_t & r() const
获取红色分量(只读)
Definition color.hpp:45
const float_t & a() const
获取透明度分量(只读)
Definition color.hpp:63
size_t to_hex()
将颜色转换为十六进制数值
Definition color.hpp:94
std::string to_hex_string()
将颜色转换为十六进制字符串
Definition color.hpp:103
const float_t & g() const
获取绿色分量(只读)
Definition color.hpp:51
const float_t & b() const
获取蓝色分量(只读)
Definition color.hpp:57
TEST(TestColor, CreateWithDefaultValues)
颜色属性测试套件
Definition test_color.cc:10