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