Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Side by Side Diff: ui/base/l10n/time_format_unittest.cc

Issue 147443007: Add support for localized time strings with two units, eg. "2 hours 17 minutes" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More cleanup and documentation Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698