Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/intl/locale/tests/gtest/TestMozLocale.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* This Source Code Form is subject to the terms of the Mozilla Public
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
#include "gtest/gtest.h"
7
#include "mozilla/intl/MozLocale.h"
8
9
using namespace mozilla::intl;
10
11
12
0
TEST(Intl_Locale_Locale, Locale) {
13
0
  Locale loc = Locale("en-US");
14
0
15
0
  ASSERT_TRUE(loc.GetLanguage().Equals("en"));
16
0
  ASSERT_TRUE(loc.GetRegion().Equals("US"));
17
0
}
18
19
0
TEST(Intl_Locale_Locale, AsString) {
20
0
  Locale loc = Locale("ja-jp-windows");
21
0
22
0
  ASSERT_TRUE(loc.AsString().Equals("ja-JP-windows"));
23
0
}
24
25
0
TEST(Intl_Locale_Locale, GetSubTags) {
26
0
  Locale loc = Locale("en-latn-us-macos");
27
0
28
0
  ASSERT_TRUE(loc.GetLanguage().Equals("en"));
29
0
  ASSERT_TRUE(loc.GetScript().Equals("Latn"));
30
0
  ASSERT_TRUE(loc.GetRegion().Equals("US"));
31
0
  ASSERT_TRUE(loc.GetVariants().Length() == 1);
32
0
  ASSERT_TRUE(loc.GetVariants()[0].Equals("macos"));
33
0
}
34
35
0
TEST(Intl_Locale_Locale, Matches) {
36
0
  Locale loc = Locale("en-US");
37
0
38
0
  Locale loc2 = Locale("en-GB");
39
0
  ASSERT_FALSE(loc == loc2);
40
0
41
0
  Locale loc3 = Locale("en-US");
42
0
  ASSERT_TRUE(loc == loc3);
43
0
44
0
  Locale loc4 = Locale("En_us");
45
0
  ASSERT_TRUE(loc == loc4);
46
0
}
47
48
0
TEST(Intl_Locale_Locale, MatchesRange) {
49
0
  Locale loc = Locale("en-US");
50
0
51
0
  Locale loc2 = Locale("en-Latn-US");
52
0
  ASSERT_FALSE(loc == loc2);
53
0
  ASSERT_TRUE(loc.Matches(loc2, true, false));
54
0
  ASSERT_FALSE(loc.Matches(loc2, false, true));
55
0
  ASSERT_FALSE(loc.Matches(loc2, false, false));
56
0
  ASSERT_TRUE(loc.Matches(loc2, true, true));
57
0
58
0
  Locale loc3 = Locale("en");
59
0
  ASSERT_FALSE(loc == loc3);
60
0
  ASSERT_TRUE(loc.Matches(loc3, false, true));
61
0
  ASSERT_FALSE(loc.Matches(loc3, true, false));
62
0
  ASSERT_FALSE(loc.Matches(loc3, false, false));
63
0
  ASSERT_TRUE(loc.Matches(loc3, true, true));
64
0
}
65
66
0
TEST(Intl_Locale_Locale, Variants) {
67
0
  Locale loc = Locale("en-US-UniFon-BasicEng");
68
0
69
0
  // Make sure that we canonicalize and sort variant tags
70
0
  ASSERT_TRUE(loc.AsString().Equals("en-US-basiceng-unifon"));
71
0
}
72
73
0
TEST(Intl_Locale_Locale, PrivateUse) {
74
0
  Locale loc = Locale("x-test");
75
0
76
0
  ASSERT_TRUE(loc.IsWellFormed());
77
0
  ASSERT_TRUE(loc.GetLanguage().Equals(""));
78
0
  ASSERT_TRUE(loc.GetScript().Equals(""));
79
0
  ASSERT_TRUE(loc.GetRegion().Equals(""));
80
0
  ASSERT_TRUE(loc.GetVariants().Length() == 0);
81
0
82
0
  ASSERT_TRUE(loc.AsString().Equals("x-test"));
83
0
84
0
  Locale loc2 = Locale("fr-x-test");
85
0
86
0
  ASSERT_TRUE(loc2.IsWellFormed());
87
0
  ASSERT_TRUE(loc2.GetLanguage().Equals("fr"));
88
0
  ASSERT_TRUE(loc2.GetScript().Equals(""));
89
0
  ASSERT_TRUE(loc2.GetRegion().Equals(""));
90
0
  ASSERT_TRUE(loc2.GetVariants().Length() == 0);
91
0
92
0
  ASSERT_TRUE(loc2.AsString().Equals("fr-x-test"));
93
0
94
0
  // Make sure that we canonicalize private use tags
95
0
  // and preserve their order.
96
0
  Locale loc3 = Locale("fr-x-foo-bAr-BaZ");
97
0
98
0
  ASSERT_TRUE(loc3.IsWellFormed());
99
0
  ASSERT_TRUE(loc3.AsString().Equals("fr-x-foo-bar-baz"));
100
0
}
101
102
0
TEST(Intl_Locale_Locale, InvalidLocale) {
103
0
  Locale loc = Locale("en-verylongsubtag");
104
0
  ASSERT_FALSE(loc.IsWellFormed());
105
0
106
0
  Locale loc2 = Locale("p-te");
107
0
  ASSERT_FALSE(loc2.IsWellFormed());
108
0
}
109
110
0
TEST(Intl_Locale_Locale, ClearRegion) {
111
0
  Locale loc = Locale("en-US");
112
0
  loc.ClearRegion();
113
0
  ASSERT_TRUE(loc.AsString().Equals("en"));
114
0
}
115
116
0
TEST(Intl_Locale_Locale, ClearVariants) {
117
0
  Locale loc = Locale("en-US-mac");
118
0
  loc.ClearVariants();
119
0
  ASSERT_TRUE(loc.AsString().Equals("en-US"));
120
0
}