forked from frankaemika/libfranka
-
Notifications
You must be signed in to change notification settings - Fork 2
/
duration_tests.cpp
118 lines (89 loc) · 2.63 KB
/
duration_tests.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Copyright (c) 2017 Franka Emika GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#include <utility>
#include <gtest/gtest.h>
#include <franka/duration.h>
using franka::Duration;
TEST(Duration, CanDefaultConstruct) {
Duration d;
EXPECT_EQ(0u, d.toMSec());
EXPECT_EQ(0.0, d.toSec());
}
TEST(Duration, CanConstructFromMilliseconds) {
Duration d(12345u);
EXPECT_EQ(12345u, d.toMSec());
EXPECT_EQ(12.345, d.toSec());
}
TEST(Duration, CanConstructFromChrono) {
std::chrono::duration<uint64_t, std::milli> chrono_duration(12345u);
Duration d(chrono_duration);
EXPECT_EQ(12345u, d.toMSec());
EXPECT_EQ(12.345, d.toSec());
}
TEST(Duration, CanConvertToChrono) {
Duration d(12345u);
std::chrono::duration<uint64_t, std::milli> chrono_duration = d;
EXPECT_EQ(12345u, chrono_duration.count());
}
TEST(Duration, CanCopy) {
Duration d(12345u);
Duration d2(d);
EXPECT_EQ(12345u, d2.toMSec());
Duration d3;
d3 = d;
EXPECT_EQ(12345u, d2.toMSec());
}
TEST(Duration, CanMove) {
Duration d(12345u);
Duration d2(std::move(d));
EXPECT_EQ(12345u, d2.toMSec());
Duration d3;
d3 = std::move(d);
EXPECT_EQ(12345u, d2.toMSec());
}
TEST(Duration, CanUseArithmeticOperations) {
Duration d1(4u);
Duration d2(3u);
EXPECT_EQ(7u, (d1 + d2).toMSec());
EXPECT_EQ(7u, (d2 + d1).toMSec());
EXPECT_EQ(1u, (d1 - d2).toMSec());
EXPECT_EQ(8u, (d1 * 2).toMSec());
EXPECT_EQ(8u, (2 * d1).toMSec());
EXPECT_EQ(2u, (d1 / 2).toMSec());
EXPECT_EQ(1u, d1 / d2);
EXPECT_EQ(1u, (d1 % d2).toMSec());
EXPECT_EQ(1u, (d1 % 3u).toMSec());
d1 += d2;
EXPECT_EQ(7u, d1.toMSec());
d1 -= d2;
EXPECT_EQ(4u, d1.toMSec());
d1 *= 2;
EXPECT_EQ(8u, d1.toMSec());
d1 /= 2;
EXPECT_EQ(4u, d1.toMSec());
d1 %= 3;
EXPECT_EQ(1u, d1.toMSec());
d1 *= 4;
d1 %= d2;
EXPECT_EQ(1u, d1.toMSec());
}
TEST(Duration, CanCompare) {
EXPECT_TRUE(Duration(1) == Duration(1));
EXPECT_FALSE(Duration(1) == Duration(2));
EXPECT_FALSE(Duration(2) == Duration(1));
EXPECT_FALSE(Duration(1) != Duration(1));
EXPECT_TRUE(Duration(1) != Duration(2));
EXPECT_TRUE(Duration(2) != Duration(1));
EXPECT_TRUE(Duration(1) < Duration(2));
EXPECT_FALSE(Duration(2) < Duration(1));
EXPECT_FALSE(Duration(2) < Duration(2));
EXPECT_FALSE(Duration(1) > Duration(2));
EXPECT_TRUE(Duration(2) > Duration(1));
EXPECT_FALSE(Duration(2) > Duration(2));
EXPECT_TRUE(Duration(1) <= Duration(2));
EXPECT_FALSE(Duration(2) <= Duration(1));
EXPECT_TRUE(Duration(2) <= Duration(2));
EXPECT_FALSE(Duration(1) >= Duration(2));
EXPECT_TRUE(Duration(2) >= Duration(1));
EXPECT_TRUE(Duration(2) >= Duration(2));
}