OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/time/time.h" | 5 #include "base/time/time.h" |
6 | 6 |
7 #include <time.h> | 7 #include <time.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <string> | 10 #include <string> |
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 EXPECT_EQ(TimeDelta::FromMilliseconds(500), | 935 EXPECT_EQ(TimeDelta::FromMilliseconds(500), |
936 TimeDelta::FromMilliseconds(1000) / 2); | 936 TimeDelta::FromMilliseconds(1000) / 2); |
937 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), | 937 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), |
938 TimeDelta::FromMilliseconds(1000) *= 2); | 938 TimeDelta::FromMilliseconds(1000) *= 2); |
939 EXPECT_EQ(TimeDelta::FromMilliseconds(500), | 939 EXPECT_EQ(TimeDelta::FromMilliseconds(500), |
940 TimeDelta::FromMilliseconds(1000) /= 2); | 940 TimeDelta::FromMilliseconds(1000) /= 2); |
941 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), | 941 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), |
942 2 * TimeDelta::FromMilliseconds(1000)); | 942 2 * TimeDelta::FromMilliseconds(1000)); |
943 } | 943 } |
944 | 944 |
| 945 bool IsMin(TimeDelta delta) { |
| 946 return (-delta).is_max(); |
| 947 } |
| 948 |
| 949 TEST(TimeDelta, Overflows) { |
| 950 // Some sanity checks. |
| 951 EXPECT_TRUE(TimeDelta::Max().is_max()); |
| 952 EXPECT_TRUE(IsMin(-TimeDelta::Max())); |
| 953 EXPECT_GT(TimeDelta(), -TimeDelta::Max()); |
| 954 |
| 955 TimeDelta large_delta = TimeDelta::Max() - TimeDelta::FromMilliseconds(1); |
| 956 TimeDelta large_negative = -large_delta; |
| 957 EXPECT_GT(TimeDelta(), large_negative); |
| 958 EXPECT_FALSE(large_delta.is_max()); |
| 959 EXPECT_FALSE(IsMin(-large_negative)); |
| 960 TimeDelta one_second = TimeDelta::FromSeconds(1); |
| 961 |
| 962 // Test +, -, * and / operators. |
| 963 EXPECT_TRUE((large_delta + one_second).is_max()); |
| 964 EXPECT_TRUE(IsMin(large_negative + (-one_second))); |
| 965 EXPECT_TRUE(IsMin(large_negative - one_second)); |
| 966 EXPECT_TRUE((large_delta - (-one_second)).is_max()); |
| 967 EXPECT_TRUE((large_delta * 2).is_max()); |
| 968 EXPECT_TRUE(IsMin(large_delta * -2)); |
| 969 EXPECT_TRUE((large_delta / 0.5).is_max()); |
| 970 EXPECT_TRUE(IsMin(large_delta / -0.5)); |
| 971 |
| 972 // Test +=, -=, *= and /= operators. |
| 973 TimeDelta delta = large_delta; |
| 974 delta += one_second; |
| 975 EXPECT_TRUE(delta.is_max()); |
| 976 delta = large_negative; |
| 977 delta += -one_second; |
| 978 EXPECT_TRUE(IsMin(delta)); |
| 979 |
| 980 delta = large_negative; |
| 981 delta -= one_second; |
| 982 EXPECT_TRUE(IsMin(delta)); |
| 983 delta = large_delta; |
| 984 delta -= -one_second; |
| 985 EXPECT_TRUE(delta.is_max()); |
| 986 |
| 987 delta = large_delta; |
| 988 delta *= 2; |
| 989 EXPECT_TRUE(delta.is_max()); |
| 990 delta = large_negative; |
| 991 delta *= 1.5; |
| 992 EXPECT_TRUE(IsMin(delta)); |
| 993 |
| 994 delta = large_delta; |
| 995 delta /= 0.5; |
| 996 EXPECT_TRUE(delta.is_max()); |
| 997 delta = large_negative; |
| 998 delta /= 0.5; |
| 999 EXPECT_TRUE(IsMin(delta)); |
| 1000 |
| 1001 // Test operations with Time and TimeTicks. |
| 1002 EXPECT_TRUE((large_delta + Time::Now()).is_max()); |
| 1003 EXPECT_TRUE((large_delta + TimeTicks::Now()).is_max()); |
| 1004 EXPECT_TRUE((Time::Now() + large_delta).is_max()); |
| 1005 EXPECT_TRUE((TimeTicks::Now() + large_delta).is_max()); |
| 1006 |
| 1007 Time time_now = Time::Now(); |
| 1008 EXPECT_EQ(one_second, (time_now + one_second) - time_now); |
| 1009 EXPECT_EQ(-one_second, (time_now - one_second) - time_now); |
| 1010 |
| 1011 TimeTicks ticks_now = TimeTicks::Now(); |
| 1012 EXPECT_EQ(-one_second, (ticks_now - one_second) - ticks_now); |
| 1013 EXPECT_EQ(one_second, (ticks_now + one_second) - ticks_now); |
| 1014 } |
| 1015 |
945 TEST(TimeDeltaLogging, DCheckEqCompiles) { | 1016 TEST(TimeDeltaLogging, DCheckEqCompiles) { |
946 DCHECK_EQ(TimeDelta(), TimeDelta()); | 1017 DCHECK_EQ(TimeDelta(), TimeDelta()); |
947 } | 1018 } |
948 | 1019 |
949 TEST(TimeDeltaLogging, EmptyIsZero) { | 1020 TEST(TimeDeltaLogging, EmptyIsZero) { |
950 TimeDelta zero; | 1021 TimeDelta zero; |
951 EXPECT_EQ("0s", AnyToString(zero)); | 1022 EXPECT_EQ("0s", AnyToString(zero)); |
952 } | 1023 } |
953 | 1024 |
954 TEST(TimeDeltaLogging, FiveHundredMs) { | 1025 TEST(TimeDeltaLogging, FiveHundredMs) { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1022 | 1093 |
1023 TEST(TimeTicksLogging, DoesNotMakeStreamBad) { | 1094 TEST(TimeTicksLogging, DoesNotMakeStreamBad) { |
1024 std::ostringstream oss; | 1095 std::ostringstream oss; |
1025 oss << TimeTicks(); | 1096 oss << TimeTicks(); |
1026 EXPECT_TRUE(oss.good()); | 1097 EXPECT_TRUE(oss.good()); |
1027 } | 1098 } |
1028 | 1099 |
1029 } // namespace | 1100 } // namespace |
1030 | 1101 |
1031 } // namespace base | 1102 } // namespace base |
OLD | NEW |