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.
228 lines
5.9 KiB
228 lines
5.9 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::kOneMicrosecondInNanoseconds;
|
|
using chre::kOneMillisecondInMicroseconds;
|
|
using chre::kOneMillisecondInNanoseconds;
|
|
using chre::kOneSecondInMilliseconds;
|
|
using chre::kOneSecondInNanoseconds;
|
|
using chre::Microseconds;
|
|
using chre::Milliseconds;
|
|
using chre::Nanoseconds;
|
|
using chre::Seconds;
|
|
|
|
// Tests for Time constants
|
|
TEST(Time, CheckTimeConversionConstants) {
|
|
EXPECT_EQ(kOneSecondInNanoseconds, 1e9);
|
|
EXPECT_EQ(kOneMillisecondInNanoseconds, 1e6);
|
|
EXPECT_EQ(kOneMicrosecondInNanoseconds, 1e3);
|
|
EXPECT_EQ(kOneMillisecondInMicroseconds, 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);
|
|
}
|
|
|
|
TEST(Time, ConvertSecToMillisec) {
|
|
Seconds t(5);
|
|
EXPECT_EQ(t.getMilliseconds(), 5 * kOneSecondInMilliseconds);
|
|
}
|
|
|
|
TEST(Time, ConvertSecToMillisecOverflowIsUint64Max) {
|
|
Seconds t(UINT64_MAX / kOneSecondInMilliseconds + 1);
|
|
EXPECT_EQ(t.getMilliseconds(), 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, ConcertMillisecToMicrosec) {
|
|
Milliseconds t(5);
|
|
EXPECT_EQ(t.getMicroseconds(), 5 * kOneMillisecondInMicroseconds);
|
|
}
|
|
|
|
TEST(Time, ConvertMillisecToMicrosecOverflowIsUint64Max) {
|
|
Milliseconds t(UINT64_MAX / kOneMillisecondInMicroseconds + 1);
|
|
EXPECT_EQ(t.getMicroseconds(), UINT64_MAX);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
TEST(Time, ConvertMicrosecToMillisec) {
|
|
Microseconds t(5120);
|
|
EXPECT_EQ(t.getMilliseconds(), 5);
|
|
}
|
|
|
|
// 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, NanosecLessThanEqual) {
|
|
Nanoseconds t1(5), t2(5), t3(6);
|
|
EXPECT_TRUE(t2 <= t1);
|
|
EXPECT_TRUE(t1 <= t3);
|
|
EXPECT_FALSE(t3 <= t1);
|
|
}
|
|
|
|
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);
|
|
}
|