blob: 3b2770ceb3db4e5965f48ee5253cf3027b153f54 [file] [log] [blame]
Sebastian Jansson30bd4032018-04-13 13:56:17 +02001/*
2 * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Sebastian Jansson6fae6ec2018-05-08 10:43:18 +020011#include "api/units/timestamp.h"
Sebastian Jansson30bd4032018-04-13 13:56:17 +020012#include "test/gtest.h"
13
14namespace webrtc {
15namespace test {
16TEST(TimestampTest, GetBackSameValues) {
17 const int64_t kValue = 499;
18 EXPECT_EQ(Timestamp::ms(kValue).ms(), kValue);
19 EXPECT_EQ(Timestamp::us(kValue).us(), kValue);
Sebastian Janssonf7ffd942018-04-16 11:46:42 +020020 EXPECT_EQ(Timestamp::seconds(kValue).seconds(), kValue);
Sebastian Jansson30bd4032018-04-13 13:56:17 +020021}
22
23TEST(TimestampTest, GetDifferentPrefix) {
24 const int64_t kValue = 3000000;
Sebastian Janssonf7ffd942018-04-16 11:46:42 +020025 EXPECT_EQ(Timestamp::us(kValue).seconds(), kValue / 1000000);
26 EXPECT_EQ(Timestamp::ms(kValue).seconds(), kValue / 1000);
Sebastian Jansson30bd4032018-04-13 13:56:17 +020027 EXPECT_EQ(Timestamp::us(kValue).ms(), kValue / 1000);
28
29 EXPECT_EQ(Timestamp::ms(kValue).us(), kValue * 1000);
Sebastian Janssonf7ffd942018-04-16 11:46:42 +020030 EXPECT_EQ(Timestamp::seconds(kValue).ms(), kValue * 1000);
31 EXPECT_EQ(Timestamp::seconds(kValue).us(), kValue * 1000000);
Sebastian Jansson30bd4032018-04-13 13:56:17 +020032}
33
34TEST(TimestampTest, IdentityChecks) {
35 const int64_t kValue = 3000;
36
37 EXPECT_TRUE(Timestamp::Infinity().IsInfinite());
38 EXPECT_FALSE(Timestamp::ms(kValue).IsInfinite());
39
Sebastian Jansson30bd4032018-04-13 13:56:17 +020040 EXPECT_FALSE(Timestamp::Infinity().IsFinite());
41 EXPECT_TRUE(Timestamp::ms(kValue).IsFinite());
42}
43
44TEST(TimestampTest, ComparisonOperators) {
45 const int64_t kSmall = 450;
46 const int64_t kLarge = 451;
47
48 EXPECT_EQ(Timestamp::Infinity(), Timestamp::Infinity());
Sebastian Janssonec2eb222018-05-24 12:32:05 +020049 EXPECT_GE(Timestamp::Infinity(), Timestamp::Infinity());
50 EXPECT_GT(Timestamp::Infinity(), Timestamp::ms(kLarge));
Sebastian Jansson30bd4032018-04-13 13:56:17 +020051 EXPECT_EQ(Timestamp::ms(kSmall), Timestamp::ms(kSmall));
52 EXPECT_LE(Timestamp::ms(kSmall), Timestamp::ms(kSmall));
53 EXPECT_GE(Timestamp::ms(kSmall), Timestamp::ms(kSmall));
54 EXPECT_NE(Timestamp::ms(kSmall), Timestamp::ms(kLarge));
55 EXPECT_LE(Timestamp::ms(kSmall), Timestamp::ms(kLarge));
56 EXPECT_LT(Timestamp::ms(kSmall), Timestamp::ms(kLarge));
57 EXPECT_GE(Timestamp::ms(kLarge), Timestamp::ms(kSmall));
58 EXPECT_GT(Timestamp::ms(kLarge), Timestamp::ms(kSmall));
59}
60
61TEST(UnitConversionTest, TimestampAndTimeDeltaMath) {
62 const int64_t kValueA = 267;
63 const int64_t kValueB = 450;
64 const Timestamp time_a = Timestamp::ms(kValueA);
65 const Timestamp time_b = Timestamp::ms(kValueB);
66 const TimeDelta delta_a = TimeDelta::ms(kValueA);
67
68 EXPECT_EQ((time_a - time_b), TimeDelta::ms(kValueA - kValueB));
69 EXPECT_EQ((time_b - delta_a), Timestamp::ms(kValueB - kValueA));
70 EXPECT_EQ((time_b + delta_a), Timestamp::ms(kValueB + kValueA));
71}
72} // namespace test
73} // namespace webrtc