1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker *
4*d9f75844SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker */
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Worker #include "api/units/time_delta.h"
12*d9f75844SAndroid Build Coastguard Worker
13*d9f75844SAndroid Build Coastguard Worker #include <limits>
14*d9f75844SAndroid Build Coastguard Worker
15*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
16*d9f75844SAndroid Build Coastguard Worker
17*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
18*d9f75844SAndroid Build Coastguard Worker namespace test {
TEST(TimeDeltaTest,ConstExpr)19*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, ConstExpr) {
20*d9f75844SAndroid Build Coastguard Worker constexpr int64_t kValue = -12345;
21*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaZero = TimeDelta::Zero();
22*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaPlusInf = TimeDelta::PlusInfinity();
23*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaMinusInf = TimeDelta::MinusInfinity();
24*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaZero.IsZero(), "");
25*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaPlusInf.IsPlusInfinity(), "");
26*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaMinusInf.IsMinusInfinity(), "");
27*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaPlusInf.ms_or(-1) == -1, "");
28*d9f75844SAndroid Build Coastguard Worker
29*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaPlusInf > kTimeDeltaZero, "");
30*d9f75844SAndroid Build Coastguard Worker
31*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaMinutes = TimeDelta::Minutes(kValue);
32*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaSeconds = TimeDelta::Seconds(kValue);
33*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaMs = TimeDelta::Millis(kValue);
34*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kTimeDeltaUs = TimeDelta::Micros(kValue);
35*d9f75844SAndroid Build Coastguard Worker
36*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaMinutes.seconds_or(0) == kValue * 60, "");
37*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaSeconds.seconds_or(0) == kValue, "");
38*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaMs.ms_or(0) == kValue, "");
39*d9f75844SAndroid Build Coastguard Worker static_assert(kTimeDeltaUs.us_or(0) == kValue, "");
40*d9f75844SAndroid Build Coastguard Worker }
41*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,GetBackSameValues)42*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, GetBackSameValues) {
43*d9f75844SAndroid Build Coastguard Worker const int64_t kValue = 499;
44*d9f75844SAndroid Build Coastguard Worker for (int sign = -1; sign <= 1; ++sign) {
45*d9f75844SAndroid Build Coastguard Worker int64_t value = kValue * sign;
46*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Millis(value).ms(), value);
47*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(value).us(), value);
48*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(value).seconds(), value);
49*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(value).seconds(), value);
50*d9f75844SAndroid Build Coastguard Worker }
51*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Zero().us(), 0);
52*d9f75844SAndroid Build Coastguard Worker }
53*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,GetDifferentPrefix)54*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, GetDifferentPrefix) {
55*d9f75844SAndroid Build Coastguard Worker const int64_t kValue = 3000000;
56*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kValue).seconds(), kValue / 1000000);
57*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Millis(kValue).seconds(), kValue / 1000);
58*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kValue).ms(), kValue / 1000);
59*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Minutes(kValue / 60).seconds(), kValue);
60*d9f75844SAndroid Build Coastguard Worker
61*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Millis(kValue).us(), kValue * 1000);
62*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(kValue).ms(), kValue * 1000);
63*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(kValue).us(), kValue * 1000000);
64*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Minutes(kValue / 60).seconds(), kValue);
65*d9f75844SAndroid Build Coastguard Worker }
66*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,IdentityChecks)67*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, IdentityChecks) {
68*d9f75844SAndroid Build Coastguard Worker const int64_t kValue = 3000;
69*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Zero().IsZero());
70*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::Millis(kValue).IsZero());
71*d9f75844SAndroid Build Coastguard Worker
72*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::PlusInfinity().IsInfinite());
73*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::MinusInfinity().IsInfinite());
74*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::Zero().IsInfinite());
75*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::Millis(-kValue).IsInfinite());
76*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::Millis(kValue).IsInfinite());
77*d9f75844SAndroid Build Coastguard Worker
78*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::PlusInfinity().IsFinite());
79*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::MinusInfinity().IsFinite());
80*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Millis(-kValue).IsFinite());
81*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Millis(kValue).IsFinite());
82*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Zero().IsFinite());
83*d9f75844SAndroid Build Coastguard Worker
84*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::PlusInfinity().IsPlusInfinity());
85*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::MinusInfinity().IsPlusInfinity());
86*d9f75844SAndroid Build Coastguard Worker
87*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::MinusInfinity().IsMinusInfinity());
88*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(TimeDelta::PlusInfinity().IsMinusInfinity());
89*d9f75844SAndroid Build Coastguard Worker }
90*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,ComparisonOperators)91*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, ComparisonOperators) {
92*d9f75844SAndroid Build Coastguard Worker const int64_t kSmall = 450;
93*d9f75844SAndroid Build Coastguard Worker const int64_t kLarge = 451;
94*d9f75844SAndroid Build Coastguard Worker const TimeDelta small = TimeDelta::Millis(kSmall);
95*d9f75844SAndroid Build Coastguard Worker const TimeDelta large = TimeDelta::Millis(kLarge);
96*d9f75844SAndroid Build Coastguard Worker
97*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Zero(), TimeDelta::Millis(0));
98*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::PlusInfinity(), TimeDelta::PlusInfinity());
99*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(small, TimeDelta::Millis(kSmall));
100*d9f75844SAndroid Build Coastguard Worker EXPECT_LE(small, TimeDelta::Millis(kSmall));
101*d9f75844SAndroid Build Coastguard Worker EXPECT_GE(small, TimeDelta::Millis(kSmall));
102*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(small, TimeDelta::Millis(kLarge));
103*d9f75844SAndroid Build Coastguard Worker EXPECT_LE(small, TimeDelta::Millis(kLarge));
104*d9f75844SAndroid Build Coastguard Worker EXPECT_LT(small, TimeDelta::Millis(kLarge));
105*d9f75844SAndroid Build Coastguard Worker EXPECT_GE(large, TimeDelta::Millis(kSmall));
106*d9f75844SAndroid Build Coastguard Worker EXPECT_GT(large, TimeDelta::Millis(kSmall));
107*d9f75844SAndroid Build Coastguard Worker EXPECT_LT(TimeDelta::Zero(), small);
108*d9f75844SAndroid Build Coastguard Worker EXPECT_GT(TimeDelta::Zero(), TimeDelta::Millis(-kSmall));
109*d9f75844SAndroid Build Coastguard Worker EXPECT_GT(TimeDelta::Zero(), TimeDelta::Millis(-kSmall));
110*d9f75844SAndroid Build Coastguard Worker
111*d9f75844SAndroid Build Coastguard Worker EXPECT_GT(TimeDelta::PlusInfinity(), large);
112*d9f75844SAndroid Build Coastguard Worker EXPECT_LT(TimeDelta::MinusInfinity(), TimeDelta::Zero());
113*d9f75844SAndroid Build Coastguard Worker }
114*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,Clamping)115*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, Clamping) {
116*d9f75844SAndroid Build Coastguard Worker const TimeDelta upper = TimeDelta::Millis(800);
117*d9f75844SAndroid Build Coastguard Worker const TimeDelta lower = TimeDelta::Millis(100);
118*d9f75844SAndroid Build Coastguard Worker const TimeDelta under = TimeDelta::Millis(100);
119*d9f75844SAndroid Build Coastguard Worker const TimeDelta inside = TimeDelta::Millis(500);
120*d9f75844SAndroid Build Coastguard Worker const TimeDelta over = TimeDelta::Millis(1000);
121*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(under.Clamped(lower, upper), lower);
122*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(inside.Clamped(lower, upper), inside);
123*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(over.Clamped(lower, upper), upper);
124*d9f75844SAndroid Build Coastguard Worker
125*d9f75844SAndroid Build Coastguard Worker TimeDelta mutable_delta = lower;
126*d9f75844SAndroid Build Coastguard Worker mutable_delta.Clamp(lower, upper);
127*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(mutable_delta, lower);
128*d9f75844SAndroid Build Coastguard Worker mutable_delta = inside;
129*d9f75844SAndroid Build Coastguard Worker mutable_delta.Clamp(lower, upper);
130*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(mutable_delta, inside);
131*d9f75844SAndroid Build Coastguard Worker mutable_delta = over;
132*d9f75844SAndroid Build Coastguard Worker mutable_delta.Clamp(lower, upper);
133*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(mutable_delta, upper);
134*d9f75844SAndroid Build Coastguard Worker }
135*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,CanBeInititializedFromLargeInt)136*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, CanBeInititializedFromLargeInt) {
137*d9f75844SAndroid Build Coastguard Worker const int kMaxInt = std::numeric_limits<int>::max();
138*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(kMaxInt).us(),
139*d9f75844SAndroid Build Coastguard Worker static_cast<int64_t>(kMaxInt) * 1000000);
140*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Millis(kMaxInt).us(),
141*d9f75844SAndroid Build Coastguard Worker static_cast<int64_t>(kMaxInt) * 1000);
142*d9f75844SAndroid Build Coastguard Worker }
143*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,ConvertsToAndFromDouble)144*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, ConvertsToAndFromDouble) {
145*d9f75844SAndroid Build Coastguard Worker const int64_t kMicros = 17017;
146*d9f75844SAndroid Build Coastguard Worker const double kNanosDouble = kMicros * 1e3;
147*d9f75844SAndroid Build Coastguard Worker const double kMicrosDouble = kMicros;
148*d9f75844SAndroid Build Coastguard Worker const double kMillisDouble = kMicros * 1e-3;
149*d9f75844SAndroid Build Coastguard Worker const double kSecondsDouble = kMillisDouble * 1e-3;
150*d9f75844SAndroid Build Coastguard Worker
151*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kMicros).seconds<double>(), kSecondsDouble);
152*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Seconds(kSecondsDouble).us(), kMicros);
153*d9f75844SAndroid Build Coastguard Worker
154*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kMicros).ms<double>(), kMillisDouble);
155*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Millis(kMillisDouble).us(), kMicros);
156*d9f75844SAndroid Build Coastguard Worker
157*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kMicros).us<double>(), kMicrosDouble);
158*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kMicrosDouble).us(), kMicros);
159*d9f75844SAndroid Build Coastguard Worker
160*d9f75844SAndroid Build Coastguard Worker EXPECT_NEAR(TimeDelta::Micros(kMicros).ns<double>(), kNanosDouble, 1);
161*d9f75844SAndroid Build Coastguard Worker
162*d9f75844SAndroid Build Coastguard Worker const double kPlusInfinity = std::numeric_limits<double>::infinity();
163*d9f75844SAndroid Build Coastguard Worker const double kMinusInfinity = -kPlusInfinity;
164*d9f75844SAndroid Build Coastguard Worker
165*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::PlusInfinity().seconds<double>(), kPlusInfinity);
166*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::MinusInfinity().seconds<double>(), kMinusInfinity);
167*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::PlusInfinity().ms<double>(), kPlusInfinity);
168*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::MinusInfinity().ms<double>(), kMinusInfinity);
169*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::PlusInfinity().us<double>(), kPlusInfinity);
170*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::MinusInfinity().us<double>(), kMinusInfinity);
171*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::PlusInfinity().ns<double>(), kPlusInfinity);
172*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::MinusInfinity().ns<double>(), kMinusInfinity);
173*d9f75844SAndroid Build Coastguard Worker
174*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Seconds(kPlusInfinity).IsPlusInfinity());
175*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Seconds(kMinusInfinity).IsMinusInfinity());
176*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Millis(kPlusInfinity).IsPlusInfinity());
177*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Millis(kMinusInfinity).IsMinusInfinity());
178*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Micros(kPlusInfinity).IsPlusInfinity());
179*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(TimeDelta::Micros(kMinusInfinity).IsMinusInfinity());
180*d9f75844SAndroid Build Coastguard Worker }
181*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,MathOperations)182*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, MathOperations) {
183*d9f75844SAndroid Build Coastguard Worker const int64_t kValueA = 267;
184*d9f75844SAndroid Build Coastguard Worker const int64_t kValueB = 450;
185*d9f75844SAndroid Build Coastguard Worker const TimeDelta delta_a = TimeDelta::Millis(kValueA);
186*d9f75844SAndroid Build Coastguard Worker const TimeDelta delta_b = TimeDelta::Millis(kValueB);
187*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((delta_a + delta_b).ms(), kValueA + kValueB);
188*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((delta_a - delta_b).ms(), kValueA - kValueB);
189*d9f75844SAndroid Build Coastguard Worker
190*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((delta_b / 10).ms(), kValueB / 10);
191*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(delta_b / delta_a, static_cast<double>(kValueB) / kValueA);
192*d9f75844SAndroid Build Coastguard Worker
193*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(-kValueA).Abs().us(), kValueA);
194*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(TimeDelta::Micros(kValueA).Abs().us(), kValueA);
195*d9f75844SAndroid Build Coastguard Worker
196*d9f75844SAndroid Build Coastguard Worker TimeDelta mutable_delta = TimeDelta::Millis(kValueA);
197*d9f75844SAndroid Build Coastguard Worker mutable_delta += TimeDelta::Millis(kValueB);
198*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(mutable_delta, TimeDelta::Millis(kValueA + kValueB));
199*d9f75844SAndroid Build Coastguard Worker mutable_delta -= TimeDelta::Millis(kValueB);
200*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(mutable_delta, TimeDelta::Millis(kValueA));
201*d9f75844SAndroid Build Coastguard Worker }
202*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,MultiplyByScalar)203*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, MultiplyByScalar) {
204*d9f75844SAndroid Build Coastguard Worker const TimeDelta kValue = TimeDelta::Micros(267);
205*d9f75844SAndroid Build Coastguard Worker const int64_t kInt64 = 450;
206*d9f75844SAndroid Build Coastguard Worker const int32_t kInt32 = 123;
207*d9f75844SAndroid Build Coastguard Worker const size_t kUnsignedInt = 125;
208*d9f75844SAndroid Build Coastguard Worker const double kFloat = 123.0;
209*d9f75844SAndroid Build Coastguard Worker
210*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((kValue * kInt64).us(), kValue.us() * kInt64);
211*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(kValue * kInt64, kInt64 * kValue);
212*d9f75844SAndroid Build Coastguard Worker
213*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((kValue * kInt32).us(), kValue.us() * kInt32);
214*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(kValue * kInt32, kInt32 * kValue);
215*d9f75844SAndroid Build Coastguard Worker
216*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ((kValue * kUnsignedInt).us(), kValue.us() * int64_t{kUnsignedInt});
217*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(kValue * kUnsignedInt, kUnsignedInt * kValue);
218*d9f75844SAndroid Build Coastguard Worker
219*d9f75844SAndroid Build Coastguard Worker EXPECT_DOUBLE_EQ((kValue * kFloat).us(), kValue.us() * kFloat);
220*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(kValue * kFloat, kFloat * kValue);
221*d9f75844SAndroid Build Coastguard Worker }
222*d9f75844SAndroid Build Coastguard Worker
TEST(TimeDeltaTest,InfinityOperations)223*d9f75844SAndroid Build Coastguard Worker TEST(TimeDeltaTest, InfinityOperations) {
224*d9f75844SAndroid Build Coastguard Worker const int64_t kValue = 267;
225*d9f75844SAndroid Build Coastguard Worker const TimeDelta finite = TimeDelta::Millis(kValue);
226*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((TimeDelta::PlusInfinity() + finite).IsPlusInfinity());
227*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((TimeDelta::PlusInfinity() - finite).IsPlusInfinity());
228*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((finite + TimeDelta::PlusInfinity()).IsPlusInfinity());
229*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((finite - TimeDelta::MinusInfinity()).IsPlusInfinity());
230*d9f75844SAndroid Build Coastguard Worker
231*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((TimeDelta::MinusInfinity() + finite).IsMinusInfinity());
232*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((TimeDelta::MinusInfinity() - finite).IsMinusInfinity());
233*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((finite + TimeDelta::MinusInfinity()).IsMinusInfinity());
234*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE((finite - TimeDelta::PlusInfinity()).IsMinusInfinity());
235*d9f75844SAndroid Build Coastguard Worker }
236*d9f75844SAndroid Build Coastguard Worker } // namespace test
237*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc
238