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