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 // This whole test runs as a separate browser_test because it depends on a 6 // static initialization inside third_party/icu (gDecimal in digitlst.cpp). 7 // 8 // That initialization depends on the current locale, and on certain locales 9 // will lead to wrong behavior. To make sure that the locale is set before 10 // icu is used, and that the "wrong" static value doesn't affect other tests, 11 // this test is executed on its own process. 12 13 #include "base/strings/string16.h" 14 #include "base/strings/utf_string_conversions.h" 15 #include "base/test/scoped_locale.h" 16 #include "chrome/test/base/in_process_browser_test.h" 17 #include "ui/base/l10n/time_format.h" 18 19 using base::TimeDelta; 20 21 class TimeFormatBrowserTest : public InProcessBrowserTest { 22 public: 23 TimeFormatBrowserTest() : scoped_locale_("fr_FR.utf-8") { 24 } 25 26 private: 27 base::ScopedLocale scoped_locale_; 28 }; 29 30 IN_PROC_BROWSER_TEST_F(TimeFormatBrowserTest, DecimalPointNotDot) { 31 // Some locales use a comma ',' instead of a dot '.' as the separator for 32 // decimal digits. The icu library wasn't handling this, leading to "1" 33 // being internally converted to "+1,0e00" and ultimately leading to "NaN". 34 // This showed up on the browser on estimated download time, for example. 35 // http://crbug.com/60476 36 37 base::string16 one_min = 38 ui::TimeFormat::Simple(ui::TimeFormat::FORMAT_DURATION, 39 ui::TimeFormat::LENGTH_SHORT, 40 TimeDelta::FromMinutes(1)); 41 EXPECT_EQ(base::ASCIIToUTF16("1 min"), one_min); 42 } 43