Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / ui / base / l10n / time_format_unittest.cc
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
3 // found in the LICENSE file.
4
5 #include "ui/base/l10n/time_format.h"
6
7 #include "base/files/file_path.h"
8 #include "base/strings/string16.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "base/time/time.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/base/l10n/formatter.h"
13
14 using base::ASCIIToUTF16;
15
16 namespace ui {
17 namespace {
18
19 using base::TimeDelta;
20
21 class TimeFormatTest : public ::testing::Test {
22  public:
23   TimeFormatTest() :
24       delta_0s_(TimeDelta::FromSeconds(0)),
25       delta_1ms_(TimeDelta::FromMilliseconds(1)),
26       delta_499ms_(TimeDelta::FromMilliseconds(499)),
27       delta_500ms_(TimeDelta::FromMilliseconds(500)),
28       delta_999ms_(TimeDelta::FromMilliseconds(999)),
29       delta_1s_(TimeDelta::FromSeconds(1)),
30       delta_1s499ms_(delta_1s_ + delta_499ms_),
31       delta_1s500ms_(delta_1s_ + delta_500ms_),
32       delta_2s_(TimeDelta::FromSeconds(2)),
33       delta_29s_(TimeDelta::FromSeconds(29)),
34       delta_30s_(TimeDelta::FromSeconds(30)),
35       delta_59s_(TimeDelta::FromSeconds(59)),
36       delta_59s499ms_(delta_59s_ + delta_499ms_),
37       delta_59s500ms_(delta_59s_ + delta_500ms_),
38       delta_1m_(TimeDelta::FromMinutes(1)),
39       delta_1m2s_(delta_1m_ + delta_2s_),
40       delta_1m29s999ms_(delta_1m_ + delta_29s_ + delta_999ms_),
41       delta_1m30s_(delta_1m_ + delta_30s_),
42       delta_2m_(TimeDelta::FromMinutes(2)),
43       delta_2m1s_(delta_2m_ + delta_1s_),
44       delta_29m_(TimeDelta::FromMinutes(29)),
45       delta_30m_(TimeDelta::FromMinutes(30)),
46       delta_59m_(TimeDelta::FromMinutes(59)),
47       delta_59m29s999ms_(delta_59m_ + delta_29s_ + delta_999ms_),
48       delta_59m30s_(delta_59m_ + delta_30s_),
49       delta_59m59s499ms_(delta_59m_ + delta_59s_ + delta_499ms_),
50       delta_59m59s500ms_(delta_59m_ + delta_59s_ + delta_500ms_),
51       delta_1h_(TimeDelta::FromHours(1)),
52       delta_1h2m_(delta_1h_ + delta_2m_),
53       delta_1h29m59s999ms_(delta_1h_ + delta_29m_ + delta_59s_ + delta_999ms_),
54       delta_1h30m_(delta_1h_ + delta_30m_),
55       delta_2h_(TimeDelta::FromHours(2)),
56       delta_2h1m_(delta_2h_ + delta_1m_),
57       delta_11h_(TimeDelta::FromHours(11)),
58       delta_12h_(TimeDelta::FromHours(12)),
59       delta_23h_(TimeDelta::FromHours(23)),
60       delta_23h29m59s999ms_(delta_23h_ + delta_29m_ + delta_59s_ +
61                             delta_999ms_),
62       delta_23h30m_(delta_23h_ + delta_30m_),
63       delta_23h59m29s999ms_(delta_23h_ + delta_59m_ + delta_29s_ +
64                             delta_999ms_),
65       delta_23h59m30s_(delta_23h_ + delta_59m_ + delta_30s_),
66       delta_1d_(TimeDelta::FromDays(1)),
67       delta_1d2h_(delta_1d_ + delta_2h_),
68       delta_1d11h59m59s999ms_(delta_1d_ + delta_11h_ + delta_59m_ + delta_29s_ +
69                                   delta_999ms_),
70       delta_1d12h_(delta_1d_ + delta_12h_),
71       delta_2d_(TimeDelta::FromDays(2)),
72       delta_2d1h_(delta_2d_ + delta_1h_)
73   {}
74
75  protected:
76   void TestStrings() {
77     // Test English strings (simple, singular).
78     EXPECT_EQ(ASCIIToUTF16("1 sec"), TimeFormat::Simple(
79         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1s_));
80     EXPECT_EQ(ASCIIToUTF16("1 min"), TimeFormat::Simple(
81         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1m_));
82     EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Simple(
83         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1h_));
84     EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Simple(
85         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1d_));
86     EXPECT_EQ(ASCIIToUTF16("1 second"), TimeFormat::Simple(
87         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_1s_));
88     EXPECT_EQ(ASCIIToUTF16("1 minute"), TimeFormat::Simple(
89         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_1m_));
90     EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Simple(
91         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_1h_));
92     EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Simple(
93         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_1d_));
94     EXPECT_EQ(ASCIIToUTF16("1 sec left"), TimeFormat::Simple(
95         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_1s_));
96     EXPECT_EQ(ASCIIToUTF16("1 min left"), TimeFormat::Simple(
97         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_1m_));
98     EXPECT_EQ(ASCIIToUTF16("1 hour left"), TimeFormat::Simple(
99         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_1h_));
100     EXPECT_EQ(ASCIIToUTF16("1 day left"), TimeFormat::Simple(
101         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_1d_));
102     EXPECT_EQ(ASCIIToUTF16("1 second left"), TimeFormat::Simple(
103         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_1s_));
104     EXPECT_EQ(ASCIIToUTF16("1 minute left"), TimeFormat::Simple(
105         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_1m_));
106     EXPECT_EQ(ASCIIToUTF16("1 hour left"), TimeFormat::Simple(
107         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_1h_));
108     EXPECT_EQ(ASCIIToUTF16("1 day left"), TimeFormat::Simple(
109         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_1d_));
110     EXPECT_EQ(ASCIIToUTF16("1 sec ago"), TimeFormat::Simple(
111         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_1s_));
112     EXPECT_EQ(ASCIIToUTF16("1 min ago"), TimeFormat::Simple(
113         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_1m_));
114     EXPECT_EQ(ASCIIToUTF16("1 hour ago"), TimeFormat::Simple(
115         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_1h_));
116     EXPECT_EQ(ASCIIToUTF16("1 day ago"), TimeFormat::Simple(
117         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_1d_));
118
119     // Test English strings (simple, plural).
120     EXPECT_EQ(ASCIIToUTF16("2 secs"), TimeFormat::Simple(
121         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_2s_));
122     EXPECT_EQ(ASCIIToUTF16("2 mins"), TimeFormat::Simple(
123         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_2m_));
124     EXPECT_EQ(ASCIIToUTF16("2 hours"), TimeFormat::Simple(
125         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_2h_));
126     EXPECT_EQ(ASCIIToUTF16("2 days"), TimeFormat::Simple(
127         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_2d_));
128     EXPECT_EQ(ASCIIToUTF16("2 seconds"), TimeFormat::Simple(
129         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_2s_));
130     EXPECT_EQ(ASCIIToUTF16("2 minutes"), TimeFormat::Simple(
131         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_2m_));
132     EXPECT_EQ(ASCIIToUTF16("2 hours"), TimeFormat::Simple(
133         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_2h_));
134     EXPECT_EQ(ASCIIToUTF16("2 days"), TimeFormat::Simple(
135         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, delta_2d_));
136     EXPECT_EQ(ASCIIToUTF16("2 secs left"), TimeFormat::Simple(
137         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_2s_));
138     EXPECT_EQ(ASCIIToUTF16("2 mins left"), TimeFormat::Simple(
139         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_2m_));
140     EXPECT_EQ(ASCIIToUTF16("2 hours left"), TimeFormat::Simple(
141         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_2h_));
142     EXPECT_EQ(ASCIIToUTF16("2 days left"), TimeFormat::Simple(
143         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_SHORT, delta_2d_));
144     EXPECT_EQ(ASCIIToUTF16("2 seconds left"), TimeFormat::Simple(
145         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_2s_));
146     EXPECT_EQ(ASCIIToUTF16("2 minutes left"), TimeFormat::Simple(
147         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_2m_));
148     EXPECT_EQ(ASCIIToUTF16("2 hours left"), TimeFormat::Simple(
149         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_2h_));
150     EXPECT_EQ(ASCIIToUTF16("2 days left"), TimeFormat::Simple(
151         TimeFormat::FORMAT_REMAINING, TimeFormat::LENGTH_LONG, delta_2d_));
152     EXPECT_EQ(ASCIIToUTF16("2 secs ago"), TimeFormat::Simple(
153         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_2s_));
154     EXPECT_EQ(ASCIIToUTF16("2 mins ago"), TimeFormat::Simple(
155         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_2m_));
156     EXPECT_EQ(ASCIIToUTF16("2 hours ago"), TimeFormat::Simple(
157         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_2h_));
158     EXPECT_EQ(ASCIIToUTF16("2 days ago"), TimeFormat::Simple(
159         TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_SHORT, delta_2d_));
160
161     // Test English strings (detailed, singular and plural).
162     EXPECT_EQ(ASCIIToUTF16("1 minute 2 seconds"), TimeFormat::Detailed(
163         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_1m2s_));
164     EXPECT_EQ(ASCIIToUTF16("2 minutes 1 second"), TimeFormat::Detailed(
165         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_2m1s_));
166     EXPECT_EQ(ASCIIToUTF16("1 hour 2 minutes"), TimeFormat::Detailed(
167         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_1h2m_));
168     EXPECT_EQ(ASCIIToUTF16("2 hours 1 minute"), TimeFormat::Detailed(
169         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_2h1m_));
170     EXPECT_EQ(ASCIIToUTF16("1 day 2 hours"), TimeFormat::Detailed(
171         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_1d2h_));
172     EXPECT_EQ(ASCIIToUTF16("2 days 1 hour"), TimeFormat::Detailed(
173         TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 3, delta_2d1h_));
174   }
175
176   TimeDelta delta_0s_;
177   TimeDelta delta_1ms_;
178   TimeDelta delta_499ms_;
179   TimeDelta delta_500ms_;
180   TimeDelta delta_999ms_;
181   TimeDelta delta_1s_;
182   TimeDelta delta_1s499ms_;
183   TimeDelta delta_1s500ms_;
184   TimeDelta delta_2s_;
185   TimeDelta delta_29s_;
186   TimeDelta delta_30s_;
187   TimeDelta delta_59s_;
188   TimeDelta delta_59s499ms_;
189   TimeDelta delta_59s500ms_;
190   TimeDelta delta_1m_;
191   TimeDelta delta_1m2s_;
192   TimeDelta delta_1m29s999ms_;
193   TimeDelta delta_1m30s_;
194   TimeDelta delta_2m_;
195   TimeDelta delta_2m1s_;
196   TimeDelta delta_29m_;
197   TimeDelta delta_30m_;
198   TimeDelta delta_59m_;
199   TimeDelta delta_59m29s999ms_;
200   TimeDelta delta_59m30s_;
201   TimeDelta delta_59m59s499ms_;
202   TimeDelta delta_59m59s500ms_;
203   TimeDelta delta_1h_;
204   TimeDelta delta_1h2m_;
205   TimeDelta delta_1h29m59s999ms_;
206   TimeDelta delta_1h30m_;
207   TimeDelta delta_2h_;
208   TimeDelta delta_2h1m_;
209   TimeDelta delta_11h_;
210   TimeDelta delta_12h_;
211   TimeDelta delta_23h_;
212   TimeDelta delta_23h29m59s999ms_;
213   TimeDelta delta_23h30m_;
214   TimeDelta delta_23h59m29s999ms_;
215   TimeDelta delta_23h59m30s_;
216   TimeDelta delta_1d_;
217   TimeDelta delta_1d2h_;
218   TimeDelta delta_1d11h59m59s999ms_;
219   TimeDelta delta_1d12h_;
220   TimeDelta delta_2d_;
221   TimeDelta delta_2d1h_;
222 };
223
224 TEST_F(TimeFormatTest, SimpleAndDetailedRounding) {
225   // Test rounding behavior (simple).
226   EXPECT_EQ(ASCIIToUTF16("0 secs"), TimeFormat::Simple(
227       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_0s_));
228   EXPECT_EQ(ASCIIToUTF16("0 secs"), TimeFormat::Simple(
229       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_499ms_));
230   EXPECT_EQ(ASCIIToUTF16("1 sec"), TimeFormat::Simple(
231       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_500ms_));
232   EXPECT_EQ(ASCIIToUTF16("1 sec"), TimeFormat::Simple(
233       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1s499ms_));
234   EXPECT_EQ(ASCIIToUTF16("2 secs"), TimeFormat::Simple(
235       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1s500ms_));
236   EXPECT_EQ(ASCIIToUTF16("59 secs"), TimeFormat::Simple(
237       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_59s499ms_));
238   EXPECT_EQ(ASCIIToUTF16("1 min"), TimeFormat::Simple(
239       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_59s500ms_));
240   EXPECT_EQ(ASCIIToUTF16("1 min"), TimeFormat::Simple(
241       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT,
242       delta_1m29s999ms_));
243   EXPECT_EQ(ASCIIToUTF16("2 mins"), TimeFormat::Simple(
244       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1m30s_));
245   EXPECT_EQ(ASCIIToUTF16("59 mins"), TimeFormat::Simple(
246       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT,
247       delta_59m29s999ms_));
248   EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Simple(
249       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_59m30s_));
250   EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Simple(
251       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT,
252       delta_1h29m59s999ms_));
253   EXPECT_EQ(ASCIIToUTF16("2 hours"), TimeFormat::Simple(
254       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1h30m_));
255   EXPECT_EQ(ASCIIToUTF16("23 hours"), TimeFormat::Simple(
256       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT,
257       delta_23h29m59s999ms_));
258   EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Simple(
259       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_23h30m_));
260   EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Simple(
261       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT,
262       delta_1d11h59m59s999ms_));
263   EXPECT_EQ(ASCIIToUTF16("2 days"), TimeFormat::Simple(
264       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_SHORT, delta_1d12h_));
265
266   // Test rounding behavior (detailed).
267   EXPECT_EQ(ASCIIToUTF16("59 seconds"), TimeFormat::Detailed(
268       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 100,
269       delta_59s499ms_));
270   EXPECT_EQ(ASCIIToUTF16("1 minute 0 seconds"), TimeFormat::Detailed(
271       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 2,
272       delta_59s500ms_));
273   EXPECT_EQ(ASCIIToUTF16("1 minute"), TimeFormat::Detailed(
274       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 1,
275       delta_59s500ms_));
276   EXPECT_EQ(ASCIIToUTF16("59 minutes 59 seconds"), TimeFormat::Detailed(
277       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 60,
278       delta_59m59s499ms_));
279   EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), TimeFormat::Detailed(
280       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 59,
281       delta_59m59s499ms_));
282   EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), TimeFormat::Detailed(
283       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 2,
284       delta_59m59s499ms_));
285   EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Detailed(
286       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 1,
287       delta_59m59s499ms_));
288   EXPECT_EQ(ASCIIToUTF16("1 hour"), TimeFormat::Detailed(
289       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 1,
290       delta_59m59s500ms_));
291   EXPECT_EQ(ASCIIToUTF16("1 hour 0 minutes"), TimeFormat::Detailed(
292       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 2,
293       delta_59m59s500ms_));
294   EXPECT_EQ(ASCIIToUTF16("23 hours 59 minutes"), TimeFormat::Detailed(
295       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 24,
296       delta_23h59m29s999ms_));
297   EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), TimeFormat::Detailed(
298       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 23,
299       delta_23h59m29s999ms_));
300   EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), TimeFormat::Detailed(
301       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 2,
302       delta_23h59m29s999ms_));
303   EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Detailed(
304       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 1,
305       delta_23h59m29s999ms_));
306   EXPECT_EQ(ASCIIToUTF16("1 day"), TimeFormat::Detailed(
307       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 1,
308       delta_23h59m30s_));
309   EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), TimeFormat::Detailed(
310       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, 2,
311       delta_23h59m30s_));
312   EXPECT_EQ(ASCIIToUTF16("1 day 0 hours"), TimeFormat::Detailed(
313       TimeFormat::FORMAT_DURATION, TimeFormat::LENGTH_LONG, -1,
314       delta_23h59m30s_));
315 }
316
317 // Test strings in default code path.
318 TEST_F(TimeFormatTest, SimpleAndDetailedStrings) {
319   TestStrings();
320 }
321
322 // Test strings in fallback path in case of translator error.
323 TEST_F(TimeFormatTest, SimpleAndDetailedStringFallback) {
324   formatter_force_fallback = true;
325   g_container.Get().ResetForTesting();
326   TestStrings();
327   formatter_force_fallback = false;
328   g_container.Get().ResetForTesting();
329 }
330
331 // crbug.com/159388: This test fails when daylight savings time ends.
332 TEST_F(TimeFormatTest, RelativeDate) {
333   base::Time now = base::Time::Now();
334   base::string16 today_str = TimeFormat::RelativeDate(now, NULL);
335   EXPECT_EQ(ASCIIToUTF16("Today"), today_str);
336
337   base::Time yesterday = now - TimeDelta::FromDays(1);
338   base::string16 yesterday_str = TimeFormat::RelativeDate(yesterday, NULL);
339   EXPECT_EQ(ASCIIToUTF16("Yesterday"), yesterday_str);
340
341   base::Time two_days_ago = now - TimeDelta::FromDays(2);
342   base::string16 two_days_ago_str =
343       TimeFormat::RelativeDate(two_days_ago, NULL);
344   EXPECT_TRUE(two_days_ago_str.empty());
345
346   base::Time a_week_ago = now - TimeDelta::FromDays(7);
347   base::string16 a_week_ago_str = TimeFormat::RelativeDate(a_week_ago, NULL);
348   EXPECT_TRUE(a_week_ago_str.empty());
349 }
350
351 }  // namespace
352 }  // namespace ui