time_test.cpp
Go to the documentation of this file.
1 #include "ros/duration.h"
2 #include "ros/time.h"
3 #include <gtest/gtest.h>
4 
5 class TestTime : public ::testing::Test {
6 public:
7  static const ros::Time times[];
8  static const ros::Duration durations[];
9  static const int num_times;
10  static const int num_durations;
11 
12  static const ros::Time additions[];
13  static const ros::Time subtractions[];
14 };
15 
16 const ros::Time TestTime::times[] = {
17  {0UL, 0UL}, {0UL, 500000000UL}, {1UL, 500000000UL}};
18 
20  {0L, 0L}, {0L, 500000000L}, {0L, 600000000L},
21  {1L, 600000000L}, {0L, -100000000L}, {-1L, 100000000L}};
22 
23 const int TestTime::num_times = sizeof(TestTime::times) / sizeof(ros::Time);
24 const int TestTime::num_durations =
25  sizeof(TestTime::durations) / sizeof(ros::Duration);
26 
27 const ros::Time TestTime::additions[] = {{0UL, 0UL},
28  {0UL, 500000000UL},
29  {0UL, 600000000UL},
30  {1UL, 600000000UL},
31  {0xFFFFFFFF, 900000000UL},
32  {0xFFFFFFFF, 100000000UL},
33 
34  {0UL, 500000000UL},
35  {1UL, 0UL},
36  {1UL, 100000000UL},
37  {2UL, 100000000UL},
38  {0UL, 400000000UL},
39  {0xFFFFFFFF, 600000000UL},
40 
41  {1UL, 500000000UL},
42  {2UL, 0UL},
43  {2UL, 100000000UL},
44  {3UL, 100000000UL},
45  {1UL, 400000000UL},
46  {0UL, 600000000UL}};
47 
48 const ros::Time TestTime::subtractions[] = {{0L, 0L},
49  {0xFFFFFFFF, 500000000UL},
50  {0xFFFFFFFF, 400000000UL},
51  {0xFFFFFFFF - 1, 400000000UL},
52  {0UL, 100000000UL},
53  {0UL, 900000000UL},
54 
55  {0UL, 500000000UL},
56  {0UL, 0UL},
57  {0xFFFFFFFF, 900000000UL},
58  {0xFFFFFFFF - 1, 900000000UL},
59  {0UL, 600000000UL},
60  {1UL, 400000000UL},
61 
62  {1UL, 500000000UL},
63  {1UL, 0UL},
64  {0UL, 900000000UL},
65  {0xFFFFFFFF, 900000000UL},
66  {1UL, 600000000UL},
67  {2UL, 400000000UL}};
68 
69 TEST_F(TestTime, testAddition) {
70  for (int i = 0; i < num_times; ++i) {
71  for (int j = 0; j < num_durations; ++j) {
72  auto time = times[i];
73  time += durations[j];
74  auto idx = i * num_durations + j;
75  EXPECT_EQ(time.sec, additions[idx].sec)
76  << "Add " << durations[j].sec << "." << durations[j].nsec << " to "
77  << times[i].sec << "." << times[i].nsec;
78  EXPECT_EQ(time.nsec, additions[idx].nsec)
79  << "Add " << durations[j].sec << "." << durations[j].nsec << " to "
80  << times[i].sec << "." << times[i].nsec;
81 
82  auto dur = time - times[i];
83  EXPECT_EQ(dur.sec, durations[j].sec)
84  << "Subtract " << times[i].sec << "." << times[i].nsec << " from "
85  << time.sec << "." << time.nsec;
86  EXPECT_EQ(dur.nsec, durations[j].nsec)
87  << "Subtract " << times[i].sec << "." << times[i].nsec << " from "
88  << time.sec << "." << time.nsec;
89  }
90  }
91 }
92 
93 TEST_F(TestTime, testSubtraction) {
94  for (int i = 0; i < num_times; ++i) {
95  for (int j = 0; j < num_durations; ++j) {
96  auto time = times[i];
97  time -= durations[j];
98  auto idx = i * num_durations + j;
99  EXPECT_EQ(time.sec, subtractions[idx].sec)
100  << "Subtract " << durations[j].sec << "." << durations[j].nsec
101  << " from " << times[i].sec << "." << times[i].nsec;
102  EXPECT_EQ(time.nsec, subtractions[idx].nsec)
103  << "Subtract " << durations[j].sec << "." << durations[j].nsec
104  << " from " << times[i].sec << "." << times[i].nsec;
105 
106  auto dur = times[i] - time;
107  EXPECT_EQ(dur.sec, durations[j].sec)
108  << "Subtract " << time.sec << "." << time.nsec << " from "
109  << times[i].sec << "." << times[i].nsec;
110  EXPECT_EQ(dur.nsec, durations[j].nsec)
111  << "Subtract " << time.sec << "." << time.nsec << " from "
112  << times[i].sec << "." << times[i].nsec;
113  }
114  }
115 }
116 
117 int main(int argc, char **argv) {
118  testing::InitGoogleTest(&argc, argv);
119  return RUN_ALL_TESTS();
120 }
TestTime::additions
static const ros::Time additions[]
Definition: time_test.cpp:12
TestTime
Definition: time_test.cpp:5
main
int main(int argc, char **argv)
Definition: time_test.cpp:117
TestTime::times
static const ros::Time times[]
Definition: time_test.cpp:7
TestTime::durations
static const ros::Duration durations[]
Definition: time_test.cpp:8
TestTime::num_durations
static const int num_durations
Definition: time_test.cpp:10
ros::Time
Definition: time.h:46
TestTime::num_times
static const int num_times
Definition: time_test.cpp:9
TestTime::subtractions
static const ros::Time subtractions[]
Definition: time_test.cpp:13
ros::Duration
Definition: duration.h:46
TEST_F
TEST_F(TestTime, testAddition)
Definition: time_test.cpp:69


rosserial_client
Author(s): Michael Ferguson, Adam Stambler
autogenerated on Wed Mar 2 2022 00:58:01