You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
5.0 KiB
192 lines
5.0 KiB
/* |
|
* Copyright (C) 2017 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
#include "gtest/gtest.h" |
|
|
|
#include "chre/util/time.h" |
|
|
|
using chre::Seconds; |
|
using chre::Milliseconds; |
|
using chre::Microseconds; |
|
using chre::Nanoseconds; |
|
using chre::kOneSecondInNanoseconds; |
|
using chre::kOneMillisecondInNanoseconds; |
|
using chre::kOneMicrosecondInNanoseconds; |
|
|
|
// Tests for Time constants |
|
TEST(Time, CheckTimeConversionConstants) { |
|
EXPECT_EQ(kOneSecondInNanoseconds, 1e9); |
|
EXPECT_EQ(kOneMillisecondInNanoseconds, 1e6); |
|
EXPECT_EQ(kOneMicrosecondInNanoseconds, 1e3); |
|
} |
|
|
|
// Tests for Seconds |
|
TEST(Time, ConvertSecToNanosec) { |
|
Seconds t(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, ConvertSecToNanosecOverflowIsUint64Max) { |
|
Seconds t(UINT64_MAX / kOneSecondInNanoseconds + 1); |
|
EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX); |
|
} |
|
|
|
// Tests for Milliseconds |
|
TEST(Time, DefaultMillisecIsZero) { |
|
Milliseconds t; |
|
EXPECT_EQ(t.getMilliseconds(), 0); |
|
} |
|
|
|
TEST(Time, GetInitialMillisec) { |
|
Milliseconds t(5); |
|
EXPECT_EQ(t.getMilliseconds(), 5); |
|
} |
|
|
|
TEST(Time, InitializeMillisecFromNanosec) { |
|
Nanoseconds tNano(5 * kOneMillisecondInNanoseconds); |
|
Milliseconds tMilli(tNano); |
|
EXPECT_EQ(tMilli.getMilliseconds(), 5); |
|
} |
|
|
|
TEST(Time, ConvertMillisecToNanosec) { |
|
Milliseconds t(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneMillisecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, ConvertMillisecToNanosecOverflowIsUint64Max) { |
|
Milliseconds t(UINT64_MAX / kOneMillisecondInNanoseconds + 1); |
|
EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX); |
|
} |
|
|
|
TEST(Time, TestMillisecEquals) { |
|
Milliseconds t1(5), t2(5), t3(6); |
|
EXPECT_TRUE(t1 == t2); |
|
EXPECT_FALSE(t1 == t3); |
|
} |
|
|
|
// Tests for Microseconds |
|
TEST(Time, GetInitialMicrosec) { |
|
Microseconds t(5); |
|
EXPECT_EQ(t.getMicroseconds(), 5); |
|
} |
|
|
|
TEST(Time, InitializeMicrosecFromNanosec) { |
|
Nanoseconds tNano(5 * kOneMicrosecondInNanoseconds); |
|
Microseconds tMicro(tNano); |
|
EXPECT_EQ(tMicro.getMicroseconds(), 5); |
|
} |
|
|
|
TEST(Time, ConvertMicrosecToNanosec) { |
|
Microseconds t(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneMicrosecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, ConvertMicrosecToNanosecOverflowIsUint64Max) { |
|
Milliseconds t(UINT64_MAX / kOneMicrosecondInNanoseconds + 1); |
|
EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX); |
|
} |
|
|
|
// Tests for Nanoseconds |
|
TEST(Time, DefaultNanosecIsZero) { |
|
Nanoseconds t; |
|
EXPECT_EQ(t.toRawNanoseconds(), 0); |
|
} |
|
|
|
TEST(Time, GetInitialNanosec) { |
|
Nanoseconds t(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5); |
|
} |
|
|
|
TEST(Time, InitializeNanosecFromSec) { |
|
Seconds tSec(5); |
|
Nanoseconds tNano(tSec); |
|
EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneSecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, InitializeNanosecFromMillisec) { |
|
Milliseconds tMilli(5); |
|
Nanoseconds tNano(tMilli); |
|
EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneMillisecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, InitializeNanosecFromMicrosec) { |
|
Microseconds tMicro(5); |
|
Nanoseconds tNano(tMicro); |
|
EXPECT_EQ(tNano.toRawNanoseconds(), 5 * kOneMicrosecondInNanoseconds); |
|
} |
|
|
|
TEST(Time, NanosecEquals) { |
|
Nanoseconds t1(5), t2(5), t3(6); |
|
EXPECT_TRUE(t1 == t2); |
|
EXPECT_FALSE(t1 == t3); |
|
} |
|
|
|
TEST(Time, NanosecNotEquals) { |
|
Nanoseconds t1(5), t2(5), t3(6); |
|
EXPECT_FALSE(t1 != t2); |
|
EXPECT_TRUE(t1 != t3); |
|
} |
|
|
|
TEST(Time, AddSecToNanosec) { |
|
Nanoseconds t = Seconds(5) + Nanoseconds(6); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds + 6); |
|
} |
|
|
|
TEST(Time, AddSecToNanosecOverflow) { |
|
Nanoseconds t = Seconds(5) + Nanoseconds(UINT64_MAX); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5 * kOneSecondInNanoseconds - 1); |
|
} |
|
|
|
TEST(Time, AddNanosecToNanosec) { |
|
Nanoseconds t = Nanoseconds(6) + Nanoseconds(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 11); |
|
} |
|
|
|
TEST(Time, AddNanosecToNanosecOverflow) { |
|
Nanoseconds t = Nanoseconds(6) + Nanoseconds(UINT64_MAX); |
|
EXPECT_EQ(t.toRawNanoseconds(), 5); |
|
} |
|
|
|
TEST(Time, SubtractNanosecFromNanosec) { |
|
Nanoseconds t = Nanoseconds(11) - Nanoseconds(5); |
|
EXPECT_EQ(t.toRawNanoseconds(), 6); |
|
} |
|
|
|
TEST(Time, SubtractNanosecFromNanosecOverflow) { |
|
Nanoseconds t = Nanoseconds(5) - Nanoseconds(11); |
|
EXPECT_EQ(t.toRawNanoseconds(), UINT64_MAX - 5); |
|
} |
|
|
|
TEST(Time, NanosecGreaterThanEqual) { |
|
Nanoseconds t1(5), t2(5), t3(6); |
|
EXPECT_TRUE(t2 >= t1); |
|
EXPECT_TRUE(t3 >= t1); |
|
EXPECT_FALSE(t1 >= t3); |
|
} |
|
|
|
TEST(Time, NanosecLessThan) { |
|
Nanoseconds t1(5), t2(5), t3(6); |
|
EXPECT_FALSE(t2 < t1); |
|
EXPECT_FALSE(t3 < t1); |
|
EXPECT_TRUE(t1 < t3); |
|
} |
|
|
|
TEST(Time, NanosecGreaterThan) { |
|
Nanoseconds t1(5), t2(5), t3(6); |
|
EXPECT_FALSE(t2 > t1); |
|
EXPECT_TRUE(t3 > t1); |
|
EXPECT_FALSE(t1 > t3); |
|
}
|
|
|