xref: /aosp_15_r20/external/cronet/base/test/icu_test_util.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2015 The Chromium Authors
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/test/icu_test_util.h"
6 
7 #include "base/i18n/icu_util.h"
8 #include "base/i18n/rtl.h"
9 #include "third_party/icu/source/common/unicode/uloc.h"
10 #include "third_party/icu/source/i18n/unicode/timezone.h"
11 
12 namespace base {
13 namespace test {
14 
ScopedRestoreICUDefaultLocale()15 ScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale()
16     : ScopedRestoreICUDefaultLocale(std::string()) {}
17 
ScopedRestoreICUDefaultLocale(const std::string & locale)18 ScopedRestoreICUDefaultLocale::ScopedRestoreICUDefaultLocale(
19     const std::string& locale)
20     : default_locale_(uloc_getDefault()) {
21   if (!locale.empty())
22     i18n::SetICUDefaultLocale(locale.data());
23 }
24 
~ScopedRestoreICUDefaultLocale()25 ScopedRestoreICUDefaultLocale::~ScopedRestoreICUDefaultLocale() {
26   i18n::SetICUDefaultLocale(default_locale_.data());
27 }
28 
ScopedRestoreDefaultTimezone(const char * zoneid)29 ScopedRestoreDefaultTimezone::ScopedRestoreDefaultTimezone(const char* zoneid) {
30   original_zone_.reset(icu::TimeZone::createDefault());
31   icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(zoneid));
32 }
33 
~ScopedRestoreDefaultTimezone()34 ScopedRestoreDefaultTimezone::~ScopedRestoreDefaultTimezone() {
35   icu::TimeZone::adoptDefault(original_zone_.release());
36 }
37 
InitializeICUForTesting()38 void InitializeICUForTesting() {
39   i18n::AllowMultipleInitializeCallsForTesting();
40   i18n::InitializeICU();
41 }
42 
43 }  // namespace test
44 }  // namespace base
45