Home | History | Annotate | Download | only in common
      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