xref: /aosp_15_r20/external/cronet/base/win/i18n_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2010 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 // This file contains unit tests for Windows internationalization funcs.
6 
7 #include "base/win/i18n.h"
8 
9 #include <stddef.h>
10 #include <string.h>
11 
12 #include "base/strings/string_util.h"
13 #include "base/win/windows_version.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 
16 namespace base {
17 namespace win {
18 namespace i18n {
19 
20 // Tests that at least one user preferred UI language can be obtained.
TEST(I18NTest,GetUserPreferredUILanguageList)21 TEST(I18NTest, GetUserPreferredUILanguageList) {
22   std::vector<std::wstring> languages;
23   EXPECT_TRUE(GetUserPreferredUILanguageList(&languages));
24   EXPECT_FALSE(languages.empty());
25   for (const auto& language : languages) {
26     EXPECT_FALSE(language.empty());
27     // Ensure there's no extra trailing 0 characters.
28     EXPECT_EQ(language.size(), wcslen(language.c_str()));
29   }
30 }
31 
32 // Tests that at least one thread preferred UI language can be obtained.
TEST(I18NTest,GetThreadPreferredUILanguageList)33 TEST(I18NTest, GetThreadPreferredUILanguageList) {
34   std::vector<std::wstring> languages;
35   EXPECT_TRUE(GetThreadPreferredUILanguageList(&languages));
36   EXPECT_FALSE(languages.empty());
37   for (const auto& language : languages) {
38     EXPECT_FALSE(language.empty());
39     EXPECT_EQ(language.size(), wcslen(language.c_str()));
40   }
41 }
42 
43 // Tests that GetThreadPreferredUILanguageList appends to the given vector
44 // rather than replacing it.
TEST(I18NTest,GetUserPreferredUILanguageListAppends)45 TEST(I18NTest, GetUserPreferredUILanguageListAppends) {
46   std::vector<std::wstring> languages{std::wstring(L"dummylang")};
47   EXPECT_TRUE(GetUserPreferredUILanguageList(&languages));
48   ASSERT_GT(languages.size(), 1U);
49   EXPECT_EQ(languages[0], L"dummylang");
50 }
51 
52 // Tests that GetThreadPreferredUILanguageList appends to the given vector
53 // rather than replacing it.
TEST(I18NTest,GetThreadPreferredUILanguageListAppends)54 TEST(I18NTest, GetThreadPreferredUILanguageListAppends) {
55   std::vector<std::wstring> languages{std::wstring(L"dummylang")};
56   EXPECT_TRUE(GetThreadPreferredUILanguageList(&languages));
57   ASSERT_GT(languages.size(), 1U);
58   EXPECT_EQ(languages[0], L"dummylang");
59 }
60 
61 }  // namespace i18n
62 }  // namespace win
63 }  // namespace base
64