1df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro/*
2df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * Copyright (C) 2017 The Android Open Source Project
3df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro *
4df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * Licensed under the Apache License, Version 2.0 (the "License");
5df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * you may not use this file except in compliance with the License.
6df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * You may obtain a copy of the License at
7df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro *
8df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro *      http://www.apache.org/licenses/LICENSE-2.0
9df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro *
10df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * Unless required by applicable law or agreed to in writing, software
11df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * distributed under the License is distributed on an "AS IS" BASIS,
12df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * See the License for the specific language governing permissions and
14df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro * limitations under the License.
15df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro */
16df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
17df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro#include "gtest/gtest.h"
18df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
19df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro#include "chre/util/time.h"
20df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
21df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::Seconds;
22df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::Milliseconds;
23df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::Microseconds;
24df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::Nanoseconds;
25df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::kOneSecondInNanoseconds;
26df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::kOneMillisecondInNanoseconds;
27df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishigurousing chre::kOneMicrosecondInNanoseconds;
28df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
29df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro// Tests for Time constants
30df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, CheckTimeConversionConstants) {
31df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(kOneSecondInNanoseconds, 1e9);
32df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(kOneMillisecondInNanoseconds, 1e6);
33df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(kOneMicrosecondInNanoseconds, 1e3);
34df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
35df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
36df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro// Tests for Seconds
37df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertSecToNanosec) {
38df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Seconds t(5);
39df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds);
40df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
41df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
42df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertSecToNanosecOverflowIsUint64Max) {
43df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Seconds t(UINT64_MAX / kOneSecondInNanoseconds + 1);
44df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX);
45df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
46df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
47df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro// Tests for Milliseconds
48df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, DefaultMillisecIsZero) {
49df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t;
50df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.getMilliseconds(), 0);
51df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
52df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
53df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, GetInitialMillisec) {
54df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t(5);
55df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.getMilliseconds(), 5);
56df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
57df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
58df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, InitializeMillisecFromNanosec) {
59df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds tNano(5 * kOneMillisecondInNanoseconds);
60df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds tMilli(tNano);
61df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(tMilli.getMilliseconds(), 5);
62df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
63df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
64df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertMillisecToNanosec) {
65df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t(5);
66df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneMillisecondInNanoseconds);
67df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
68df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
69df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertMillisecToNanosecOverflowIsUint64Max) {
70df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t(UINT64_MAX / kOneMillisecondInNanoseconds + 1);
71df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX);
72df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
73df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
74df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, TestMillisecEquals) {
75df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t1(5), t2(5), t3(6);
76df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t1 == t2);
77df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t1 == t3);
78df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
79df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
80df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro// Tests for Microseconds
81df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, GetInitialMicrosec) {
82df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Microseconds t(5);
83df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.getMicroseconds(), 5);
84df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
85df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
86df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, InitializeMicrosecFromNanosec) {
87df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds tNano(5 * kOneMicrosecondInNanoseconds);
88df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Microseconds tMicro(tNano);
89df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(tMicro.getMicroseconds(), 5);
90df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
91df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
92df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertMicrosecToNanosec) {
93df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Microseconds t(5);
94df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneMicrosecondInNanoseconds);
95df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
96df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
97df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, ConvertMicrosecToNanosecOverflowIsUint64Max) {
98df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds t(UINT64_MAX / kOneMicrosecondInNanoseconds + 1);
99df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX);
100df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
101df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
102df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro// Tests for Nanoseconds
103df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, DefaultNanosecIsZero) {
104df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t;
105df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 0);
106df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
107df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
108df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, GetInitialNanosec) {
109df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t(5);
110df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 5);
111df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
112df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
113df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, InitializeNanosecFromSec) {
114df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Seconds tSec(5);
115df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds tNano(tSec);
116df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneSecondInNanoseconds);
117df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
118df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
119df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, InitializeNanosecFromMillisec) {
120df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Milliseconds tMilli(5);
121df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds tNano(tMilli);
122df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneMillisecondInNanoseconds);
123df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
124df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
125df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, InitializeNanosecFromMicrosec) {
126df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Microseconds tMicro(5);
127df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds tNano(tMicro);
128df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneMicrosecondInNanoseconds);
129df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
130df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
131df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, NanosecEquals) {
132df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t1(5), t2(5), t3(6);
133df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t1 == t2);
134df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t1 == t3);
135df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
136df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
137df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, NanosecNotEquals) {
138df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t1(5), t2(5), t3(6);
139df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t1 != t2);
140df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t1 != t3);
141df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
142df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
143df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, AddSecToNanosec) {
144df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t = Seconds(5) + Nanoseconds(6);
145df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds + 6);
146df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
147df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
148b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan ChungTEST(Time, AddSecToNanosecOverflow) {
149b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  Nanoseconds t = Seconds(5) + Nanoseconds(UINT64_MAX);
150b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds - 1);
151b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung}
152b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung
153df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, AddNanosecToNanosec) {
154df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t = Nanoseconds(6) + Nanoseconds(5);
155df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 11);
156df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
157df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
158b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan ChungTEST(Time, AddNanosecToNanosecOverflow) {
159b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  Nanoseconds t = Nanoseconds(6) + Nanoseconds(UINT64_MAX);
160b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  EXPECT_EQ(t.toRawNanoseconds(), 5);
161b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung}
162b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung
163df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, SubtractNanosecFromNanosec) {
164df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t = Nanoseconds(11) - Nanoseconds(5);
165df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_EQ(t.toRawNanoseconds(), 6);
166df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
167df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
168b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan ChungTEST(Time, SubtractNanosecFromNanosecOverflow) {
169b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  Nanoseconds t = Nanoseconds(5) - Nanoseconds(11);
170b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung  EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX - 5);
171b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung}
172b2ddcf26fc919cb8024ab0536db8362bcb77dfd5Meng-hsuan Chung
173df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, NanosecGreaterThanEqual) {
174df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t1(5), t2(5), t3(6);
175df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t2 >= t1);
176df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t3 >= t1);
177df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t1 >= t3);
178df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
179df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
180df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, NanosecLessThan) {
181df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t1(5), t2(5), t3(6);
182df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t2 < t1);
183df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t3 < t1);
184df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t1 < t3);
185df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
186df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro
187df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur IshiguroTEST(Time, NanosecGreaterThan) {
188df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  Nanoseconds t1(5), t2(5), t3(6);
189df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t2 > t1);
190df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_TRUE(t3 > t1);
191df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro  EXPECT_FALSE(t1 > t3);
192df85b4c9c0a215f67684db3e6bf2d1996ee811d4Arthur Ishiguro}
193