summaryrefslogtreecommitdiff
path: root/base/test/icu_test_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/test/icu_test_util.cc')
-rw-r--r--base/test/icu_test_util.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/base/test/icu_test_util.cc b/base/test/icu_test_util.cc
new file mode 100644
index 0000000000..a6f3e55665
--- /dev/null
+++ b/base/test/icu_test_util.cc
@@ -0,0 +1,39 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/test/icu_test_util.h"
+
+#include "base/base_switches.h"
+#include "base/command_line.h"
+#include "base/i18n/icu_util.h"
+#include "base/i18n/rtl.h"
+#include "third_party/icu/source/common/unicode/uloc.h"
+
+namespace base {
+namespace test {
+
+ScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale()
+ : ScopedRestoreICUDefaultLocale(std::string()) {}
+
+ScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale(
+ const std::string& locale)
+ : default_locale_(uloc_getDefault()) {
+ if (!locale.empty())
+ i18n::SetICUDefaultLocale(locale.data());
+}
+
+ScopedRestoreICUDefaultLocale::~ScopedRestoreICUDefaultLocale() {
+ i18n::SetICUDefaultLocale(default_locale_.data());
+}
+
+void InitializeICUForTesting() {
+ if (!CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kTestDoNotInitializeIcu)) {
+ i18n::AllowMultipleInitializeCallsForTesting();
+ i18n::InitializeICU();
+ }
+}
+
+} // namespace test
+} // namespace base