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