xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
test_time_point.cc
浏览该文件的文档.
1#include <gtest/gtest.h>
2
5
11TEST(TestTimePoint, CreateWithDefaultValues) {
12 // 测试默认构造函数
14
15 EXPECT_EQ(timePoint.microseconds_since_epoch(), 0u);
16 EXPECT_FLOAT_EQ(timePoint.seconds_since_epoch(), 0.0f);
17}
18
19TEST(TestTimePoint, CreateFromFloatSeconds) {
20 // 测试从浮点数秒创建
21 xcal::property::TimePoint timePoint(2.75f); // 2.75秒从纪元开始
22
23 EXPECT_EQ(timePoint.microseconds_since_epoch(), 2750000u);
24 EXPECT_FLOAT_EQ(timePoint.seconds_since_epoch(), 2.75f);
25}
26
27TEST(TestTimePoint, SetterMethods) {
28 // 测试设置方法
30
31 timePoint.set_microseconds_since_epoch(1000000u);
32 EXPECT_EQ(timePoint.microseconds_since_epoch(), 1000000u);
33
34 timePoint.set_seconds_since_epoch(1.25f);
35 EXPECT_FLOAT_EQ(timePoint.seconds_since_epoch(), 1.25f);
36}
37
38// TEST(TestTimePoint, NowMethod) {
39// // 测试获取当前时间点
40// xcal::property::TimePoint now = xcal::property::TimePoint::now();
41
42// // 当前时间应该大于纪元时间
43// EXPECT_GT(now.microseconds_since_epoch(), 0u);
44// EXPECT_GT(now.seconds_since_epoch(), 0.0f);
45// }
46
47// TEST(TestTimePoint, TimePointArithmetic) {
48// // 测试时间点运算
49// xcal::property::TimePoint tp1;
50// tp1.set_microseconds_since_epoch(1000000u); // 1秒从纪元开始
51
52// xcal::property::TimeDuration duration =
53// xcal::property::TimeDuration::from_microseconds(500000u); // 0.5秒
54
55// // 时间点加法
56// auto later = tp1 + duration;
57// EXPECT_EQ(later.microseconds_since_epoch(), 1500000u);
58
59// // 时间点减法
60// auto earlier = tp1 - duration;
61// EXPECT_EQ(earlier.microseconds_since_epoch(), 500000u);
62// }
63
64TEST(TestTimePoint, TimePointSubtraction) {
65 // 测试时间点相减得到时间段
67 tp1.set_microseconds_since_epoch(2000000u); // 2秒从纪元开始
68
70 tp2.set_microseconds_since_epoch(500000u); // 0.5秒从纪元开始
71
72 // 时间点相减得到时间段
73 auto duration = tp1 - tp2;
74 EXPECT_EQ(duration.microseconds(), 1500000u);
75 EXPECT_FLOAT_EQ(duration.seconds(), 1.5f);
76}
77
78TEST(TestTimePoint, ComparisonOperations) {
79 // 测试比较运算
81 tp1.set_microseconds_since_epoch(1000000u); // 1秒从纪元开始
82
84 tp2.set_microseconds_since_epoch(2000000u); // 2秒从纪元开始
85
87 tp3.set_microseconds_since_epoch(1000000u); // 1秒从纪元开始
88
89 EXPECT_TRUE(tp1 == tp3);
90 EXPECT_TRUE(tp1 != tp2);
91 EXPECT_TRUE(tp1 < tp2);
92 EXPECT_TRUE(tp2 > tp1);
93 EXPECT_TRUE(tp1 <= tp3);
94 EXPECT_TRUE(tp1 >= tp3);
95 EXPECT_TRUE(tp1 <= tp2);
96 EXPECT_TRUE(tp2 >= tp1);
97}
98
99TEST(TestTimePoint, ToStringConversion) {
100 // 测试字符串转换
102 timePoint.set_microseconds_since_epoch(1234567u); // 1.234567秒从纪元开始
103
104 std::string str = timePoint.to_string();
105 EXPECT_TRUE(str.find("1.234567") != std::string::npos);
106 EXPECT_TRUE(str.find("s since epoch") != std::string::npos);
107}
108
109TEST(TestTimePoint, FormatMethod) {
110 // 测试格式化方法
112 timePoint.set_microseconds_since_epoch(1000000u); // 1秒从纪元开始
113
114 // 格式化方法应该返回有效的字符串
115 std::string formatted = timePoint.format("dummy pattern");
116 EXPECT_FALSE(formatted.empty());
117}
118
119TEST(TestTimePoint, PrecisionConversion) {
120 // 测试精度转换
122 timePoint.set_microseconds_since_epoch(1234567u); // 1.234567秒从纪元开始
123
124 // 验证浮点数转换的精度
125 EXPECT_NEAR(timePoint.seconds_since_epoch(), 1.234567f, 0.000001f);
126}
时间点属性类
std::string to_string() const
转换为字符串表示
void set_microseconds_since_epoch(size_t us)
设置从纪元开始的微秒数
float_t seconds_since_epoch() const
获取从纪元开始的秒数
size_t microseconds_since_epoch() const
获取从纪元开始的微秒数
std::string format(const std::string &) const
格式化时间输出
void set_seconds_since_epoch(float_t seconds)
设置从纪元开始的秒数
TEST(TestTimePoint, CreateWithDefaultValues)
时间点属性测试套件