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