xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
test_time_duration.cc
浏览该文件的文档.
1#include <gtest/gtest.h>
2
4
10TEST(TestTimeDuration, CreateWithDefaultValues) {
11 // 测试默认构造函数
13
14 EXPECT_EQ(duration.microseconds(), 0u);
15 EXPECT_EQ(duration.milliseconds(), 0u);
16 EXPECT_FLOAT_EQ(duration.seconds(), 0.0f);
17 EXPECT_FLOAT_EQ(duration.minutes(), 0.0f);
18 EXPECT_FLOAT_EQ(duration.hours(), 0.0f);
19}
20
21TEST(TestTimeDuration, CreateFromMicroseconds) {
22 // 测试从微秒创建
25
26 EXPECT_EQ(duration.microseconds(), 1500000u);
27 EXPECT_EQ(duration.milliseconds(), 1500u);
28 EXPECT_FLOAT_EQ(duration.seconds(), 1.5f);
29}
30
31TEST(TestTimeDuration, CreateFromFloatSeconds) {
32 // 测试从浮点数秒创建
35
36 EXPECT_EQ(duration.microseconds(), 2750000u);
37 EXPECT_FLOAT_EQ(duration.seconds(), 2.75f);
38}
39
40TEST(TestTimeDuration, StaticFactoryMethods) {
41 // 测试静态工厂方法
43 EXPECT_EQ(fromUs.microseconds(), 500000u);
44
46 EXPECT_EQ(fromMs.milliseconds(), 2500u);
47 EXPECT_EQ(fromMs.microseconds(), 2500000u);
48
50 EXPECT_FLOAT_EQ(fromSec.seconds(), 3.14f);
51
53 EXPECT_FLOAT_EQ(fromMin.minutes(), 1.5f);
54 EXPECT_FLOAT_EQ(fromMin.seconds(), 90.0f);
55
56 auto fromHour = xcal::property::TimeDuration::from_hours(0.5f);
57 EXPECT_FLOAT_EQ(fromHour.hours(), 0.5f);
58 EXPECT_FLOAT_EQ(fromHour.minutes(), 30.0f);
59}
60
61TEST(TestTimeDuration, SetterMethods) {
62 // 测试设置方法
64
65 duration.set_microseconds(1000000u);
66 EXPECT_EQ(duration.microseconds(), 1000000u);
67
68 duration.set_milliseconds(2000u);
69 EXPECT_EQ(duration.milliseconds(), 2000u);
70
71 duration.set_seconds(1.25f);
72 EXPECT_FLOAT_EQ(duration.seconds(), 1.25f);
73
74 duration.set_minutes(2.0f);
75 EXPECT_FLOAT_EQ(duration.minutes(), 2.0f);
76
77 duration.set_hours(0.25f);
78 EXPECT_FLOAT_EQ(duration.hours(), 0.25f);
79}
80
81TEST(TestTimeDuration, ArithmeticOperations) {
82 // 测试算术运算
87
88 // 加法
89 auto sum = d1 + d2;
90 EXPECT_EQ(sum.microseconds(), 1500000u);
91
92 // 减法
93 auto diff = d1 - d2;
94 EXPECT_EQ(diff.microseconds(), 500000u);
95
96 // 乘法
97 auto multiplied = d1 * 3;
98 EXPECT_EQ(multiplied.microseconds(), 3000000u);
99
100 // 除法
101 auto divided = d1 / 2;
102 EXPECT_EQ(divided.microseconds(), 500000u);
103}
104
105TEST(TestTimeDuration, ComparisonOperations) {
106 // 测试比较运算
113
114 EXPECT_TRUE(d1 == d3);
115 EXPECT_TRUE(d1 != d2);
116 EXPECT_TRUE(d1 < d2);
117 EXPECT_TRUE(d2 > d1);
118 EXPECT_TRUE(d1 <= d3);
119 EXPECT_TRUE(d1 >= d3);
120 EXPECT_TRUE(d1 <= d2);
121 EXPECT_TRUE(d2 >= d1);
122}
123
124TEST(TestTimeDuration, ToStringConversion) {
125 // 测试字符串转换
132
133 EXPECT_TRUE(micro.to_string().find("us") != std::string::npos);
134 EXPECT_TRUE(milli.to_string().find("ms") != std::string::npos);
135 EXPECT_TRUE(sec.to_string().find("s") != std::string::npos);
136}
137
138TEST(TestTimeDuration, PrecisionConversion) {
139 // 测试精度转换
142 1234567u); // 1.234567秒
143
144 // 验证浮点数转换的精度
145 EXPECT_NEAR(duration.seconds(), 1.234567f, 0.000001f);
146 EXPECT_NEAR(duration.minutes(), 1.234567f / 60.0f, 0.000001f);
147 EXPECT_NEAR(duration.hours(), 1.234567f / 3600.0f, 0.000001f);
148}
void set_minutes(float_t minutes)
设置分钟数
void set_milliseconds(size_t ms)
设置毫秒值
float_t hours() const
获取小时数
static TimeDuration from_microseconds(size_t us)
从微秒创建时间段
static TimeDuration from_milliseconds(size_t ms)
从毫秒创建时间段
std::string to_string() const
转换为字符串表示
static TimeDuration from_minutes(float_t minutes)
从分钟创建时间段
void set_seconds(float_t seconds)
设置秒数
size_t milliseconds() const
获取毫秒值
size_t microseconds() const
获取微秒值
static TimeDuration from_hours(float_t hours)
从小时创建时间段
float_t minutes() const
获取分钟数
float_t seconds() const
获取秒数
static TimeDuration from_seconds(float_t seconds)
从秒创建时间段
void set_hours(float_t hours)
设置小时数
void set_microseconds(size_t us)
设置微秒值
TEST(TestTimeDuration, CreateWithDefaultValues)
时间段属性测试套件