| OLD | NEW | 
|---|
| 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 #include "base/i18n/time_formatting.h" | 5 #include "base/i18n/time_formatting.h" | 
| 6 | 6 | 
|  | 7 #include "base/i18n/rtl.h" | 
| 7 #include "base/time.h" | 8 #include "base/time.h" | 
| 8 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" | 
| 9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" | 
| 10 #include "unicode/locid.h" |  | 
| 11 | 11 | 
|  | 12 namespace base { | 
| 12 namespace { | 13 namespace { | 
| 13 | 14 | 
| 14 void SetICUDefaultLocale(const std::string& locale_string) { | 15 const Time::Exploded kTestDateTimeExploded = { | 
| 15   icu::Locale locale(locale_string.c_str()); |  | 
| 16   UErrorCode error_code = U_ZERO_ERROR; |  | 
| 17   icu::Locale::setDefault(locale, error_code); |  | 
| 18   EXPECT_TRUE(U_SUCCESS(error_code)); |  | 
| 19 } |  | 
| 20 |  | 
| 21 const base::Time::Exploded kTestDateTimeExploded = { |  | 
| 22   2011, 4, 6, 30, // Sat, Apr 30, 2011 | 16   2011, 4, 6, 30, // Sat, Apr 30, 2011 | 
| 23   15, 42, 7, 0    // 15:42:07.000 | 17   15, 42, 7, 0    // 15:42:07.000 | 
| 24 }; | 18 }; | 
| 25 | 19 | 
| 26 }  // namespace |  | 
| 27 |  | 
| 28 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault12h) { | 20 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault12h) { | 
| 29   // Test for a locale defaulted to 12h clock. | 21   // Test for a locale defaulted to 12h clock. | 
| 30   // As an instance, we use third_party/icu/source/data/locales/en.txt. | 22   // As an instance, we use third_party/icu/source/data/locales/en.txt. | 
| 31   SetICUDefaultLocale("en_US"); | 23   i18n::SetICUDefaultLocale("en_US"); | 
| 32 | 24 | 
| 33   base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded)); | 25   Time time(Time::FromLocalExploded(kTestDateTimeExploded)); | 
| 34   string16 clock24h(ASCIIToUTF16("15:42")); | 26   string16 clock24h(ASCIIToUTF16("15:42")); | 
| 35   string16 clock12h_pm(ASCIIToUTF16("3:42 PM")); | 27   string16 clock12h_pm(ASCIIToUTF16("3:42 PM")); | 
| 36   string16 clock12h(ASCIIToUTF16("3:42")); | 28   string16 clock12h(ASCIIToUTF16("3:42")); | 
| 37 | 29 | 
| 38   // The default is 12h clock. | 30   // The default is 12h clock. | 
| 39   EXPECT_EQ(clock12h_pm, | 31   EXPECT_EQ(clock12h_pm, TimeFormatTimeOfDay(time)); | 
| 40             base::TimeFormatTimeOfDay(time)); | 32   EXPECT_EQ(k12HourClock, GetHourClockType()); | 
| 41   EXPECT_EQ(base::k12HourClock, base::GetHourClockType()); |  | 
| 42   // k{Keep,Drop}AmPm should not affect for 24h clock. | 33   // k{Keep,Drop}AmPm should not affect for 24h clock. | 
| 43   EXPECT_EQ(clock24h, | 34   EXPECT_EQ(clock24h, | 
| 44             base::TimeFormatTimeOfDayWithHourClockType(time, | 35             TimeFormatTimeOfDayWithHourClockType(time, | 
| 45                                                        base::k24HourClock, | 36                                                  k24HourClock, | 
| 46                                                        base::kKeepAmPm)); | 37                                                  kKeepAmPm)); | 
| 47   EXPECT_EQ(clock24h, | 38   EXPECT_EQ(clock24h, | 
| 48             base::TimeFormatTimeOfDayWithHourClockType(time, | 39             TimeFormatTimeOfDayWithHourClockType(time, | 
| 49                                                        base::k24HourClock, | 40                                                  k24HourClock, | 
| 50                                                        base::kDropAmPm)); | 41                                                  kDropAmPm)); | 
| 51   // k{Keep,Drop}AmPm affects for 12h clock. | 42   // k{Keep,Drop}AmPm affects for 12h clock. | 
| 52   EXPECT_EQ(clock12h_pm, | 43   EXPECT_EQ(clock12h_pm, | 
| 53             base::TimeFormatTimeOfDayWithHourClockType(time, | 44             TimeFormatTimeOfDayWithHourClockType(time, | 
| 54                                                        base::k12HourClock, | 45                                                  k12HourClock, | 
| 55                                                        base::kKeepAmPm)); | 46                                                  kKeepAmPm)); | 
| 56   EXPECT_EQ(clock12h, | 47   EXPECT_EQ(clock12h, | 
| 57             base::TimeFormatTimeOfDayWithHourClockType(time, | 48             TimeFormatTimeOfDayWithHourClockType(time, | 
| 58                                                        base::k12HourClock, | 49                                                  k12HourClock, | 
| 59                                                        base::kDropAmPm)); | 50                                                  kDropAmPm)); | 
| 60 } | 51 } | 
| 61 | 52 | 
| 62 |  | 
| 63 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault24h) { | 53 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault24h) { | 
| 64   // Test for a locale defaulted to 24h clock. | 54   // Test for a locale defaulted to 24h clock. | 
| 65   // As an instance, we use third_party/icu/source/data/locales/en_GB.txt. | 55   // As an instance, we use third_party/icu/source/data/locales/en_GB.txt. | 
| 66   SetICUDefaultLocale("en_GB"); | 56   i18n::SetICUDefaultLocale("en_GB"); | 
| 67 | 57 | 
| 68   base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded)); | 58   Time time(Time::FromLocalExploded(kTestDateTimeExploded)); | 
| 69   string16 clock24h(ASCIIToUTF16("15:42")); | 59   string16 clock24h(ASCIIToUTF16("15:42")); | 
| 70   string16 clock12h_pm(ASCIIToUTF16("3:42 PM")); | 60   string16 clock12h_pm(ASCIIToUTF16("3:42 PM")); | 
| 71   string16 clock12h(ASCIIToUTF16("3:42")); | 61   string16 clock12h(ASCIIToUTF16("3:42")); | 
| 72 | 62 | 
| 73   // The default is 24h clock. | 63   // The default is 24h clock. | 
| 74   EXPECT_EQ(clock24h, | 64   EXPECT_EQ(clock24h, TimeFormatTimeOfDay(time)); | 
| 75             base::TimeFormatTimeOfDay(time)); | 65   EXPECT_EQ(k24HourClock, GetHourClockType()); | 
| 76   EXPECT_EQ(base::k24HourClock, base::GetHourClockType()); |  | 
| 77   // k{Keep,Drop}AmPm should not affect for 24h clock. | 66   // k{Keep,Drop}AmPm should not affect for 24h clock. | 
| 78   EXPECT_EQ(clock24h, | 67   EXPECT_EQ(clock24h, | 
| 79             base::TimeFormatTimeOfDayWithHourClockType(time, | 68             TimeFormatTimeOfDayWithHourClockType(time, | 
| 80                                                        base::k24HourClock, | 69                                                  k24HourClock, | 
| 81                                                        base::kKeepAmPm)); | 70                                                  kKeepAmPm)); | 
| 82   EXPECT_EQ(clock24h, | 71   EXPECT_EQ(clock24h, | 
| 83             base::TimeFormatTimeOfDayWithHourClockType(time, | 72             TimeFormatTimeOfDayWithHourClockType(time, | 
| 84                                                        base::k24HourClock, | 73                                                  k24HourClock, | 
| 85                                                        base::kDropAmPm)); | 74                                                  kDropAmPm)); | 
| 86   // k{Keep,Drop}AmPm affects for 12h clock. | 75   // k{Keep,Drop}AmPm affects for 12h clock. | 
| 87   EXPECT_EQ(clock12h_pm, | 76   EXPECT_EQ(clock12h_pm, | 
| 88             base::TimeFormatTimeOfDayWithHourClockType(time, | 77             TimeFormatTimeOfDayWithHourClockType(time, | 
| 89                                                        base::k12HourClock, | 78                                                  k12HourClock, | 
| 90                                                        base::kKeepAmPm)); | 79                                                  kKeepAmPm)); | 
| 91   EXPECT_EQ(clock12h, | 80   EXPECT_EQ(clock12h, | 
| 92             base::TimeFormatTimeOfDayWithHourClockType(time, | 81             TimeFormatTimeOfDayWithHourClockType(time, | 
| 93                                                        base::k12HourClock, | 82                                                  k12HourClock, | 
| 94                                                        base::kDropAmPm)); | 83                                                  kDropAmPm)); | 
| 95 } | 84 } | 
| 96 | 85 | 
| 97 TEST(TimeFormattingTest, TimeFormatTimeOfDayJP) { | 86 TEST(TimeFormattingTest, TimeFormatTimeOfDayJP) { | 
| 98   // Test for a locale that uses different mark than "AM" and "PM". | 87   // Test for a locale that uses different mark than "AM" and "PM". | 
| 99   // As an instance, we use third_party/icu/source/data/locales/ja.txt. | 88   // As an instance, we use third_party/icu/source/data/locales/ja.txt. | 
| 100   SetICUDefaultLocale("ja_JP"); | 89   i18n::SetICUDefaultLocale("ja_JP"); | 
| 101 | 90 | 
| 102   base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded)); | 91   Time time(Time::FromLocalExploded(kTestDateTimeExploded)); | 
| 103   string16 clock24h(ASCIIToUTF16("15:42")); | 92   string16 clock24h(ASCIIToUTF16("15:42")); | 
| 104   string16 clock12h_pm(WideToUTF16(L"\x5348\x5f8c"L"3:42")); | 93   string16 clock12h_pm(WideToUTF16(L"\x5348\x5f8c"L"3:42")); | 
| 105   string16 clock12h(ASCIIToUTF16("3:42")); | 94   string16 clock12h(ASCIIToUTF16("3:42")); | 
| 106 | 95 | 
| 107   // The default is 24h clock. | 96   // The default is 24h clock. | 
| 108   EXPECT_EQ(clock24h, | 97   EXPECT_EQ(clock24h, TimeFormatTimeOfDay(time)); | 
| 109             base::TimeFormatTimeOfDay(time)); | 98   EXPECT_EQ(k24HourClock, GetHourClockType()); | 
| 110   EXPECT_EQ(base::k24HourClock, base::GetHourClockType()); |  | 
| 111   // k{Keep,Drop}AmPm should not affect for 24h clock. | 99   // k{Keep,Drop}AmPm should not affect for 24h clock. | 
| 112   EXPECT_EQ(clock24h, | 100   EXPECT_EQ(clock24h, | 
| 113             base::TimeFormatTimeOfDayWithHourClockType(time, | 101             TimeFormatTimeOfDayWithHourClockType(time, | 
| 114                                                        base::k24HourClock, | 102                                                  k24HourClock, | 
| 115                                                        base::kKeepAmPm)); | 103                                                  kKeepAmPm)); | 
| 116   EXPECT_EQ(clock24h, | 104   EXPECT_EQ(clock24h, | 
| 117             base::TimeFormatTimeOfDayWithHourClockType(time, | 105             TimeFormatTimeOfDayWithHourClockType(time, | 
| 118                                                        base::k24HourClock, | 106                                                  k24HourClock, | 
| 119                                                        base::kDropAmPm)); | 107                                                  kDropAmPm)); | 
| 120   // k{Keep,Drop}AmPm affects for 12h clock. | 108   // k{Keep,Drop}AmPm affects for 12h clock. | 
| 121   EXPECT_EQ(clock12h_pm, | 109   EXPECT_EQ(clock12h_pm, | 
| 122             base::TimeFormatTimeOfDayWithHourClockType(time, | 110             TimeFormatTimeOfDayWithHourClockType(time, | 
| 123                                                        base::k12HourClock, | 111                                                  k12HourClock, | 
| 124                                                        base::kKeepAmPm)); | 112                                                  kKeepAmPm)); | 
| 125   EXPECT_EQ(clock12h, | 113   EXPECT_EQ(clock12h, | 
| 126             base::TimeFormatTimeOfDayWithHourClockType(time, | 114             TimeFormatTimeOfDayWithHourClockType(time, | 
| 127                                                        base::k12HourClock, | 115                                                  k12HourClock, | 
| 128                                                        base::kDropAmPm)); | 116                                                  kDropAmPm)); | 
| 129 } | 117 } | 
| 130 | 118 | 
| 131 TEST(TimeFormattingTest, TimeFormatDateUS) { | 119 TEST(TimeFormattingTest, TimeFormatDateUS) { | 
| 132   // See third_party/icu/source/data/locales/en.txt. | 120   // See third_party/icu/source/data/locales/en.txt. | 
| 133   // The date patterns are "EEEE, MMMM d, y", "MMM d, y", and "M/d/yy". | 121   // The date patterns are "EEEE, MMMM d, y", "MMM d, y", and "M/d/yy". | 
| 134   SetICUDefaultLocale("en_US"); | 122   i18n::SetICUDefaultLocale("en_US"); | 
| 135 | 123 | 
| 136   base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded)); | 124   Time time(Time::FromLocalExploded(kTestDateTimeExploded)); | 
| 137 | 125 | 
| 138   EXPECT_EQ(ASCIIToUTF16("Apr 30, 2011"), | 126   EXPECT_EQ(ASCIIToUTF16("Apr 30, 2011"), TimeFormatShortDate(time)); | 
| 139             base::TimeFormatShortDate(time)); | 127   EXPECT_EQ(ASCIIToUTF16("4/30/11"), TimeFormatShortDateNumeric(time)); | 
| 140   EXPECT_EQ(ASCIIToUTF16("4/30/11"), |  | 
| 141             base::TimeFormatShortDateNumeric(time)); |  | 
| 142   EXPECT_EQ(ASCIIToUTF16("4/30/11 3:42:07 PM"), | 128   EXPECT_EQ(ASCIIToUTF16("4/30/11 3:42:07 PM"), | 
| 143             base::TimeFormatShortDateAndTime(time)); | 129             TimeFormatShortDateAndTime(time)); | 
| 144   EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011 3:42:07 PM"), | 130   EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011 3:42:07 PM"), | 
| 145             base::TimeFormatFriendlyDateAndTime(time)); | 131             TimeFormatFriendlyDateAndTime(time)); | 
| 146   EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011"), | 132   EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011"), | 
| 147             base::TimeFormatFriendlyDate(time)); | 133             TimeFormatFriendlyDate(time)); | 
| 148 } | 134 } | 
| 149 | 135 | 
| 150 TEST(TimeFormattingTest, TimeFormatDateGB) { | 136 TEST(TimeFormattingTest, TimeFormatDateGB) { | 
| 151   // See third_party/icu/source/data/locales/en_GB.txt. | 137   // See third_party/icu/source/data/locales/en_GB.txt. | 
| 152   // The date patterns are "EEEE, d MMMM y", "d MMM y", and "dd/MM/yyyy". | 138   // The date patterns are "EEEE, d MMMM y", "d MMM y", and "dd/MM/yyyy". | 
| 153   SetICUDefaultLocale("en_GB"); | 139   i18n::SetICUDefaultLocale("en_GB"); | 
| 154 | 140 | 
| 155   base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded)); | 141   Time time(Time::FromLocalExploded(kTestDateTimeExploded)); | 
| 156 | 142 | 
| 157   EXPECT_EQ(ASCIIToUTF16("30 Apr 2011"), | 143   EXPECT_EQ(ASCIIToUTF16("30 Apr 2011"), TimeFormatShortDate(time)); | 
| 158             base::TimeFormatShortDate(time)); | 144   EXPECT_EQ(ASCIIToUTF16("30/04/2011"), TimeFormatShortDateNumeric(time)); | 
| 159   EXPECT_EQ(ASCIIToUTF16("30/04/2011"), |  | 
| 160             base::TimeFormatShortDateNumeric(time)); |  | 
| 161   EXPECT_EQ(ASCIIToUTF16("30/04/2011 15:42:07"), | 145   EXPECT_EQ(ASCIIToUTF16("30/04/2011 15:42:07"), | 
| 162             base::TimeFormatShortDateAndTime(time)); | 146             TimeFormatShortDateAndTime(time)); | 
| 163   EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011 15:42:07"), | 147   EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011 15:42:07"), | 
| 164             base::TimeFormatFriendlyDateAndTime(time)); | 148             TimeFormatFriendlyDateAndTime(time)); | 
| 165   EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011"), | 149   EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011"), | 
| 166             base::TimeFormatFriendlyDate(time)); | 150             TimeFormatFriendlyDate(time)); | 
| 167 } | 151 } | 
|  | 152 | 
|  | 153 }  // namespace | 
|  | 154 }  // namespace base | 
| OLD | NEW | 
|---|