Home | History | Annotate | Download | only in l10n
      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
    353