Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #define TIME_FORMAT_UNITTEST 1 | |
|
bartfab (slow)
2014/02/18 12:04:04
There is no precedent for such a construct in Chro
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 5 #include "ui/base/l10n/time_format.h" | 6 #include "ui/base/l10n/time_format.h" |
| 6 | 7 |
| 7 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 8 #include "base/strings/string16.h" | 9 #include "base/strings/string16.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/time/time.h" | 11 #include "base/time/time.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include "ui/base/l10n/formatter.h" | |
| 12 #include "ui/base/resource/resource_bundle.h" | 14 #include "ui/base/resource/resource_bundle.h" |
| 13 | 15 |
| 14 using base::ASCIIToUTF16; | 16 using base::ASCIIToUTF16; |
| 15 | 17 |
| 16 namespace ui { | 18 namespace ui { |
| 17 namespace { | 19 namespace { |
| 18 | 20 |
| 19 using base::TimeDelta; | 21 using base::TimeDelta; |
| 20 | 22 |
| 21 class TimeFormatTest : public ::testing::Test { | 23 // Subclass TimeFormat to get unqualified access to its methods. |
| 24 class TimeFormatTest : public ::testing::Test, public TimeFormat { | |
|
bartfab (slow)
2014/02/18 12:04:04
I do not think that is the right way of doing thin
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 22 public: | 25 public: |
| 23 static void SetUpTestCase() { | 26 TimeFormatTest() : |
| 27 delta_0s(TimeDelta::FromSeconds(0)), | |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: Why are these member variables? Why not just
Thiemo Nagel
2014/02/19 17:08:44
Some are used in multiple places, others are quite
| |
| 28 delta_1ms(TimeDelta::FromMilliseconds(1)), | |
| 29 delta_499ms(TimeDelta::FromMilliseconds(499)), | |
| 30 delta_500ms(TimeDelta::FromMilliseconds(500)), | |
| 31 delta_999ms(TimeDelta::FromMilliseconds(999)), | |
| 32 delta_1s(TimeDelta::FromSeconds(1)), | |
| 33 delta_1s499ms(delta_1s + delta_499ms), | |
| 34 delta_1s500ms(delta_1s + delta_500ms), | |
| 35 delta_2s(TimeDelta::FromSeconds(2)), | |
| 36 delta_29s(TimeDelta::FromSeconds(29)), | |
| 37 delta_30s(TimeDelta::FromSeconds(30)), | |
| 38 delta_59s(TimeDelta::FromSeconds(59)), | |
| 39 delta_59s499ms(delta_59s + delta_499ms), | |
| 40 delta_59s500ms(delta_59s + delta_500ms), | |
| 41 delta_1m(TimeDelta::FromMinutes(1)), | |
| 42 delta_1m2s(delta_1m + delta_2s), | |
| 43 delta_1m29s999ms(delta_1m + delta_29s + delta_999ms), | |
| 44 delta_1m30s(delta_1m + delta_30s), | |
| 45 delta_2m(TimeDelta::FromMinutes(2)), | |
| 46 delta_2m1s(delta_2m + delta_1s), | |
| 47 delta_29m(TimeDelta::FromMinutes(29)), | |
| 48 delta_30m(TimeDelta::FromMinutes(30)), | |
| 49 delta_59m(TimeDelta::FromMinutes(59)), | |
| 50 delta_59m29s999ms(delta_59m + delta_29s + delta_999ms), | |
| 51 delta_59m30s(delta_59m + delta_30s), | |
| 52 delta_59m59s499ms(delta_59m + delta_59s + delta_499ms), | |
| 53 delta_59m59s500ms(delta_59m + delta_59s + delta_500ms), | |
| 54 delta_1h(TimeDelta::FromHours(1)), | |
| 55 delta_1h2m(delta_1h + delta_2m), | |
| 56 delta_1h29m59s999ms(delta_1h + delta_29m + delta_59s + delta_999ms), | |
| 57 delta_1h30m(delta_1h + delta_30m), | |
| 58 delta_2h(TimeDelta::FromHours(2)), | |
| 59 delta_2h1m(delta_2h + delta_1m), | |
| 60 delta_11h(TimeDelta::FromHours(11)), | |
| 61 delta_12h(TimeDelta::FromHours(12)), | |
| 62 delta_23h(TimeDelta::FromHours(23)), | |
| 63 delta_23h29m59s999ms(delta_23h + delta_29m + delta_59s + delta_999ms), | |
| 64 delta_23h30m(delta_23h + delta_30m), | |
| 65 delta_23h59m29s999ms(delta_23h + delta_59m + delta_29s + delta_999ms), | |
| 66 delta_23h59m30s(delta_23h + delta_59m + delta_30s), | |
| 67 delta_1d(TimeDelta::FromDays(1)), | |
| 68 delta_1d2h(delta_1d + delta_2h), | |
| 69 delta_1d11h59m59s999ms(delta_1d + delta_11h + delta_59m + delta_29s + | |
| 70 delta_999ms), | |
| 71 delta_1d12h(delta_1d + delta_12h), | |
| 72 delta_2d(TimeDelta::FromDays(2)), | |
| 73 delta_2d1h(delta_2d + delta_1h) { | |
| 24 LoadLocale(ui::ResourceBundle::GetSharedInstance() | 74 LoadLocale(ui::ResourceBundle::GetSharedInstance() |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: Setup and cleanup should be happening in SetU
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 25 .GetLocaleFilePath("en-US", true)); | 75 .GetLocaleFilePath("en-US", true)); |
| 26 } | 76 } |
| 27 | 77 |
| 28 static void TearDownTestCase() { | 78 virtual ~TimeFormatTest() { |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: Setup and cleanup should be happening in SetU
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 29 LoadLocale(base::FilePath()); | 79 LoadLocale(base::FilePath()); |
| 30 } | 80 } |
| 31 | 81 |
| 82 protected: | |
| 83 void TestStrings(const FormatterContainer& container) { | |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: Helper functions like this one are not a good
Thiemo Nagel
2014/02/19 17:08:44
I try to avoid duplicating code as it is burdensom
bartfab (slow)
2014/02/20 16:31:22
I agree in general but I have been bitten by this
Thiemo Nagel
2014/02/22 21:44:09
Thanks! I did it that way.
| |
| 84 // Test English strings (simple, singular). | |
| 85 EXPECT_EQ(ASCIIToUTF16("1 sec"), | |
| 86 SimpleForTesting(container, kDuration, kShort, delta_1s)); | |
| 87 EXPECT_EQ(ASCIIToUTF16("1 min"), | |
| 88 SimpleForTesting(container, kDuration, kShort, delta_1m)); | |
| 89 EXPECT_EQ(ASCIIToUTF16("1 hour"), | |
| 90 SimpleForTesting(container, kDuration, kShort, delta_1h)); | |
| 91 EXPECT_EQ(ASCIIToUTF16("1 day"), | |
| 92 SimpleForTesting(container, kDuration, kShort, delta_1d)); | |
| 93 EXPECT_EQ(ASCIIToUTF16("1 second"), | |
| 94 SimpleForTesting(container, kDuration, kLong, delta_1s)); | |
| 95 EXPECT_EQ(ASCIIToUTF16("1 minute"), | |
| 96 SimpleForTesting(container, kDuration, kLong, delta_1m)); | |
| 97 EXPECT_EQ(ASCIIToUTF16("1 hour"), | |
| 98 SimpleForTesting(container, kDuration, kLong, delta_1h)); | |
| 99 EXPECT_EQ(ASCIIToUTF16("1 day"), | |
| 100 SimpleForTesting(container, kDuration, kLong, delta_1d)); | |
| 101 EXPECT_EQ(ASCIIToUTF16("1 sec left"), | |
| 102 SimpleForTesting(container, kRemaining, kShort, delta_1s)); | |
| 103 EXPECT_EQ(ASCIIToUTF16("1 min left"), | |
| 104 SimpleForTesting(container, kRemaining, kShort, delta_1m)); | |
| 105 EXPECT_EQ(ASCIIToUTF16("1 hour left"), | |
| 106 SimpleForTesting(container, kRemaining, kShort, delta_1h)); | |
| 107 EXPECT_EQ(ASCIIToUTF16("1 day left"), | |
| 108 SimpleForTesting(container, kRemaining, kShort, delta_1d)); | |
| 109 EXPECT_EQ(ASCIIToUTF16("1 second left"), | |
| 110 SimpleForTesting(container, kRemaining, kLong, delta_1s)); | |
| 111 EXPECT_EQ(ASCIIToUTF16("1 minute left"), | |
| 112 SimpleForTesting(container, kRemaining, kLong, delta_1m)); | |
| 113 EXPECT_EQ(ASCIIToUTF16("1 hour left"), | |
| 114 SimpleForTesting(container, kRemaining, kLong, delta_1h)); | |
| 115 EXPECT_EQ(ASCIIToUTF16("1 day left"), | |
| 116 SimpleForTesting(container, kRemaining, kLong, delta_1d)); | |
| 117 EXPECT_EQ(ASCIIToUTF16("1 sec ago"), | |
| 118 SimpleForTesting(container, kElapsed, kShort, delta_1s)); | |
| 119 EXPECT_EQ(ASCIIToUTF16("1 min ago"), | |
| 120 SimpleForTesting(container, kElapsed, kShort, delta_1m)); | |
| 121 EXPECT_EQ(ASCIIToUTF16("1 hour ago"), | |
| 122 SimpleForTesting(container, kElapsed, kShort, delta_1h)); | |
| 123 EXPECT_EQ(ASCIIToUTF16("1 day ago"), | |
| 124 SimpleForTesting(container, kElapsed, kShort, delta_1d)); | |
| 125 | |
| 126 // Test English strings (simple, plural). | |
| 127 EXPECT_EQ(ASCIIToUTF16("2 secs"), | |
| 128 SimpleForTesting(container, kDuration, kShort, delta_2s)); | |
| 129 EXPECT_EQ(ASCIIToUTF16("2 mins"), | |
| 130 SimpleForTesting(container, kDuration, kShort, delta_2m)); | |
| 131 EXPECT_EQ(ASCIIToUTF16("2 hours"), | |
| 132 SimpleForTesting(container, kDuration, kShort, delta_2h)); | |
| 133 EXPECT_EQ(ASCIIToUTF16("2 days"), | |
| 134 SimpleForTesting(container, kDuration, kShort, delta_2d)); | |
| 135 EXPECT_EQ(ASCIIToUTF16("2 seconds"), | |
| 136 SimpleForTesting(container, kDuration, kLong, delta_2s)); | |
| 137 EXPECT_EQ(ASCIIToUTF16("2 minutes"), | |
| 138 SimpleForTesting(container, kDuration, kLong, delta_2m)); | |
| 139 EXPECT_EQ(ASCIIToUTF16("2 hours"), | |
| 140 SimpleForTesting(container, kDuration, kLong, delta_2h)); | |
| 141 EXPECT_EQ(ASCIIToUTF16("2 days"), | |
| 142 SimpleForTesting(container, kDuration, kLong, delta_2d)); | |
| 143 EXPECT_EQ(ASCIIToUTF16("2 secs left"), | |
| 144 SimpleForTesting(container, kRemaining, kShort, delta_2s)); | |
| 145 EXPECT_EQ(ASCIIToUTF16("2 mins left"), | |
| 146 SimpleForTesting(container, kRemaining, kShort, delta_2m)); | |
| 147 EXPECT_EQ(ASCIIToUTF16("2 hours left"), | |
| 148 SimpleForTesting(container, kRemaining, kShort, delta_2h)); | |
| 149 EXPECT_EQ(ASCIIToUTF16("2 days left"), | |
| 150 SimpleForTesting(container, kRemaining, kShort, delta_2d)); | |
| 151 EXPECT_EQ(ASCIIToUTF16("2 seconds left"), | |
| 152 SimpleForTesting(container, kRemaining, kLong, delta_2s)); | |
| 153 EXPECT_EQ(ASCIIToUTF16("2 minutes left"), | |
| 154 SimpleForTesting(container, kRemaining, kLong, delta_2m)); | |
| 155 EXPECT_EQ(ASCIIToUTF16("2 hours left"), | |
| 156 SimpleForTesting(container, kRemaining, kLong, delta_2h)); | |
| 157 EXPECT_EQ(ASCIIToUTF16("2 days left"), | |
| 158 SimpleForTesting(container, kRemaining, kLong, delta_2d)); | |
| 159 EXPECT_EQ(ASCIIToUTF16("2 secs ago"), | |
| 160 SimpleForTesting(container, kElapsed, kShort, delta_2s)); | |
| 161 EXPECT_EQ(ASCIIToUTF16("2 mins ago"), | |
| 162 SimpleForTesting(container, kElapsed, kShort, delta_2m)); | |
| 163 EXPECT_EQ(ASCIIToUTF16("2 hours ago"), | |
| 164 SimpleForTesting(container, kElapsed, kShort, delta_2h)); | |
| 165 EXPECT_EQ(ASCIIToUTF16("2 days ago"), | |
| 166 SimpleForTesting(container, kElapsed, kShort, delta_2d)); | |
| 167 | |
| 168 // Test English strings (detailed, singular and plural). | |
| 169 EXPECT_EQ(ASCIIToUTF16("1 minute 2 seconds"), | |
| 170 Detailed(kDuration, kLong, 3, delta_1m2s)); | |
| 171 EXPECT_EQ(ASCIIToUTF16("2 minutes 1 second"), | |
| 172 Detailed(kDuration, kLong, 3, delta_2m1s)); | |
| 173 EXPECT_EQ(ASCIIToUTF16("1 hour 2 minutes"), | |
| 174 Detailed(kDuration, kLong, 3, delta_1h2m)); | |
| 175 EXPECT_EQ(ASCIIToUTF16("2 hours 1 minute"), | |
| 176 Detailed(kDuration, kLong, 3, delta_2h1m)); | |
| 177 EXPECT_EQ(ASCIIToUTF16("1 day 2 hours"), | |
| 178 Detailed(kDuration, kLong, 3, delta_1d2h)); | |
| 179 EXPECT_EQ(ASCIIToUTF16("2 days 1 hour"), | |
| 180 Detailed(kDuration, kLong, 3, delta_2d1h)); | |
| 181 } | |
| 182 | |
| 183 TimeDelta delta_0s, delta_1ms, delta_499ms, delta_500ms, delta_999ms, | |
|
bartfab (slow)
2014/02/18 12:04:04
Nit 1: Members should end with trailing underscore
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 184 delta_1s, delta_1s499ms, delta_1s500ms, delta_2s, delta_29s, delta_30s, | |
| 185 delta_59s, delta_59s499ms, delta_59s500ms, delta_1m, delta_1m2s, | |
| 186 delta_1m29s999ms, delta_1m30s, delta_2m, delta_2m1s, delta_29m, delta_30m, | |
| 187 delta_59m, delta_59m29s999ms, delta_59m30s, delta_59m59s499ms, | |
| 188 delta_59m59s500ms, delta_1h, delta_1h2m, delta_1h29m59s999ms, delta_1h30m, | |
| 189 delta_2h, delta_2h1m, delta_11h, delta_12h, delta_23h, delta_23h29m59s999ms, | |
| 190 delta_23h30m, delta_23h59m29s999ms, delta_23h59m30s, delta_1d, delta_1d2h, | |
| 191 delta_1d11h59m59s999ms, delta_1d12h, delta_2d, delta_2d1h; | |
| 192 | |
| 32 private: | 193 private: |
| 33 static void LoadLocale(const base::FilePath& file_path) { | 194 static void LoadLocale(const base::FilePath& file_path) { |
| 34 ui::ResourceBundle::GetSharedInstance().OverrideLocalePakForTest(file_path); | 195 ui::ResourceBundle::GetSharedInstance().OverrideLocalePakForTest(file_path); |
| 35 ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources("en-US"); | 196 ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources("en-US"); |
| 36 } | 197 } |
| 37 }; | 198 }; |
| 38 | 199 |
| 39 void TestTimeFormats(const TimeDelta& delta, const char* expected_ascii) { | 200 TEST_F(TimeFormatTest, SimpleAndDetailed) { |
| 40 base::string16 expected = ASCIIToUTF16(expected_ascii); | 201 // Test rounding behaviour (simple). |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: s/behaviour/behavior/
Thiemo Nagel
2014/02/19 17:08:44
Done.
| |
| 41 base::string16 expected_left = expected + ASCIIToUTF16(" left"); | 202 EXPECT_EQ(ASCIIToUTF16("0 secs"), Simple(kDuration, kShort, delta_0s)); |
| 42 base::string16 expected_ago = expected + ASCIIToUTF16(" ago"); | 203 EXPECT_EQ(ASCIIToUTF16("0 secs"), Simple(kDuration, kShort, delta_499ms)); |
| 43 EXPECT_EQ(expected, TimeFormat::TimeDurationShort(delta)); | 204 EXPECT_EQ(ASCIIToUTF16("1 sec"), Simple(kDuration, kShort, delta_500ms)); |
| 44 EXPECT_EQ(expected_left, TimeFormat::TimeRemaining(delta)); | 205 EXPECT_EQ(ASCIIToUTF16("1 sec"), Simple(kDuration, kShort, delta_1s499ms)); |
| 45 EXPECT_EQ(expected_ago, TimeFormat::TimeElapsed(delta)); | 206 EXPECT_EQ(ASCIIToUTF16("2 secs"), Simple(kDuration, kShort, delta_1s500ms)); |
| 46 } | 207 EXPECT_EQ(ASCIIToUTF16("59 secs"), Simple(kDuration, kShort, delta_59s499ms)); |
| 208 EXPECT_EQ(ASCIIToUTF16("1 min"), Simple(kDuration, kShort, delta_59s500ms)); | |
| 209 EXPECT_EQ(ASCIIToUTF16("1 min"), Simple(kDuration, kShort, delta_1m29s999ms)); | |
| 210 EXPECT_EQ(ASCIIToUTF16("2 mins"), Simple(kDuration, kShort, delta_1m30s)); | |
| 211 EXPECT_EQ(ASCIIToUTF16("59 mins"), | |
| 212 Simple(kDuration, kShort, delta_59m29s999ms)); | |
| 213 EXPECT_EQ(ASCIIToUTF16("1 hour"), Simple(kDuration, kShort, delta_59m30s)); | |
| 214 EXPECT_EQ(ASCIIToUTF16("1 hour"), | |
| 215 Simple(kDuration, kShort, delta_1h29m59s999ms)); | |
| 216 EXPECT_EQ(ASCIIToUTF16("2 hours"), Simple(kDuration, kShort, delta_1h30m)); | |
| 217 EXPECT_EQ(ASCIIToUTF16("23 hours"), | |
| 218 Simple(kDuration, kShort, delta_23h29m59s999ms)); | |
| 219 EXPECT_EQ(ASCIIToUTF16("1 day"), Simple(kDuration, kShort, delta_23h30m)); | |
| 220 EXPECT_EQ(ASCIIToUTF16("1 day"), | |
| 221 Simple(kDuration, kShort, delta_1d11h59m59s999ms)); | |
| 222 EXPECT_EQ(ASCIIToUTF16("2 days"), Simple(kDuration, kShort, delta_1d12h)); | |
| 47 | 223 |
| 48 TEST_F(TimeFormatTest, FormatTime) { | 224 // Test rounding behaviour (detailed). |
| 49 const TimeDelta one_day = TimeDelta::FromDays(1); | 225 EXPECT_EQ(ASCIIToUTF16("59 seconds"), |
| 50 const TimeDelta one_hour = TimeDelta::FromHours(1); | 226 Detailed(kDuration, kLong, 100, delta_59s499ms)); |
| 51 const TimeDelta one_min = TimeDelta::FromMinutes(1); | 227 EXPECT_EQ(ASCIIToUTF16("1 minute 0 seconds"), |
| 52 const TimeDelta one_second = TimeDelta::FromSeconds(1); | 228 Detailed(kDuration, kLong, 2, delta_59s500ms)); |
| 53 const TimeDelta one_millisecond = TimeDelta::FromMilliseconds(1); | 229 EXPECT_EQ(ASCIIToUTF16("1 minute"), |
| 54 const TimeDelta zero = TimeDelta::FromMilliseconds(0); | 230 Detailed(kDuration, kLong, 1, delta_59s500ms)); |
| 231 EXPECT_EQ(ASCIIToUTF16("59 minutes 59 seconds"), | |
| 232 Detailed(kDuration, kLong, 60, delta_59m59s499ms)); | |
| 233 EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), | |
| 234 Detailed(kDuration, kLong, 59, delta_59m59s499ms)); | |
| 235 EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), | |
| 236 Detailed(kDuration, kLong, 2, delta_59m59s499ms)); | |
| 237 EXPECT_EQ(ASCIIToUTF16("1 hour"), | |
| 238 Detailed(kDuration, kLong, 1, delta_59m59s499ms)); | |
| 239 EXPECT_EQ(ASCIIToUTF16("1 hour"), | |
| 240 Detailed(kDuration, kLong, 1, delta_59m59s500ms)); | |
| 241 EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), | |
| 242 Detailed(kDuration, kLong, 2, delta_59m59s500ms)); | |
| 243 EXPECT_EQ(ASCIIToUTF16("23 hours 59 minutes"), | |
| 244 Detailed(kDuration, kLong, 24, delta_23h59m29s999ms)); | |
| 245 EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), | |
| 246 Detailed(kDuration, kLong, 23, delta_23h59m29s999ms)); | |
| 247 EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), | |
| 248 Detailed(kDuration, kLong, 2, delta_23h59m29s999ms)); | |
| 249 EXPECT_EQ(ASCIIToUTF16("1 day"), | |
| 250 Detailed(kDuration, kLong, 1, delta_23h59m29s999ms)); | |
| 251 EXPECT_EQ(ASCIIToUTF16("1 day"), | |
| 252 Detailed(kDuration, kLong, 1, delta_23h59m30s)); | |
| 253 EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), | |
| 254 Detailed(kDuration, kLong, 2, delta_23h59m30s)); | |
| 55 | 255 |
| 56 TestTimeFormats(zero, "0 secs"); | 256 // Test fallback path in case of translator error. |
| 57 TestTimeFormats(499 * one_millisecond, "0 secs"); | 257 FormatterContainer::SetFallbackForTesting(true); |
| 58 TestTimeFormats(500 * one_millisecond, "1 sec"); | 258 FormatterContainer test_container; |
| 59 TestTimeFormats(1 * one_second + 499 * one_millisecond, "1 sec"); | 259 TestStrings(test_container); |
| 60 TestTimeFormats(1 * one_second + 500 * one_millisecond, "2 secs"); | |
| 61 TestTimeFormats(59 * one_second + 499 * one_millisecond, "59 secs"); | |
| 62 TestTimeFormats(59 * one_second + 500 * one_millisecond, "1 min"); | |
| 63 TestTimeFormats(1 * one_min + 30 * one_second - one_millisecond, "1 min"); | |
| 64 TestTimeFormats(1 * one_min + 30 * one_second, "2 mins"); | |
| 65 TestTimeFormats(59 * one_min + 30 * one_second - one_millisecond, "59 mins"); | |
| 66 TestTimeFormats(59 * one_min + 30 * one_second, "1 hour"); | |
| 67 TestTimeFormats(1 * one_hour + 30 * one_min - one_millisecond, "1 hour"); | |
| 68 TestTimeFormats(1 * one_hour + 30 * one_min, "2 hours"); | |
| 69 TestTimeFormats(23 * one_hour + 30 * one_min - one_millisecond, "23 hours"); | |
| 70 TestTimeFormats(23 * one_hour + 30 * one_min, "1 day"); | |
| 71 TestTimeFormats(1 * one_day + 12 * one_hour - one_millisecond, "1 day"); | |
| 72 TestTimeFormats(1 * one_day + 12 * one_hour, "2 days"); | |
| 73 } | |
| 74 | 260 |
| 75 void TestRemainingLong(const TimeDelta& delta, const std::string& expected) { | 261 // Test default code path. |
| 76 EXPECT_EQ(TimeFormat::TimeRemainingLong(delta), ASCIIToUTF16(expected)); | 262 FormatterContainer::SetFallbackForTesting(false); |
| 77 } | 263 FormatterContainer prod_like_container; |
| 264 TestStrings(prod_like_container); | |
| 78 | 265 |
| 79 TEST_F(TimeFormatTest, TimeRemainingLong) { | 266 #if 0 |
|
bartfab (slow)
2014/02/18 12:04:04
Nit: Do not commit code guarded by an #if 0. If th
Thiemo Nagel
2014/02/19 17:08:44
It is useful for manual tests.
bartfab (slow)
2014/02/20 16:31:22
If you want to use this for manual testing, break
Thiemo Nagel
2014/02/22 21:44:09
As far as I can see, the MANUAL_ prefix only works
| |
| 80 const TimeDelta one_day(TimeDelta::FromDays(1)); | 267 // Enable this code to get some DCHECK() failures. |
| 81 const TimeDelta one_hour(TimeDelta::FromHours(1)); | 268 EXPECT_EQ(ASCIIToUTF16("1 second ago"), |
| 82 const TimeDelta one_min(TimeDelta::FromMinutes(1)); | 269 Simple(kElapsed, kLong, delta_1s)); |
| 83 const TimeDelta one_second(TimeDelta::FromSeconds(1)); | 270 EXPECT_EQ(ASCIIToUTF16("1 min 2 secs"), |
| 84 const TimeDelta one_millisecond(TimeDelta::FromMilliseconds(1)); | 271 Detailed(kDuration, kShort, 100, delta_1m2s)); |
| 85 const TimeDelta zero(TimeDelta::FromMilliseconds(0)); | 272 #endif |
| 86 | |
| 87 TestRemainingLong(zero, "0 seconds left"); | |
| 88 TestRemainingLong(499 * one_millisecond, "0 seconds left"); | |
| 89 TestRemainingLong(500 * one_millisecond, "1 second left"); | |
| 90 TestRemainingLong(one_second + 499 * one_millisecond, "1 second left"); | |
| 91 TestRemainingLong(one_second + 500 * one_millisecond, "2 seconds left"); | |
| 92 TestRemainingLong(59 * one_second + 499 * one_millisecond, "59 seconds left"); | |
| 93 TestRemainingLong(59 * one_second + 500 * one_millisecond, "1 minute left"); | |
| 94 TestRemainingLong(one_min + 30 * one_second - one_millisecond, | |
| 95 "1 minute left"); | |
| 96 TestRemainingLong(one_min + 30 * one_second, "2 minutes left"); | |
| 97 TestRemainingLong(59 * one_min + 30 * one_second - one_millisecond, | |
| 98 "59 minutes left"); | |
| 99 TestRemainingLong(59 * one_min + 30 * one_second, "1 hour left"); | |
| 100 TestRemainingLong(one_hour + 30 * one_min - one_millisecond, "1 hour left"); | |
| 101 TestRemainingLong(one_hour + 30 * one_min, "2 hours left"); | |
| 102 TestRemainingLong(23 * one_hour + 30 * one_min - one_millisecond, | |
| 103 "23 hours left"); | |
| 104 TestRemainingLong(23 * one_hour + 30 * one_min, "1 day left"); | |
| 105 TestRemainingLong(one_day + 12 * one_hour - one_millisecond, "1 day left"); | |
| 106 TestRemainingLong(one_day + 12 * one_hour, "2 days left"); | |
| 107 } | 273 } |
| 108 | 274 |
| 109 // crbug.com/159388: This test fails when daylight savings time ends. | 275 // crbug.com/159388: This test fails when daylight savings time ends. |
| 110 TEST_F(TimeFormatTest, RelativeDate) { | 276 TEST_F(TimeFormatTest, RelativeDate) { |
| 111 base::Time now = base::Time::Now(); | 277 base::Time now = base::Time::Now(); |
| 112 base::string16 today_str = TimeFormat::RelativeDate(now, NULL); | 278 base::string16 today_str = TimeFormat::RelativeDate(now, NULL); |
| 113 EXPECT_EQ(ASCIIToUTF16("Today"), today_str); | 279 EXPECT_EQ(ASCIIToUTF16("Today"), today_str); |
| 114 | 280 |
| 115 base::Time yesterday = now - TimeDelta::FromDays(1); | 281 base::Time yesterday = now - TimeDelta::FromDays(1); |
| 116 base::string16 yesterday_str = TimeFormat::RelativeDate(yesterday, NULL); | 282 base::string16 yesterday_str = TimeFormat::RelativeDate(yesterday, NULL); |
| 117 EXPECT_EQ(ASCIIToUTF16("Yesterday"), yesterday_str); | 283 EXPECT_EQ(ASCIIToUTF16("Yesterday"), yesterday_str); |
| 118 | 284 |
| 119 base::Time two_days_ago = now - TimeDelta::FromDays(2); | 285 base::Time two_days_ago = now - TimeDelta::FromDays(2); |
| 120 base::string16 two_days_ago_str = | 286 base::string16 two_days_ago_str = |
| 121 TimeFormat::RelativeDate(two_days_ago, NULL); | 287 TimeFormat::RelativeDate(two_days_ago, NULL); |
| 122 EXPECT_TRUE(two_days_ago_str.empty()); | 288 EXPECT_TRUE(two_days_ago_str.empty()); |
| 123 | 289 |
| 124 base::Time a_week_ago = now - TimeDelta::FromDays(7); | 290 base::Time a_week_ago = now - TimeDelta::FromDays(7); |
| 125 base::string16 a_week_ago_str = TimeFormat::RelativeDate(a_week_ago, NULL); | 291 base::string16 a_week_ago_str = TimeFormat::RelativeDate(a_week_ago, NULL); |
| 126 EXPECT_TRUE(a_week_ago_str.empty()); | 292 EXPECT_TRUE(a_week_ago_str.empty()); |
| 127 } | 293 } |
| 128 | 294 |
| 129 } // namespace | 295 } // namespace |
| 130 } // namespace ui | 296 } // namespace ui |
| OLD | NEW |