Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: base/i18n/time_formatting_unittest.cc

Issue 7054032: Fix ChromeOS clock menu so that it can show 12-hour clock in all locales. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added unittests. Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/i18n/time_formatting.cc ('k') | chrome/browser/chromeos/status/clock_menu_button.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 "base/i18n/time_formatting.h"
6
7 #include "base/time.h"
8 #include "base/utf_string_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "testing/platform_test.h"
11 #include "unicode/locid.h"
12
13 namespace {
14
15 void SetICUDefaultLocale(const std::string& locale_string) {
16 icu::Locale locale(locale_string.c_str());
17 UErrorCode error_code = U_ZERO_ERROR;
18 icu::Locale::setDefault(locale, error_code);
19 EXPECT_TRUE(U_SUCCESS(error_code));
20 }
21
22 const base::Time::Exploded kTestDateTimeExploded = {
23 2011, 4, 6, 30, // Sat, Apr 30, 2011
24 15, 42, 7, 0 // 15:42:07.000
25 };
26
27 } // namespace
28
29 class TimeFormattingTest : public PlatformTest {
brettw 2011/05/30 08:34:13 I don't think you need this (and you can delete th
kinaba 2011/05/30 08:43:38 Done. Thanks for pointing it out!
30 };
31
32 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault12h) {
33 // Test for a locale defaulted to 12h clock.
34 // As an instance, we use third_party/icu/source/data/locales/en.txt.
35 SetICUDefaultLocale("en_US");
36
37 base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded));
38 string16 clock24h(ASCIIToUTF16("15:42"));
39 string16 clock12h_pm(ASCIIToUTF16("3:42 PM"));
40 string16 clock12h(ASCIIToUTF16("3:42"));
41
42 // The default is 12h clock.
43 EXPECT_EQ(clock12h_pm,
44 base::TimeFormatTimeOfDay(time));
45 EXPECT_EQ(base::k12HourClock, base::GetHourClockType());
46 // k{Keep,Drop}AmPm should not affect for 24h clock.
47 EXPECT_EQ(clock24h,
48 base::TimeFormatTimeOfDayWithHourClockType(time,
49 base::k24HourClock,
50 base::kKeepAmPm));
51 EXPECT_EQ(clock24h,
52 base::TimeFormatTimeOfDayWithHourClockType(time,
53 base::k24HourClock,
54 base::kDropAmPm));
55 // k{Keep,Drop}AmPm affects for 12h clock.
56 EXPECT_EQ(clock12h_pm,
57 base::TimeFormatTimeOfDayWithHourClockType(time,
58 base::k12HourClock,
59 base::kKeepAmPm));
60 EXPECT_EQ(clock12h,
61 base::TimeFormatTimeOfDayWithHourClockType(time,
62 base::k12HourClock,
63 base::kDropAmPm));
64 }
65
66
67 TEST(TimeFormattingTest, TimeFormatTimeOfDayDefault24h) {
68 // Test for a locale defaulted to 24h clock.
69 // As an instance, we use third_party/icu/source/data/locales/en_GB.txt.
70 SetICUDefaultLocale("en_GB");
71
72 base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded));
73 string16 clock24h(ASCIIToUTF16("15:42"));
74 string16 clock12h_pm(ASCIIToUTF16("3:42 PM"));
75 string16 clock12h(ASCIIToUTF16("3:42"));
76
77 // The default is 24h clock.
78 EXPECT_EQ(clock24h,
79 base::TimeFormatTimeOfDay(time));
80 EXPECT_EQ(base::k24HourClock, base::GetHourClockType());
81 // k{Keep,Drop}AmPm should not affect for 24h clock.
82 EXPECT_EQ(clock24h,
83 base::TimeFormatTimeOfDayWithHourClockType(time,
84 base::k24HourClock,
85 base::kKeepAmPm));
86 EXPECT_EQ(clock24h,
87 base::TimeFormatTimeOfDayWithHourClockType(time,
88 base::k24HourClock,
89 base::kDropAmPm));
90 // k{Keep,Drop}AmPm affects for 12h clock.
91 EXPECT_EQ(clock12h_pm,
92 base::TimeFormatTimeOfDayWithHourClockType(time,
93 base::k12HourClock,
94 base::kKeepAmPm));
95 EXPECT_EQ(clock12h,
96 base::TimeFormatTimeOfDayWithHourClockType(time,
97 base::k12HourClock,
98 base::kDropAmPm));
99 }
100
101 TEST(TimeFormattingTest, TimeFormatTimeOfDayJP) {
102 // Test for a locale that uses different mark than "AM" and "PM".
103 // As an instance, we use third_party/icu/source/data/locales/ja.txt.
104 SetICUDefaultLocale("ja_JP");
105
106 base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded));
107 string16 clock24h(ASCIIToUTF16("15:42"));
108 string16 clock12h_pm(WideToUTF16(L"\x5348\x5f8c"L"3:42"));
109 string16 clock12h(ASCIIToUTF16("3:42"));
110
111 // The default is 24h clock.
112 EXPECT_EQ(clock24h,
113 base::TimeFormatTimeOfDay(time));
114 EXPECT_EQ(base::k24HourClock, base::GetHourClockType());
115 // k{Keep,Drop}AmPm should not affect for 24h clock.
116 EXPECT_EQ(clock24h,
117 base::TimeFormatTimeOfDayWithHourClockType(time,
118 base::k24HourClock,
119 base::kKeepAmPm));
120 EXPECT_EQ(clock24h,
121 base::TimeFormatTimeOfDayWithHourClockType(time,
122 base::k24HourClock,
123 base::kDropAmPm));
124 // k{Keep,Drop}AmPm affects for 12h clock.
125 EXPECT_EQ(clock12h_pm,
126 base::TimeFormatTimeOfDayWithHourClockType(time,
127 base::k12HourClock,
128 base::kKeepAmPm));
129 EXPECT_EQ(clock12h,
130 base::TimeFormatTimeOfDayWithHourClockType(time,
131 base::k12HourClock,
132 base::kDropAmPm));
133 }
134
135 TEST(TimeFormattingTest, TimeFormatDateUS) {
136 // See third_party/icu/source/data/locales/en.txt.
137 // The date patterns are "EEEE, MMMM d, y", "MMM d, y", and "M/d/yy".
138 SetICUDefaultLocale("en_US");
139
140 base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded));
141
142 EXPECT_EQ(ASCIIToUTF16("Apr 30, 2011"),
143 base::TimeFormatShortDate(time));
144 EXPECT_EQ(ASCIIToUTF16("4/30/11"),
145 base::TimeFormatShortDateNumeric(time));
146 EXPECT_EQ(ASCIIToUTF16("4/30/11 3:42:07 PM"),
147 base::TimeFormatShortDateAndTime(time));
148 EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011 3:42:07 PM"),
149 base::TimeFormatFriendlyDateAndTime(time));
150 EXPECT_EQ(ASCIIToUTF16("Saturday, April 30, 2011"),
151 base::TimeFormatFriendlyDate(time));
152 }
153
154 TEST(TimeFormattingTest, TimeFormatDateGB) {
155 // See third_party/icu/source/data/locales/en_GB.txt.
156 // The date patterns are "EEEE, d MMMM y", "d MMM y", and "dd/MM/yyyy".
157 SetICUDefaultLocale("en_GB");
158
159 base::Time time(base::Time::FromLocalExploded(kTestDateTimeExploded));
160
161 EXPECT_EQ(ASCIIToUTF16("30 Apr 2011"),
162 base::TimeFormatShortDate(time));
163 EXPECT_EQ(ASCIIToUTF16("30/04/2011"),
164 base::TimeFormatShortDateNumeric(time));
165 EXPECT_EQ(ASCIIToUTF16("30/04/2011 15:42:07"),
166 base::TimeFormatShortDateAndTime(time));
167 EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011 15:42:07"),
168 base::TimeFormatFriendlyDateAndTime(time));
169 EXPECT_EQ(ASCIIToUTF16("Saturday, 30 April 2011"),
170 base::TimeFormatFriendlyDate(time));
171 }
OLDNEW
« no previous file with comments | « base/i18n/time_formatting.cc ('k') | chrome/browser/chromeos/status/clock_menu_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698