| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 #include <time.h> | 8 #include <time.h> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 base::TimeTicks::FromInternalValue(8635916564000); | 716 base::TimeTicks::FromInternalValue(8635916564000); |
| 717 | 717 |
| 718 EXPECT_EQ(8635916564000, | 718 EXPECT_EQ(8635916564000, |
| 719 big_timestamp.SnappedToNextTick(phase, interval).ToInternalValue()); | 719 big_timestamp.SnappedToNextTick(phase, interval).ToInternalValue()); |
| 720 EXPECT_EQ(8635916564000, | 720 EXPECT_EQ(8635916564000, |
| 721 big_timestamp.SnappedToNextTick(big_timestamp, interval) | 721 big_timestamp.SnappedToNextTick(big_timestamp, interval) |
| 722 .ToInternalValue()); | 722 .ToInternalValue()); |
| 723 } | 723 } |
| 724 | 724 |
| 725 TEST(TimeDelta, FromAndIn) { | 725 TEST(TimeDelta, FromAndIn) { |
| 726 EXPECT_TRUE(TimeDelta::FromDays(2) == TimeDelta::FromHours(48)); | 726 // static_assert also checks that the contained expression is a constant |
| 727 EXPECT_TRUE(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180)); | 727 // expression, meaning all its components are suitable for initializing global |
| 728 EXPECT_TRUE(TimeDelta::FromMinutes(2) == TimeDelta::FromSeconds(120)); | 728 // variables. |
| 729 EXPECT_TRUE(TimeDelta::FromSeconds(2) == TimeDelta::FromMilliseconds(2000)); | 729 static_assert(TimeDelta::FromDays(2) == TimeDelta::FromHours(48), ""); |
| 730 EXPECT_TRUE(TimeDelta::FromMilliseconds(2) == | 730 static_assert(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180), ""); |
| 731 TimeDelta::FromMicroseconds(2000)); | 731 static_assert(TimeDelta::FromMinutes(2) == TimeDelta::FromSeconds(120), ""); |
| 732 EXPECT_TRUE(TimeDelta::FromSecondsD(2.3) == | 732 static_assert(TimeDelta::FromSeconds(2) == TimeDelta::FromMilliseconds(2000), |
| 733 TimeDelta::FromMilliseconds(2300)); | 733 ""); |
| 734 EXPECT_TRUE(TimeDelta::FromMillisecondsD(2.5) == | 734 static_assert( |
| 735 TimeDelta::FromMicroseconds(2500)); | 735 TimeDelta::FromMilliseconds(2) == TimeDelta::FromMicroseconds(2000), ""); |
| 736 static_assert( |
| 737 TimeDelta::FromSecondsD(2.3) == TimeDelta::FromMilliseconds(2300), ""); |
| 738 static_assert( |
| 739 TimeDelta::FromMillisecondsD(2.5) == TimeDelta::FromMicroseconds(2500), |
| 740 ""); |
| 736 EXPECT_EQ(13, TimeDelta::FromDays(13).InDays()); | 741 EXPECT_EQ(13, TimeDelta::FromDays(13).InDays()); |
| 737 EXPECT_EQ(13, TimeDelta::FromHours(13).InHours()); | 742 EXPECT_EQ(13, TimeDelta::FromHours(13).InHours()); |
| 738 EXPECT_EQ(13, TimeDelta::FromMinutes(13).InMinutes()); | 743 EXPECT_EQ(13, TimeDelta::FromMinutes(13).InMinutes()); |
| 739 EXPECT_EQ(13, TimeDelta::FromSeconds(13).InSeconds()); | 744 EXPECT_EQ(13, TimeDelta::FromSeconds(13).InSeconds()); |
| 740 EXPECT_EQ(13.0, TimeDelta::FromSeconds(13).InSecondsF()); | 745 EXPECT_EQ(13.0, TimeDelta::FromSeconds(13).InSecondsF()); |
| 741 EXPECT_EQ(13, TimeDelta::FromMilliseconds(13).InMilliseconds()); | 746 EXPECT_EQ(13, TimeDelta::FromMilliseconds(13).InMilliseconds()); |
| 742 EXPECT_EQ(13.0, TimeDelta::FromMilliseconds(13).InMillisecondsF()); | 747 EXPECT_EQ(13.0, TimeDelta::FromMilliseconds(13).InMillisecondsF()); |
| 743 EXPECT_EQ(13, TimeDelta::FromSecondsD(13.1).InSeconds()); | 748 EXPECT_EQ(13, TimeDelta::FromSecondsD(13.1).InSeconds()); |
| 744 EXPECT_EQ(13.1, TimeDelta::FromSecondsD(13.1).InSecondsF()); | 749 EXPECT_EQ(13.1, TimeDelta::FromSecondsD(13.1).InSecondsF()); |
| 745 EXPECT_EQ(13, TimeDelta::FromMillisecondsD(13.3).InMilliseconds()); | 750 EXPECT_EQ(13, TimeDelta::FromMillisecondsD(13.3).InMilliseconds()); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 EXPECT_TRUE(t.is_max()); | 853 EXPECT_TRUE(t.is_max()); |
| 849 | 854 |
| 850 t = TimeDelta::FromHours(std::numeric_limits<int>::max()); | 855 t = TimeDelta::FromHours(std::numeric_limits<int>::max()); |
| 851 EXPECT_TRUE(t.is_max()); | 856 EXPECT_TRUE(t.is_max()); |
| 852 | 857 |
| 853 t = TimeDelta::FromMinutes(std::numeric_limits<int>::max()); | 858 t = TimeDelta::FromMinutes(std::numeric_limits<int>::max()); |
| 854 EXPECT_TRUE(t.is_max()); | 859 EXPECT_TRUE(t.is_max()); |
| 855 | 860 |
| 856 int64_t max_int = std::numeric_limits<int64_t>::max(); | 861 int64_t max_int = std::numeric_limits<int64_t>::max(); |
| 857 | 862 |
| 863 t = TimeDelta::FromSeconds(max_int / Time::kMicrosecondsPerSecond); |
| 864 EXPECT_FALSE(t.is_max()); |
| 858 t = TimeDelta::FromSeconds(max_int / Time::kMicrosecondsPerSecond + 1); | 865 t = TimeDelta::FromSeconds(max_int / Time::kMicrosecondsPerSecond + 1); |
| 859 EXPECT_TRUE(t.is_max()); | 866 EXPECT_TRUE(t.is_max()); |
| 860 | 867 |
| 868 t = TimeDelta::FromMilliseconds(max_int / Time::kMillisecondsPerSecond); |
| 869 EXPECT_FALSE(t.is_max()); |
| 861 t = TimeDelta::FromMilliseconds(max_int / Time::kMillisecondsPerSecond + 1); | 870 t = TimeDelta::FromMilliseconds(max_int / Time::kMillisecondsPerSecond + 1); |
| 862 EXPECT_TRUE(t.is_max()); | 871 EXPECT_TRUE(t.is_max()); |
| 863 | 872 |
| 864 t = TimeDelta::FromMicroseconds(max_int); | 873 t = TimeDelta::FromMicroseconds(max_int); |
| 865 EXPECT_TRUE(t.is_max()); | 874 EXPECT_TRUE(t.is_max()); |
| 866 | 875 |
| 876 t = TimeDelta::FromSeconds(-max_int / Time::kMicrosecondsPerSecond); |
| 877 EXPECT_FALSE(IsMin(t)); |
| 867 t = TimeDelta::FromSeconds(-max_int / Time::kMicrosecondsPerSecond - 1); | 878 t = TimeDelta::FromSeconds(-max_int / Time::kMicrosecondsPerSecond - 1); |
| 868 EXPECT_TRUE(IsMin(t)); | 879 EXPECT_TRUE(IsMin(t)); |
| 869 | 880 |
| 881 t = TimeDelta::FromMilliseconds(-max_int / Time::kMillisecondsPerSecond); |
| 882 EXPECT_FALSE(IsMin(t)); |
| 870 t = TimeDelta::FromMilliseconds(-max_int / Time::kMillisecondsPerSecond - 1); | 883 t = TimeDelta::FromMilliseconds(-max_int / Time::kMillisecondsPerSecond - 1); |
| 871 EXPECT_TRUE(IsMin(t)); | 884 EXPECT_TRUE(IsMin(t)); |
| 872 | 885 |
| 873 t = TimeDelta::FromMicroseconds(-max_int); | 886 t = TimeDelta::FromMicroseconds(-max_int); |
| 874 EXPECT_TRUE(IsMin(t)); | 887 EXPECT_TRUE(IsMin(t)); |
| 875 | 888 |
| 876 t = -TimeDelta::FromMicroseconds(std::numeric_limits<int64_t>::min()); | 889 t = -TimeDelta::FromMicroseconds(std::numeric_limits<int64_t>::min()); |
| 877 EXPECT_FALSE(IsMin(t)); | 890 EXPECT_FALSE(IsMin(t)); |
| 878 | 891 |
| 879 t = TimeDelta::FromSecondsD(std::numeric_limits<double>::infinity()); | 892 t = TimeDelta::FromSecondsD(std::numeric_limits<double>::infinity()); |
| 880 EXPECT_TRUE(t.is_max()); | 893 EXPECT_TRUE(t.is_max()); |
| 881 | 894 |
| 882 double max_d = max_int; | 895 double max_d = max_int; |
| 896 // Converting max_int to double changes its value. |
| 897 EXPECT_EQ(pow(2.0, 63), max_d); |
| 883 | 898 |
| 884 t = TimeDelta::FromSecondsD(max_d / Time::kMicrosecondsPerSecond + 1); | 899 t = TimeDelta::FromSecondsD(max_d / Time::kMicrosecondsPerSecond); |
| 885 EXPECT_TRUE(t.is_max()); | 900 EXPECT_TRUE(t.is_max()); |
| 901 t = TimeDelta::FromSecondsD( |
| 902 nexttoward(max_d / Time::kMicrosecondsPerSecond, 0)); |
| 903 EXPECT_FALSE(t.is_max()); |
| 886 | 904 |
| 887 t = TimeDelta::FromMillisecondsD(std::numeric_limits<double>::infinity()); | 905 t = TimeDelta::FromMillisecondsD(std::numeric_limits<double>::infinity()); |
| 888 EXPECT_TRUE(t.is_max()); | 906 EXPECT_TRUE(t.is_max()); |
| 889 | 907 |
| 890 t = TimeDelta::FromMillisecondsD(max_d / Time::kMillisecondsPerSecond * 2); | 908 t = TimeDelta::FromMillisecondsD(max_d / Time::kMillisecondsPerSecond); |
| 891 EXPECT_TRUE(t.is_max()); | 909 EXPECT_TRUE(t.is_max()) << t; |
| 910 t = TimeDelta::FromMillisecondsD( |
| 911 nexttoward(max_d / Time::kMillisecondsPerSecond, 0)); |
| 912 EXPECT_FALSE(t.is_max()); |
| 892 | 913 |
| 893 t = TimeDelta::FromSecondsD(-max_d / Time::kMicrosecondsPerSecond - 1); | 914 t = TimeDelta::FromSecondsD(-max_d / Time::kMicrosecondsPerSecond); |
| 894 EXPECT_TRUE(IsMin(t)); | 915 EXPECT_TRUE(IsMin(t)); |
| 916 t = TimeDelta::FromSecondsD( |
| 917 nexttoward(-max_d / Time::kMicrosecondsPerSecond, 0)); |
| 918 EXPECT_FALSE(IsMin(t)); |
| 895 | 919 |
| 896 t = TimeDelta::FromMillisecondsD(-max_d / Time::kMillisecondsPerSecond * 2); | 920 t = TimeDelta::FromMillisecondsD(-max_d / Time::kMillisecondsPerSecond); |
| 897 EXPECT_TRUE(IsMin(t)); | 921 EXPECT_TRUE(IsMin(t)) << t; |
| 922 t = TimeDelta::FromMillisecondsD( |
| 923 nexttoward(-max_d / Time::kMillisecondsPerSecond, 0)); |
| 924 EXPECT_FALSE(IsMin(t)); |
| 898 } | 925 } |
| 899 | 926 |
| 900 TEST(TimeDelta, NumericOperators) { | 927 TEST(TimeDelta, NumericOperators) { |
| 901 double d = 0.5; | 928 double d = 0.5; |
| 902 EXPECT_EQ(TimeDelta::FromMilliseconds(500), | 929 EXPECT_EQ(TimeDelta::FromMilliseconds(500), |
| 903 TimeDelta::FromMilliseconds(1000) * d); | 930 TimeDelta::FromMilliseconds(1000) * d); |
| 904 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), | 931 EXPECT_EQ(TimeDelta::FromMilliseconds(2000), |
| 905 TimeDelta::FromMilliseconds(1000) / d); | 932 TimeDelta::FromMilliseconds(1000) / d); |
| 906 EXPECT_EQ(TimeDelta::FromMilliseconds(500), | 933 EXPECT_EQ(TimeDelta::FromMilliseconds(500), |
| 907 TimeDelta::FromMilliseconds(1000) *= d); | 934 TimeDelta::FromMilliseconds(1000) *= d); |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 | 1143 |
| 1117 TEST(TimeTicksLogging, DoesNotMakeStreamBad) { | 1144 TEST(TimeTicksLogging, DoesNotMakeStreamBad) { |
| 1118 std::ostringstream oss; | 1145 std::ostringstream oss; |
| 1119 oss << TimeTicks(); | 1146 oss << TimeTicks(); |
| 1120 EXPECT_TRUE(oss.good()); | 1147 EXPECT_TRUE(oss.good()); |
| 1121 } | 1148 } |
| 1122 | 1149 |
| 1123 } // namespace | 1150 } // namespace |
| 1124 | 1151 |
| 1125 } // namespace base | 1152 } // namespace base |
| OLD | NEW |