Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cxfa_xmllocale_unittest.cpp
Go to the documentation of this file.
1// Copyright 2018 The PDFium 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 "xfa/fxfa/parser/cxfa_xmllocale.h"
6
7#include "testing/fxgc_unittest.h"
8#include "testing/gtest/include/gtest/gtest.h"
9
10namespace {
11
12const char kXMLData[] =
13 "<locale name=\"en_US\" desc=\"English(America)\">"
14 "<calendarSymbols name=\"gregorian\"><monthNames><month>January</month>"
15 "<month>February</month>"
16 "<month>March</month>"
17 "<month>April</month>"
18 "<month>May</month>"
19 "<month>June</month>"
20 "<month>July</month>"
21 "<month>August</month>"
22 "<month>September</month>"
23 "<month>October</month>"
24 "<month>November</month>"
25 "<month>December</month>"
26 "</monthNames>"
27 "<monthNames abbr=\"1\"><month>Jan</month>"
28 "<month>Feb</month>"
29 "<month>Mar</month>"
30 "<month>Apr</month>"
31 "<month>May</month>"
32 "<month>Jun</month>"
33 "<month>Jul</month>"
34 "<month>Aug</month>"
35 "<month>Sep</month>"
36 "<month>Oct</month>"
37 "<month>Nov</month>"
38 "<month>Dec</month>"
39 "</monthNames>"
40 "<dayNames><day>Sunday</day>"
41 "<day>Monday</day>"
42 "<day>Tuesday</day>"
43 "<day>Wednesday</day>"
44 "<day>Thursday</day>"
45 "<day>Friday</day>"
46 "<day>Saturday</day>"
47 "</dayNames>"
48 "<dayNames abbr=\"1\"><day>Sun</day>"
49 "<day>Mon</day>"
50 "<day>Tue</day>"
51 "<day>Wed</day>"
52 "<day>Thu</day>"
53 "<day>Fri</day>"
54 "<day>Sat</day>"
55 "</dayNames>"
56 "<meridiemNames><meridiem>AM</meridiem>"
57 "<meridiem>PM</meridiem>"
58 "</meridiemNames>"
59 "<eraNames><era>BC</era>"
60 "<era>AD</era>"
61 "</eraNames>"
62 "</calendarSymbols>"
63 "<datePatterns><datePattern name=\"full\">EEEE, MMMM D, YYYY</datePattern>"
64 "<datePattern name=\"long\">MMMM D, YYYY</datePattern>"
65 "<datePattern name=\"med\">MMM D, YYYY</datePattern>"
66 "<datePattern name=\"short\">M/D/YY</datePattern>"
67 "</datePatterns>"
68 "<timePatterns><timePattern name=\"full\">h:MM:SS A Z</timePattern>"
69 "<timePattern name=\"long\">h:MM:SS A Z</timePattern>"
70 "<timePattern name=\"med\">h:MM:SS A</timePattern>"
71 "<timePattern name=\"short\">h:MM A</timePattern>"
72 "</timePatterns>"
73 "<dateTimeSymbols>GyMdkHmsSEDFwWahKzZ</dateTimeSymbols>"
74 "<numberPatterns><numberPattern name=\"numeric\">z,zz9.zzz</numberPattern>"
75 "<numberPattern name=\"currency\">$z,zz9.99|($z,zz9.99)</numberPattern>"
76 "<numberPattern name=\"percent\">z,zz9%</numberPattern>"
77 "</numberPatterns>"
78 "<numberSymbols><numberSymbol name=\"decimal\">.</numberSymbol>"
79 "<numberSymbol name=\"grouping\">,</numberSymbol>"
80 "<numberSymbol name=\"percent\">%</numberSymbol>"
81 "<numberSymbol name=\"minus\">-</numberSymbol>"
82 "<numberSymbol name=\"zero\">0</numberSymbol>"
83 "</numberSymbols>"
84 "<currencySymbols><currencySymbol name=\"symbol\">$</currencySymbol>"
85 "<currencySymbol name=\"isoname\">USD</currencySymbol>"
86 "<currencySymbol name=\"decimal\">.</currencySymbol>"
87 "</currencySymbols>"
88 "</locale>";
89
90CXFA_XMLLocale* CreateLocaleHelper(cppgc::Heap* heap) {
91 return CXFA_XMLLocale::Create(
92 heap, pdfium::as_writable_bytes(pdfium::make_span(
93 const_cast<char*>(kXMLData), strlen(kXMLData))));
94}
95
96} // namespace
97
99
101 auto* locale = CreateLocaleHelper(heap());
102 EXPECT_TRUE(locale != nullptr);
103}
104
106 auto* locale = CXFA_XMLLocale::Create(heap(), pdfium::span<uint8_t>());
107 EXPECT_TRUE(locale == nullptr);
108}
109
111 auto* locale = CreateLocaleHelper(heap());
112 ASSERT_TRUE(locale != nullptr);
113
114 EXPECT_EQ(L"en_US", locale->GetName());
115}
116
118 auto* locale = CreateLocaleHelper(heap());
119 ASSERT_TRUE(locale != nullptr);
120
121 EXPECT_EQ(L".", locale->GetDecimalSymbol());
122 EXPECT_EQ(L",", locale->GetGroupingSymbol());
123 EXPECT_EQ(L"%", locale->GetPercentSymbol());
124 EXPECT_EQ(L"-", locale->GetMinusSymbol());
125 EXPECT_EQ(L"$", locale->GetCurrencySymbol());
126}
127
129 auto* locale = CreateLocaleHelper(heap());
130 ASSERT_TRUE(locale != nullptr);
131
132 EXPECT_EQ(L"GyMdkHmsSEDFwWahKzZ", locale->GetDateTimeSymbols());
133}
134
136 auto* locale = CreateLocaleHelper(heap());
137 ASSERT_TRUE(locale != nullptr);
138
139 EXPECT_EQ(L"", locale->GetMonthName(24, false));
140 EXPECT_EQ(L"", locale->GetMonthName(-5, false));
141 EXPECT_EQ(L"Feb", locale->GetMonthName(1, true));
142 EXPECT_EQ(L"February", locale->GetMonthName(1, false));
143}
144
146 auto* locale = CreateLocaleHelper(heap());
147 ASSERT_TRUE(locale != nullptr);
148
149 EXPECT_EQ(L"", locale->GetDayName(24, false));
150 EXPECT_EQ(L"", locale->GetDayName(-5, false));
151 EXPECT_EQ(L"Mon", locale->GetDayName(1, true));
152 EXPECT_EQ(L"Monday", locale->GetDayName(1, false));
153}
154
156 auto* locale = CreateLocaleHelper(heap());
157 ASSERT_TRUE(locale != nullptr);
158
159 EXPECT_EQ(L"AM", locale->GetMeridiemName(true));
160 EXPECT_EQ(L"PM", locale->GetMeridiemName(false));
161}
162
164 auto* locale = CreateLocaleHelper(heap());
165 ASSERT_TRUE(locale != nullptr);
166
167 EXPECT_EQ(L"AD", locale->GetEraName(true));
168 EXPECT_EQ(L"BC", locale->GetEraName(false));
169}
170
172 auto* locale = CreateLocaleHelper(heap());
173 ASSERT_TRUE(locale != nullptr);
174
175 EXPECT_EQ(L"M/D/YY",
176 locale->GetDatePattern(LocaleIface::DateTimeSubcategory::kShort));
177 EXPECT_EQ(L"MMM D, YYYY",
178 locale->GetDatePattern(LocaleIface::DateTimeSubcategory::kDefault));
179 EXPECT_EQ(L"MMM D, YYYY",
180 locale->GetDatePattern(LocaleIface::DateTimeSubcategory::kMedium));
181 EXPECT_EQ(L"EEEE, MMMM D, YYYY",
182 locale->GetDatePattern(LocaleIface::DateTimeSubcategory::kFull));
183 EXPECT_EQ(L"MMMM D, YYYY",
184 locale->GetDatePattern(LocaleIface::DateTimeSubcategory::kLong));
185}
186
188 auto* locale = CreateLocaleHelper(heap());
189 ASSERT_TRUE(locale != nullptr);
190
191 EXPECT_EQ(L"h:MM A",
192 locale->GetTimePattern(LocaleIface::DateTimeSubcategory::kShort));
193 EXPECT_EQ(L"h:MM:SS A",
194 locale->GetTimePattern(LocaleIface::DateTimeSubcategory::kDefault));
195 EXPECT_EQ(L"h:MM:SS A",
196 locale->GetTimePattern(LocaleIface::DateTimeSubcategory::kMedium));
197 EXPECT_EQ(L"h:MM:SS A Z",
198 locale->GetTimePattern(LocaleIface::DateTimeSubcategory::kFull));
199 EXPECT_EQ(L"h:MM:SS A Z",
200 locale->GetTimePattern(LocaleIface::DateTimeSubcategory::kLong));
201}
202
204 auto* locale = CreateLocaleHelper(heap());
205 ASSERT_TRUE(locale != nullptr);
206
207 EXPECT_EQ(L"z,zzz,zzz,zzz,zzz,zzz%",
208 locale->GetNumPattern(LocaleIface::NumSubcategory::kPercent));
209 EXPECT_EQ(L"$z,zzz,zzz,zzz,zzz,zz9.99",
210 locale->GetNumPattern(LocaleIface::NumSubcategory::kCurrency));
211 EXPECT_EQ(L"z,zzz,zzz,zzz,zzz,zz9.zzz",
212 locale->GetNumPattern(LocaleIface::NumSubcategory::kDecimal));
213 EXPECT_EQ(L"z,zzz,zzz,zzz,zzz,zzz",
214 locale->GetNumPattern(LocaleIface::NumSubcategory::kInteger));
215}
static CXFA_XMLLocale * Create(cppgc::Heap *heap, pdfium::span< uint8_t > data)
TEST_F(CXFA_XMLLocaleTest, Create)
Definition heap.h:12