| Index: base/time/time_unittest.cc
|
| diff --git a/base/time/time_unittest.cc b/base/time/time_unittest.cc
|
| index 8a6a7f517728335660c180788cadcd158abcb78a..5b215fbf94525af222d082ebb3b209539e0db2d0 100644
|
| --- a/base/time/time_unittest.cc
|
| +++ b/base/time/time_unittest.cc
|
| @@ -723,16 +723,21 @@ TEST(TimeTicks, SnappedToNextTickOverflow) {
|
| }
|
|
|
| TEST(TimeDelta, FromAndIn) {
|
| - EXPECT_TRUE(TimeDelta::FromDays(2) == TimeDelta::FromHours(48));
|
| - EXPECT_TRUE(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180));
|
| - EXPECT_TRUE(TimeDelta::FromMinutes(2) == TimeDelta::FromSeconds(120));
|
| - EXPECT_TRUE(TimeDelta::FromSeconds(2) == TimeDelta::FromMilliseconds(2000));
|
| - EXPECT_TRUE(TimeDelta::FromMilliseconds(2) ==
|
| - TimeDelta::FromMicroseconds(2000));
|
| - EXPECT_TRUE(TimeDelta::FromSecondsD(2.3) ==
|
| - TimeDelta::FromMilliseconds(2300));
|
| - EXPECT_TRUE(TimeDelta::FromMillisecondsD(2.5) ==
|
| - TimeDelta::FromMicroseconds(2500));
|
| + // static_assert also checks that the contained expression is a constant
|
| + // expression, meaning all its components are suitable for initializing global
|
| + // variables.
|
| + static_assert(TimeDelta::FromDays(2) == TimeDelta::FromHours(48), "");
|
| + static_assert(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180), "");
|
| + static_assert(TimeDelta::FromMinutes(2) == TimeDelta::FromSeconds(120), "");
|
| + static_assert(TimeDelta::FromSeconds(2) == TimeDelta::FromMilliseconds(2000),
|
| + "");
|
| + static_assert(
|
| + TimeDelta::FromMilliseconds(2) == TimeDelta::FromMicroseconds(2000), "");
|
| + static_assert(
|
| + TimeDelta::FromSecondsD(2.3) == TimeDelta::FromMilliseconds(2300), "");
|
| + static_assert(
|
| + TimeDelta::FromMillisecondsD(2.5) == TimeDelta::FromMicroseconds(2500),
|
| + "");
|
| EXPECT_EQ(13, TimeDelta::FromDays(13).InDays());
|
| EXPECT_EQ(13, TimeDelta::FromHours(13).InHours());
|
| EXPECT_EQ(13, TimeDelta::FromMinutes(13).InMinutes());
|
| @@ -855,18 +860,26 @@ TEST(TimeDelta, MaxConversions) {
|
|
|
| int64_t max_int = std::numeric_limits<int64_t>::max();
|
|
|
| + t = TimeDelta::FromSeconds(max_int / Time::kMicrosecondsPerSecond);
|
| + EXPECT_FALSE(t.is_max());
|
| t = TimeDelta::FromSeconds(max_int / Time::kMicrosecondsPerSecond + 1);
|
| EXPECT_TRUE(t.is_max());
|
|
|
| + t = TimeDelta::FromMilliseconds(max_int / Time::kMillisecondsPerSecond);
|
| + EXPECT_FALSE(t.is_max());
|
| t = TimeDelta::FromMilliseconds(max_int / Time::kMillisecondsPerSecond + 1);
|
| EXPECT_TRUE(t.is_max());
|
|
|
| t = TimeDelta::FromMicroseconds(max_int);
|
| EXPECT_TRUE(t.is_max());
|
|
|
| + t = TimeDelta::FromSeconds(-max_int / Time::kMicrosecondsPerSecond);
|
| + EXPECT_FALSE(IsMin(t));
|
| t = TimeDelta::FromSeconds(-max_int / Time::kMicrosecondsPerSecond - 1);
|
| EXPECT_TRUE(IsMin(t));
|
|
|
| + t = TimeDelta::FromMilliseconds(-max_int / Time::kMillisecondsPerSecond);
|
| + EXPECT_FALSE(IsMin(t));
|
| t = TimeDelta::FromMilliseconds(-max_int / Time::kMillisecondsPerSecond - 1);
|
| EXPECT_TRUE(IsMin(t));
|
|
|
| @@ -880,21 +893,35 @@ TEST(TimeDelta, MaxConversions) {
|
| EXPECT_TRUE(t.is_max());
|
|
|
| double max_d = max_int;
|
| + // Converting max_int to double changes its value.
|
| + EXPECT_EQ(pow(2.0, 63), max_d);
|
|
|
| - t = TimeDelta::FromSecondsD(max_d / Time::kMicrosecondsPerSecond + 1);
|
| + t = TimeDelta::FromSecondsD(max_d / Time::kMicrosecondsPerSecond);
|
| EXPECT_TRUE(t.is_max());
|
| + t = TimeDelta::FromSecondsD(
|
| + nexttoward(max_d / Time::kMicrosecondsPerSecond, 0));
|
| + EXPECT_FALSE(t.is_max());
|
|
|
| t = TimeDelta::FromMillisecondsD(std::numeric_limits<double>::infinity());
|
| EXPECT_TRUE(t.is_max());
|
|
|
| - t = TimeDelta::FromMillisecondsD(max_d / Time::kMillisecondsPerSecond * 2);
|
| - EXPECT_TRUE(t.is_max());
|
| + t = TimeDelta::FromMillisecondsD(max_d / Time::kMillisecondsPerSecond);
|
| + EXPECT_TRUE(t.is_max()) << t;
|
| + t = TimeDelta::FromMillisecondsD(
|
| + nexttoward(max_d / Time::kMillisecondsPerSecond, 0));
|
| + EXPECT_FALSE(t.is_max());
|
|
|
| - t = TimeDelta::FromSecondsD(-max_d / Time::kMicrosecondsPerSecond - 1);
|
| + t = TimeDelta::FromSecondsD(-max_d / Time::kMicrosecondsPerSecond);
|
| EXPECT_TRUE(IsMin(t));
|
| + t = TimeDelta::FromSecondsD(
|
| + nexttoward(-max_d / Time::kMicrosecondsPerSecond, 0));
|
| + EXPECT_FALSE(IsMin(t));
|
|
|
| - t = TimeDelta::FromMillisecondsD(-max_d / Time::kMillisecondsPerSecond * 2);
|
| - EXPECT_TRUE(IsMin(t));
|
| + t = TimeDelta::FromMillisecondsD(-max_d / Time::kMillisecondsPerSecond);
|
| + EXPECT_TRUE(IsMin(t)) << t;
|
| + t = TimeDelta::FromMillisecondsD(
|
| + nexttoward(-max_d / Time::kMillisecondsPerSecond, 0));
|
| + EXPECT_FALSE(IsMin(t));
|
| }
|
|
|
| TEST(TimeDelta, NumericOperators) {
|
|
|