bump product version to 5.0.4.1
[LibreOffice.git] / sal / qa / rtl / textenc / rtl_textcvt.cxx
blob7a142394a5385efa08f1cb438d19060cb69526c3
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <config_locales.h>
22 #include "sal/config.h"
24 #include <cstddef>
25 #include <cstring>
27 #include <cppunit/TestFixture.h>
28 #include <cppunit/extensions/HelperMacros.h>
30 #include "rtl/string.hxx"
31 #include "rtl/ustring.hxx"
32 #include "rtl/tencinfo.h"
33 #include "rtl/textcvt.h"
34 #include "rtl/textenc.h"
35 #include "sal/types.h"
36 #include <sal/macros.h>
37 #include <osl/diagnose.h>
39 namespace {
41 struct SingleByteCharSet {
42 rtl_TextEncoding m_nEncoding;
43 sal_Unicode m_aMap[256];
46 void testSingleByteCharSet(SingleByteCharSet const & rSet) {
47 sal_Char aText[256];
48 sal_Unicode aUnicode[256];
49 sal_Size nNumber = 0;
50 for (int i = 0; i < 256; ++i) {
51 if (rSet.m_aMap[i] != 0xFFFF) {
52 aText[nNumber++] = static_cast< sal_Char >(i);
56 rtl_TextToUnicodeConverter aConverter
57 = rtl_createTextToUnicodeConverter(rSet.m_nEncoding);
58 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rSet.m_nEncoding)) + ") failed"),
59 RTL_TEXTENCODING_UTF8).getStr(),
60 aConverter != NULL);
61 rtl_TextToUnicodeContext aContext
62 = rtl_createTextToUnicodeContext(aConverter);
63 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
64 sal_Size nSize;
65 sal_uInt32 nInfo;
66 sal_Size nConverted;
67 nSize = rtl_convertTextToUnicode(
68 aConverter, aContext, aText, nNumber, aUnicode, nNumber,
69 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
70 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
71 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
72 &nInfo, &nConverted);
73 CPPUNIT_ASSERT_EQUAL(nNumber, nSize);
74 CPPUNIT_ASSERT_EQUAL((sal_uInt32)0, nInfo);
75 CPPUNIT_ASSERT_EQUAL(nNumber, nConverted);
76 rtl_destroyTextToUnicodeContext(aConverter, aContext);
77 rtl_destroyTextToUnicodeConverter(aConverter);
80 int j = 0;
81 for (int i = 0; i < 256; ++i) {
82 if (rSet.m_aMap[i] != 0xFFFF && aUnicode[j] != rSet.m_aMap[i]) {
83 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rSet.m_aMap[" + OUString::number(i) + "] == " +
84 OUString::number(rSet.m_aMap[i], 16)),
85 RTL_TEXTENCODING_UTF8).getStr(),
86 rSet.m_aMap[i] == 0xFFFF);
87 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aUnicode[" + OUString::number(j) + "] == " +
88 OUString::number(aUnicode[j], 16) +
89 ", rSet.m_aMap[" + OUString::number(i) + "] == " +
90 OUString::number(rSet.m_aMap[i], 16)),
91 RTL_TEXTENCODING_UTF8).getStr(),
92 aUnicode[j] == rSet.m_aMap[i]);
94 if (rSet.m_aMap[i] != 0xFFFF)
95 j++;
98 if (rSet.m_nEncoding == RTL_TEXTENCODING_ASCII_US) {
99 nNumber = 128;
102 rtl_UnicodeToTextConverter aConverter
103 = rtl_createUnicodeToTextConverter(rSet.m_nEncoding);
104 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rSet.m_nEncoding)) + ") failed"),
105 RTL_TEXTENCODING_UTF8).getStr(),
106 aConverter != NULL);
107 rtl_UnicodeToTextContext aContext
108 = rtl_createUnicodeToTextContext(aConverter);
109 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
110 sal_Size nSize;
111 sal_uInt32 nInfo;
112 sal_Size nConverted;
113 nSize = rtl_convertUnicodeToText(
114 aConverter, aContext, aUnicode, nNumber, aText, nNumber,
115 (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR
116 | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR),
117 &nInfo, &nConverted);
118 CPPUNIT_ASSERT_EQUAL(nNumber, nSize);
119 CPPUNIT_ASSERT_EQUAL((sal_uInt32)0, nInfo);
120 CPPUNIT_ASSERT_EQUAL(nNumber, nConverted);
121 rtl_destroyUnicodeToTextContext(aConverter, aContext);
122 rtl_destroyUnicodeToTextConverter(aConverter);
125 int j = 0;
126 for (int i = 0; i < 256; ++i) {
127 if (rSet.m_aMap[i] != 0xFFFF
128 && aText[j] != static_cast< sal_Char >(i))
130 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rSet.m_aMap[" + OUString::number(i) + "] == " +
131 OUString::number(rSet.m_aMap[i], 16)),
132 RTL_TEXTENCODING_UTF8).getStr(),
133 rSet.m_aMap[i] == 0xFFFF);
134 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aText[" + OUString::number(j) + "] == " +
135 OUString::number(i, 16)),
136 RTL_TEXTENCODING_UTF8).getStr(),
137 aText[j] == static_cast< sal_Char >(i));
139 if (rSet.m_aMap[i] != 0xFFFF)
140 j++;
143 for (int i = 0; i < 256; ++i) {
144 if (rSet.m_aMap[i] == 0xFFFF) {
145 aText[0] = static_cast< sal_Char >(i);
146 rtl_TextToUnicodeConverter aConverter
147 = rtl_createTextToUnicodeConverter(rSet.m_nEncoding);
148 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rSet.m_nEncoding)) + ") failed"),
149 RTL_TEXTENCODING_UTF8).getStr(),
150 aConverter != NULL);
151 rtl_TextToUnicodeContext aContext
152 = rtl_createTextToUnicodeContext(aConverter);
153 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
154 sal_Size nSize;
155 sal_uInt32 nInfo;
156 sal_Size nConverted;
157 nSize = rtl_convertTextToUnicode(
158 aConverter, aContext, aText, 1, aUnicode, 1,
159 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
160 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
161 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
162 &nInfo, &nConverted);
164 sal_uInt32 nExpectedInfo = (RTL_TEXTTOUNICODE_INFO_ERROR | RTL_TEXTTOUNICODE_INFO_UNDEFINED);
166 CPPUNIT_ASSERT_EQUAL((sal_Size) 0, nSize);
167 CPPUNIT_ASSERT_EQUAL(nExpectedInfo, nInfo);
168 CPPUNIT_ASSERT_EQUAL((sal_Size) 0, nConverted);
170 rtl_destroyTextToUnicodeContext(aConverter, aContext);
171 rtl_destroyTextToUnicodeConverter(aConverter);
176 int const TEST_STRING_SIZE = 1000;
178 struct ComplexCharSetTest {
179 rtl_TextEncoding m_nEncoding;
180 char const * m_pText;
181 sal_Size m_nTextSize;
182 sal_Unicode m_aUnicode[TEST_STRING_SIZE];
183 sal_Size m_nUnicodeSize;
184 bool m_bNoContext;
185 bool m_bForward;
186 bool m_bReverse;
187 bool m_bGlobalSignature;
188 sal_uInt32 m_nReverseUndefined;
191 void doComplexCharSetTest(ComplexCharSetTest const & rTest) {
192 if (rTest.m_bForward) {
193 sal_Unicode aUnicode[TEST_STRING_SIZE];
194 rtl_TextToUnicodeConverter aConverter
195 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
196 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rTest.m_nEncoding)) + ") failed"),
197 RTL_TEXTENCODING_UTF8).getStr(),
198 aConverter != NULL);
199 rtl_TextToUnicodeContext aContext
200 = rtl_createTextToUnicodeContext(aConverter);
201 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
202 sal_Size nSize;
203 sal_uInt32 nInfo;
204 sal_Size nConverted;
205 nSize = rtl_convertTextToUnicode(
206 aConverter, aContext,
207 reinterpret_cast< sal_Char const * >(rTest.m_pText),
208 rTest.m_nTextSize, aUnicode, TEST_STRING_SIZE,
209 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
210 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
211 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
212 | RTL_TEXTTOUNICODE_FLAGS_FLUSH
213 | (rTest.m_bGlobalSignature ?
214 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
215 &nInfo, &nConverted);
216 CPPUNIT_ASSERT_EQUAL(rTest.m_nUnicodeSize, nSize);
217 CPPUNIT_ASSERT_EQUAL((sal_uInt32) 0, nInfo);
218 CPPUNIT_ASSERT_EQUAL(rTest.m_nTextSize, nConverted);
220 rtl_destroyTextToUnicodeContext(aConverter, aContext);
221 rtl_destroyTextToUnicodeConverter(aConverter);
223 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
224 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aUnicode[" + OUString::number(i) + "] == " +
225 OUString::number(aUnicode[i], 16) +
226 ", rTest.m_aUnicode[" + OUString::number(i) + "] == " +
227 OUString::number(rTest.m_aUnicode[i], 16)),
228 RTL_TEXTENCODING_UTF8).getStr(),
229 aUnicode[i] == rTest.m_aUnicode[i]);
232 if (rTest.m_bForward) {
233 sal_Unicode aUnicode[TEST_STRING_SIZE];
234 rtl_TextToUnicodeConverter aConverter
235 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
236 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rTest.m_nEncoding)) + ") failed"),
237 RTL_TEXTENCODING_UTF8).getStr(),
238 aConverter != NULL);
239 rtl_TextToUnicodeContext aContext
240 = rtl_createTextToUnicodeContext(aConverter);
241 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
242 if (aContext != reinterpret_cast<rtl_TextToUnicodeContext>(1)) {
243 sal_Size nInput = 0;
244 sal_Size nOutput = 0;
245 for (bool bFlush = true; nInput < rTest.m_nTextSize || bFlush;) {
246 sal_Size nSrcBytes = 1;
247 sal_uInt32 nFlags
248 = (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
249 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
250 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
251 | (rTest.m_bGlobalSignature ?
252 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0));
253 if (nInput >= rTest.m_nTextSize) {
254 nSrcBytes = 0;
255 nFlags |= RTL_TEXTTOUNICODE_FLAGS_FLUSH;
256 bFlush = false;
258 sal_uInt32 nInfo;
259 sal_Size nConverted;
260 sal_Size nSize = rtl_convertTextToUnicode(
261 aConverter, aContext,
262 reinterpret_cast< sal_Char const * >(rTest.m_pText + nInput),
263 nSrcBytes, aUnicode + nOutput, TEST_STRING_SIZE - nOutput,
264 nFlags, &nInfo, &nConverted);
265 nOutput += nSize;
266 nInput += nConverted;
267 CPPUNIT_ASSERT_EQUAL((sal_uInt32) 0,
268 (nInfo & ~RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL));
270 CPPUNIT_ASSERT_EQUAL(rTest.m_nUnicodeSize, nOutput);
271 CPPUNIT_ASSERT_EQUAL(rTest.m_nTextSize, nInput);
273 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
274 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aUnicode[" + OUString::number(i) + "] == " +
275 OUString::number(aUnicode[i], 16) +
276 ", rTest.m_aUnicode[" + OUString::number(i) + "] == " +
277 OUString::number(rTest.m_aUnicode[i], 16)),
278 RTL_TEXTENCODING_UTF8).getStr(),
279 aUnicode[i] == rTest.m_aUnicode[i]);
282 rtl_destroyTextToUnicodeContext(aConverter, aContext);
283 rtl_destroyTextToUnicodeConverter(aConverter);
285 if (rTest.m_bNoContext && rTest.m_bForward) {
286 sal_Unicode aUnicode[TEST_STRING_SIZE] = { 0, };
287 int nSize = 0;
288 rtl_TextToUnicodeConverter aConverter
289 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
290 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rTest.m_nEncoding)) + ") failed"),
291 RTL_TEXTENCODING_UTF8).getStr(),
292 aConverter != NULL);
293 for (sal_Size i = 0;;) {
294 if (i == rTest.m_nTextSize) {
295 goto done;
297 sal_Char c1 = rTest.m_pText[i++];
298 sal_Unicode aUC[2];
299 sal_uInt32 nInfo = 0;
300 sal_Size nCvtBytes;
301 sal_Size nChars = rtl_convertTextToUnicode(
302 aConverter, 0, &c1, 1, aUC, 2,
303 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
304 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
305 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
306 | (rTest.m_bGlobalSignature ?
307 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
308 &nInfo, &nCvtBytes);
309 if ((nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) != 0) {
310 sal_Char sBuffer[10];
311 sBuffer[0] = c1;
312 sal_uInt16 nLen = 1;
313 while ((nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) != 0
314 && nLen < 10)
316 if (i == rTest.m_nTextSize) {
317 goto done;
319 c1 = rTest.m_pText[i++];
320 sBuffer[nLen++] = c1;
321 nChars = rtl_convertTextToUnicode(
322 aConverter, 0, sBuffer, nLen, aUC, 2,
323 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
324 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
325 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
326 | (rTest.m_bGlobalSignature ?
327 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
328 &nInfo, &nCvtBytes);
330 if (nChars == 1 && nInfo == 0) {
331 OSL_ASSERT(nCvtBytes == nLen);
332 aUnicode[nSize++] = aUC[0];
333 } else if (nChars == 2 && nInfo == 0) {
334 OSL_ASSERT(nCvtBytes == nLen);
335 aUnicode[nSize++] = aUC[0];
336 aUnicode[nSize++] = aUC[1];
337 } else {
338 OSL_ASSERT(
339 (nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) == 0
340 && nChars == 0 && nInfo != 0);
341 aUnicode[nSize++] = sBuffer[0];
342 i -= nLen - 1;
344 } else if (nChars == 1 && nInfo == 0) {
345 OSL_ASSERT(nCvtBytes == 1);
346 aUnicode[nSize++] = aUC[0];
347 } else if (nChars == 2 && nInfo == 0) {
348 OSL_ASSERT(nCvtBytes == 1);
349 aUnicode[nSize++] = aUC[0];
350 aUnicode[nSize++] = aUC[1];
351 } else {
352 OSL_ASSERT(nChars == 0 && nInfo != 0);
353 aUnicode[nSize++] = c1;
356 done:
357 rtl_destroyTextToUnicodeConverter(aConverter);
358 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
359 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aUnicode[" + OUString::number(i) + "] == " +
360 OUString::number(aUnicode[i], 16) +
361 ", rTest.m_aUnicode[" + OUString::number(i) + "] == " +
362 OUString::number(rTest.m_aUnicode[i], 16)),
363 RTL_TEXTENCODING_UTF8).getStr(),
364 aUnicode[i] == rTest.m_aUnicode[i]);
367 if (rTest.m_bReverse) {
368 sal_Char aText[TEST_STRING_SIZE];
369 rtl_UnicodeToTextConverter aConverter
370 = rtl_createUnicodeToTextConverter(rTest.m_nEncoding);
371 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rTest.m_nEncoding)) + ") failed"),
372 RTL_TEXTENCODING_UTF8).getStr(),
373 aConverter != NULL);
374 rtl_UnicodeToTextContext aContext
375 = rtl_createUnicodeToTextContext(aConverter);
376 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", aContext != NULL);
377 sal_Size nSize;
378 sal_uInt32 nInfo;
379 sal_Size nConverted;
380 nSize = rtl_convertUnicodeToText(
381 aConverter, aContext, rTest.m_aUnicode, rTest.m_nUnicodeSize, aText,
382 TEST_STRING_SIZE,
383 (rTest.m_nReverseUndefined | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR
384 | RTL_UNICODETOTEXT_FLAGS_FLUSH
385 | (rTest.m_bGlobalSignature ?
386 RTL_UNICODETOTEXT_FLAGS_GLOBAL_SIGNATURE : 0)),
387 &nInfo, &nConverted);
388 CPPUNIT_ASSERT_EQUAL(rTest.m_nTextSize, nSize);
389 if (nInfo != 0)
391 CPPUNIT_ASSERT_EQUAL(RTL_UNICODETOTEXT_INFO_UNDEFINED, nInfo);
392 CPPUNIT_ASSERT_MESSAGE("rTest.m_nReverseUndefined should not be RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR",
393 rTest.m_nReverseUndefined != RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR);
395 CPPUNIT_ASSERT_EQUAL(rTest.m_nUnicodeSize, nConverted);
396 rtl_destroyUnicodeToTextContext(aConverter, aContext);
397 rtl_destroyUnicodeToTextConverter(aConverter);
398 for (sal_Size i = 0; i < rTest.m_nTextSize; ++i) {
399 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aText[" + OUString::number(i) + "] == " +
400 OUString::number(aText[i], 16) +
401 ", rTest.m_pText[" + OUString::number(i) + "] == " +
402 OUString::number(rTest.m_pText[i], 16)),
403 RTL_TEXTENCODING_UTF8).getStr(),
404 aText[i] == rTest.m_pText[i]);
409 void doComplexCharSetCutTest(ComplexCharSetTest const & rTest) {
410 if (rTest.m_bNoContext) {
411 sal_Unicode aUnicode[TEST_STRING_SIZE];
412 rtl_TextToUnicodeConverter aConverter
413 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
414 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("rtl_createTextToUnicodeConverter(" + OUString::createFromAscii(rtl_getMimeCharsetFromTextEncoding(rTest.m_nEncoding)) + ") failed"),
415 RTL_TEXTENCODING_UTF8).getStr(),
416 aConverter != NULL);
417 sal_Size nSize;
418 sal_uInt32 nInfo;
419 sal_Size nConverted;
420 nSize = rtl_convertTextToUnicode(
421 aConverter, 0, reinterpret_cast< sal_Char const * >(rTest.m_pText),
422 rTest.m_nTextSize, aUnicode, TEST_STRING_SIZE,
423 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
424 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
425 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
426 &nInfo, &nConverted);
428 CPPUNIT_ASSERT_EQUAL(rTest.m_nUnicodeSize, nSize);
429 if (nInfo != RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL)
431 CPPUNIT_ASSERT_EQUAL(RTL_TEXTTOUNICODE_INFO_ERROR | RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL,
432 nInfo);
434 CPPUNIT_ASSERT_MESSAGE("nConverted should be less than rTest.m_nTextSize", nConverted < rTest.m_nTextSize);
436 rtl_destroyTextToUnicodeConverter(aConverter);
437 for (sal_Size i = 0; i < nSize; ++i) {
438 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(OUString("aUnicode[" + OUString::number(i) + "] == " +
439 OUString::number(aUnicode[i], 16) +
440 ", rTest.m_aUnicode[" + OUString::number(i) + "] == " +
441 OUString::number(rTest.m_aUnicode[i], 16)),
442 RTL_TEXTENCODING_UTF8).getStr(),
443 aUnicode[i] == rTest.m_aUnicode[i]);
448 class Test: public CppUnit::TestFixture {
449 public:
450 void testSingleByte();
452 void testComplex();
454 void testComplexCut();
456 void testSRCBUFFERTOSMALL();
458 void testMime();
460 void testWindows();
462 void testInfo();
464 CPPUNIT_TEST_SUITE(Test);
465 CPPUNIT_TEST(testSingleByte);
466 CPPUNIT_TEST(testComplex);
467 CPPUNIT_TEST(testComplexCut);
468 CPPUNIT_TEST(testSRCBUFFERTOSMALL);
469 CPPUNIT_TEST(testMime);
470 CPPUNIT_TEST(testWindows);
471 CPPUNIT_TEST(testInfo);
472 CPPUNIT_TEST_SUITE_END();
475 void Test::testSingleByte() {
476 static SingleByteCharSet const data[]
477 = { { RTL_TEXTENCODING_MS_1250,
478 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
479 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
480 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
481 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
482 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
483 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
484 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
485 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
486 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
487 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
488 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
489 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
490 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
491 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
492 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
493 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
494 0x20AC,0xFFFF,0x201A,0xFFFF,0x201E,0x2026,0x2020,0x2021,
495 0xFFFF,0x2030,0x0160,0x2039,0x015A,0x0164,0x017D,0x0179,
496 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
497 0xFFFF,0x2122,0x0161,0x203A,0x015B,0x0165,0x017E,0x017A,
498 0x00A0,0x02C7,0x02D8,0x0141,0x00A4,0x0104,0x00A6,0x00A7,
499 0x00A8,0x00A9,0x015E,0x00AB,0x00AC,0x00AD,0x00AE,0x017B,
500 0x00B0,0x00B1,0x02DB,0x0142,0x00B4,0x00B5,0x00B6,0x00B7,
501 0x00B8,0x0105,0x015F,0x00BB,0x013D,0x02DD,0x013E,0x017C,
502 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
503 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
504 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
505 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
506 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
507 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
508 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
509 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9 } },
510 { RTL_TEXTENCODING_MS_1251,
511 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
512 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
513 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
514 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
515 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
516 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
517 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
518 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
519 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
520 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
521 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
522 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
523 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
524 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
525 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
526 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
527 0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
528 0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
529 0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
530 0xFFFF,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
531 0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
532 0x0401,0x00A9,0x0404,0x00AB,0x00AC,0x00AD,0x00AE,0x0407,
533 0x00B0,0x00B1,0x0406,0x0456,0x0491,0x00B5,0x00B6,0x00B7,
534 0x0451,0x2116,0x0454,0x00BB,0x0458,0x0405,0x0455,0x0457,
535 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,
536 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
537 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,
538 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
539 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
540 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
541 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,
542 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } },
543 { RTL_TEXTENCODING_MS_1252,
544 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
545 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
546 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
547 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
548 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
549 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
550 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
551 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
552 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
553 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
554 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
555 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
556 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
557 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
558 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
559 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
560 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
561 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0x017D,0xFFFF,
562 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
563 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0x017E,0x0178,
564 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
565 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
566 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
567 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
568 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
569 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
570 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
571 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
572 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
573 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
574 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
575 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF } },
576 { RTL_TEXTENCODING_MS_1253,
577 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
578 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
579 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
580 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
581 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
582 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
583 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
584 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
585 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
586 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
587 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
588 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
589 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
590 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
591 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
592 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
593 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
594 0xFFFF,0x2030,0xFFFF,0x2039,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
595 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
596 0xFFFF,0x2122,0xFFFF,0x203A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
597 0x00A0,0x0385,0x0386,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
598 0x00A8,0x00A9,0xFFFF,0x00AB,0x00AC,0x00AD,0x00AE,0x2015,
599 0x00B0,0x00B1,0x00B2,0x00B3,0x0384,0x00B5,0x00B6,0x00B7,
600 0x0388,0x0389,0x038A,0x00BB,0x038C,0x00BD,0x038E,0x038F,
601 0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,
602 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
603 0x03A0,0x03A1,0xFFFF,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,
604 0x03A8,0x03A9,0x03AA,0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,
605 0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,
606 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,
607 0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,
608 0x03C8,0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0xFFFF } },
609 { RTL_TEXTENCODING_MS_1254,
610 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
611 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
612 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
613 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
614 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
615 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
616 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
617 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
618 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
619 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
620 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
621 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
622 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
623 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
624 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
625 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
626 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
627 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0xFFFF,0xFFFF,
628 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
629 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0xFFFF,0x0178,
630 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
631 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
632 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
633 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
634 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
635 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
636 0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
637 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF,
638 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
639 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
640 0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
641 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF } },
642 { RTL_TEXTENCODING_APPLE_ROMAN,
643 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
644 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
645 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
646 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
647 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
648 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
649 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
650 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
651 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
652 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
653 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
654 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
655 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
656 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
657 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
658 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E, 0x7F,
659 0x00C4,0x00C5,0x00C7,0x00C9,0x00D1,0x00D6,0x00DC,0x00E1,
660 0x00E0,0x00E2,0x00E4,0x00E3,0x00E5,0x00E7,0x00E9,0x00E8,
661 0x00EA,0x00EB,0x00ED,0x00EC,0x00EE,0x00EF,0x00F1,0x00F3,
662 0x00F2,0x00F4,0x00F6,0x00F5,0x00FA,0x00F9,0x00FB,0x00FC,
663 0x2020,0x00B0,0x00A2,0x00A3,0x00A7,0x2022,0x00B6,0x00DF,
664 0x00AE,0x00A9,0x2122,0x00B4,0x00A8,0x2260,0x00C6,0x00D8,
665 0x221E,0x00B1,0x2264,0x2265,0x00A5,0x00B5,0x2202,0x2211,
666 0x220F,0x03C0,0x222B,0x00AA,0x00BA,0x03A9,0x00E6,0x00F8,
667 0x00BF,0x00A1,0x00AC,0x221A,0x0192,0x2248,0x2206,0x00AB,
668 0x00BB,0x2026,0x00A0,0x00C0,0x00C3,0x00D5,0x0152,0x0153,
669 0x2013,0x2014,0x201C,0x201D,0x2018,0x2019,0x00F7,0x25CA,
670 0x00FF,0x0178,0x2044,0x20AC,0x2039,0x203A,0xFB01,0xFB02,
671 0x2021,0x00B7,0x201A,0x201E,0x2030,0x00C2,0x00CA,0x00C1,
672 0x00CB,0x00C8,0x00CD,0x00CE,0x00CF,0x00CC,0x00D3,0x00D4,
673 0xF8FF,0x00D2,0x00DA,0x00DB,0x00D9,0x0131,0x02C6,0x02DC,
674 0x00AF,0x02D8,0x02D9,0x02DA,0x00B8,0x02DD,0x02DB,0x02C7 } },
675 { RTL_TEXTENCODING_IBM_437,
676 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
677 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
678 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
679 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
680 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
681 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
682 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
683 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
684 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
685 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
686 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
687 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
688 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
689 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
690 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
691 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
692 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,
693 0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5,
694 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,
695 0x00ff,0x00d6,0x00dc,0x00a2,0x00a3,0x00a5,0x20a7,0x0192,
696 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,
697 0x00bf,0x2310,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb,
698 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556,
699 0x2555,0x2563,0x2551,0x2557,0x255d,0x255c,0x255b,0x2510,
700 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x255e,0x255f,
701 0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x2567,
702 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256b,
703 0x256a,0x2518,0x250c,0x2588,0x2584,0x258c,0x2590,0x2580,
704 0x03b1,0x00df,0x0393,0x03c0,0x03a3,0x03c3,0x00b5,0x03c4,
705 0x03a6,0x0398,0x03a9,0x03b4,0x221e,0x03c6,0x03b5,0x2229,
706 0x2261,0x00b1,0x2265,0x2264,0x2320,0x2321,0x00f7,0x2248,
707 0x00b0,0x2219,0x00b7,0x221a,0x207f,0x00b2,0x25a0,0x00a0 } },
709 { RTL_TEXTENCODING_ASCII_US,
710 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
711 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
712 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
713 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
714 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
715 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
716 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
717 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
718 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
719 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
720 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
721 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
722 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
723 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
724 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
725 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
726 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, // !
727 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0x017D,0xFFFF, // !
728 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, // !
729 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0x017E,0x0178, // !
730 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
731 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
732 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
733 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
734 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
735 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
736 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
737 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
738 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
739 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
740 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
741 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF } },
742 { RTL_TEXTENCODING_ISO_8859_1,
743 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
744 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
745 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
746 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
747 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
748 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
749 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
750 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
751 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
752 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
753 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
754 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
755 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
756 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
757 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
758 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
759 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
760 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
761 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
762 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
763 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
764 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
765 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
766 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
767 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
768 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
769 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
770 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
771 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
772 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
773 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
774 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF } },
775 { RTL_TEXTENCODING_ISO_8859_2,
776 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
777 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
778 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
779 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
780 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
781 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
782 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
783 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
784 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
785 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
786 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
787 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
788 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
789 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
790 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
791 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
792 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
793 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
794 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
795 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
796 0x00A0,0x0104,0x02D8,0x0141,0x00A4,0x013D,0x015A,0x00A7,
797 0x00A8,0x0160,0x015E,0x0164,0x0179,0x00AD,0x017D,0x017B,
798 0x00B0,0x0105,0x02DB,0x0142,0x00B4,0x013E,0x015B,0x02C7,
799 0x00B8,0x0161,0x015F,0x0165,0x017A,0x02DD,0x017E,0x017C,
800 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
801 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
802 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
803 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
804 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
805 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
806 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
807 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9 } },
808 { RTL_TEXTENCODING_ISO_8859_3,
809 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
810 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
811 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
812 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
813 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
814 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
815 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
816 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
817 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
818 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
819 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
820 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
821 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
822 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
823 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
824 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
825 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
826 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
827 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
828 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
829 0x00A0,0x0126,0x02D8,0x00A3,0x00A4,0xFFFF,0x0124,0x00A7,
830 0x00A8,0x0130,0x015E,0x011E,0x0134,0x00AD,0xFFFF,0x017B,
831 0x00B0,0x0127,0x00B2,0x00B3,0x00B4,0x00B5,0x0125,0x00B7,
832 0x00B8,0x0131,0x015F,0x011F,0x0135,0x00BD,0xFFFF,0x017C,
833 0x00C0,0x00C1,0x00C2,0xFFFF,0x00C4,0x010A,0x0108,0x00C7,
834 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
835 0xFFFF,0x00D1,0x00D2,0x00D3,0x00D4,0x0120,0x00D6,0x00D7,
836 0x011C,0x00D9,0x00DA,0x00DB,0x00DC,0x016C,0x015C,0x00DF,
837 0x00E0,0x00E1,0x00E2,0xFFFF,0x00E4,0x010B,0x0109,0x00E7,
838 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
839 0xFFFF,0x00F1,0x00F2,0x00F3,0x00F4,0x0121,0x00F6,0x00F7,
840 0x011D,0x00F9,0x00FA,0x00FB,0x00FC,0x016D,0x015D,0x02D9 } },
842 { RTL_TEXTENCODING_ISO_8859_6,
843 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
844 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
845 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
846 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
847 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
848 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
849 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
850 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
851 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
852 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
853 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
854 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
855 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
856 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
857 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
858 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
859 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
860 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
861 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
862 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
863 0x00A0,0xFFFF,0xFFFF,0xFFFF,0x00A4,0xFFFF,0xFFFF,0xFFFF,
864 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x060C,0x00AD,0xFFFF,0xFFFF,
865 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
866 0xFFFF,0xFFFF,0xFFFF,0x061B,0xFFFF,0xFFFF,0xFFFF,0x061F,
867 0xFFFF,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,
868 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F,
869 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x0637,
870 0x0638,0x0639,0x063A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
871 0x0640,0x0641,0x0642,0x0643,0x0644,0x0645,0x0646,0x0647,
872 0x0648,0x0649,0x064A,0x064B,0x064C,0x064D,0x064E,0x064F,
873 0x0650,0x0651,0x0652,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
874 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
876 { RTL_TEXTENCODING_ISO_8859_8,
877 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
878 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
879 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
880 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
881 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
882 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
883 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
884 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
885 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
886 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
887 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
888 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
889 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
890 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
891 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
892 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
893 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
894 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
895 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
896 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
897 0x00A0,0xFFFF,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
898 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
899 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
900 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0xFFFF,
901 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
902 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
903 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
904 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2017,
905 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7,
906 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF,
907 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7,
908 0x05E8,0x05E9,0x05EA,0xFFFF,0xFFFF,0x200E,0x200F,0xFFFF } },
910 { RTL_TEXTENCODING_TIS_620,
911 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
912 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
913 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
914 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
915 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
916 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
917 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
918 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
919 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
920 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
921 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
922 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
923 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
924 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
925 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
926 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
927 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
928 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
929 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
930 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
931 0x00A0,0x0E01,0x0E02,0x0E03,0x0E04,0x0E05,0x0E06,0x0E07, // !
932 0x0E08,0x0E09,0x0E0A,0x0E0B,0x0E0C,0x0E0D,0x0E0E,0x0E0F,
933 0x0E10,0x0E11,0x0E12,0x0E13,0x0E14,0x0E15,0x0E16,0x0E17,
934 0x0E18,0x0E19,0x0E1A,0x0E1B,0x0E1C,0x0E1D,0x0E1E,0x0E1F,
935 0x0E20,0x0E21,0x0E22,0x0E23,0x0E24,0x0E25,0x0E26,0x0E27,
936 0x0E28,0x0E29,0x0E2A,0x0E2B,0x0E2C,0x0E2D,0x0E2E,0x0E2F,
937 0x0E30,0x0E31,0x0E32,0x0E33,0x0E34,0x0E35,0x0E36,0x0E37,
938 0x0E38,0x0E39,0x0E3A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0E3F,
939 0x0E40,0x0E41,0x0E42,0x0E43,0x0E44,0x0E45,0x0E46,0x0E47,
940 0x0E48,0x0E49,0x0E4A,0x0E4B,0x0E4C,0x0E4D,0x0E4E,0x0E4F,
941 0x0E50,0x0E51,0x0E52,0x0E53,0x0E54,0x0E55,0x0E56,0x0E57,
942 0x0E58,0x0E59,0x0E5A,0x0E5B,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
943 { RTL_TEXTENCODING_MS_874,
944 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
945 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
946 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
947 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
948 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
949 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
950 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
951 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
952 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
953 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
954 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
955 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
956 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
957 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
958 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
959 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
960 0x20AC,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2026,0xFFFF,0xFFFF,
961 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
962 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
963 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
964 0x00A0,0x0E01,0x0E02,0x0E03,0x0E04,0x0E05,0x0E06,0x0E07,
965 0x0E08,0x0E09,0x0E0A,0x0E0B,0x0E0C,0x0E0D,0x0E0E,0x0E0F,
966 0x0E10,0x0E11,0x0E12,0x0E13,0x0E14,0x0E15,0x0E16,0x0E17,
967 0x0E18,0x0E19,0x0E1A,0x0E1B,0x0E1C,0x0E1D,0x0E1E,0x0E1F,
968 0x0E20,0x0E21,0x0E22,0x0E23,0x0E24,0x0E25,0x0E26,0x0E27,
969 0x0E28,0x0E29,0x0E2A,0x0E2B,0x0E2C,0x0E2D,0x0E2E,0x0E2F,
970 0x0E30,0x0E31,0x0E32,0x0E33,0x0E34,0x0E35,0x0E36,0x0E37,
971 0x0E38,0x0E39,0x0E3A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0E3F,
972 0x0E40,0x0E41,0x0E42,0x0E43,0x0E44,0x0E45,0x0E46,0x0E47,
973 0x0E48,0x0E49,0x0E4A,0x0E4B,0x0E4C,0x0E4D,0x0E4E,0x0E4F,
974 0x0E50,0x0E51,0x0E52,0x0E53,0x0E54,0x0E55,0x0E56,0x0E57,
975 0x0E58,0x0E59,0x0E5A,0x0E5B,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
976 { RTL_TEXTENCODING_MS_1255,
977 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
978 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
979 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
980 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
981 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
982 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
983 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
984 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
985 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
986 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
987 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
988 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
989 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
990 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
991 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
992 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
993 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
994 0x02C6,0x2030,0xFFFF,0x2039,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
995 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
996 0x02DC,0x2122,0xFFFF,0x203A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
997 0x00A0,0x00A1,0x00A2,0x00A3,0x20AA,0x00A5,0x00A6,0x00A7,
998 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
999 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1000 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
1001 0x05B0,0x05B1,0x05B2,0x05B3,0x05B4,0x05B5,0x05B6,0x05B7,
1002 0x05B8,0x05B9,0xFFFF,0x05BB,0x05BC,0x05BD,0x05BE,0x05BF,
1003 0x05C0,0x05C1,0x05C2,0x05C3,0x05F0,0x05F1,0x05F2,0x05F3,
1004 0x05F4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1005 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7,
1006 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF,
1007 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7,
1008 0x05E8,0x05E9,0x05EA,0xFFFF,0xFFFF,0x200E,0x200F,0xFFFF } },
1009 { RTL_TEXTENCODING_MS_1256,
1010 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1011 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1012 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1013 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1014 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1015 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1016 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1017 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1018 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1019 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1020 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1021 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1022 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1023 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1024 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1025 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1026 0x20AC,0x067E,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
1027 0x02C6,0x2030,0x0679,0x2039,0x0152,0x0686,0x0698,0x0688,
1028 0x06AF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1029 0x06A9,0x2122,0x0691,0x203A,0x0153,0x200C,0x200D,0x06BA,
1030 0x00A0,0x060C,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
1031 0x00A8,0x00A9,0x06BE,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
1032 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1033 0x00B8,0x00B9,0x061B,0x00BB,0x00BC,0x00BD,0x00BE,0x061F,
1034 0x06C1,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,
1035 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F,
1036 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x00D7,
1037 0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
1038 0x00E0,0x0644,0x00E2,0x0645,0x0646,0x0647,0x0648,0x00E7,
1039 0x00E8,0x00E9,0x00EA,0x00EB,0x0649,0x064A,0x00EE,0x00EF,
1040 0x064B,0x064C,0x064D,0x064E,0x00F4,0x064F,0x0650,0x00F7,
1041 0x0651,0x00F9,0x0652,0x00FB,0x00FC,0x200E,0x200F,0x06D2 } },
1042 { RTL_TEXTENCODING_MS_1257,
1043 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1044 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1045 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1046 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1047 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1048 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1049 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1050 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1051 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1052 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1053 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1054 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1055 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1056 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1057 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1058 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1059 0x20AC,0xFFFF,0x201A,0xFFFF,0x201E,0x2026,0x2020,0x2021,
1060 0xFFFF,0x2030,0xFFFF,0x2039,0xFFFF,0x00A8,0x02C7,0x00B8,
1061 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1062 0xFFFF,0x2122,0xFFFF,0x203A,0xFFFF,0x00AF,0x02DB,0xFFFF,
1063 0x00A0,0xFFFF,0x00A2,0x00A3,0x00A4,0xFFFF,0x00A6,0x00A7,
1064 0x00D8,0x00A9,0x0156,0x00AB,0x00AC,0x00AD,0x00AE,0x00C6,
1065 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1066 0x00F8,0x00B9,0x0157,0x00BB,0x00BC,0x00BD,0x00BE,0x00E6,
1067 0x0104,0x012E,0x0100,0x0106,0x00C4,0x00C5,0x0118,0x0112,
1068 0x010C,0x00C9,0x0179,0x0116,0x0122,0x0136,0x012A,0x013B,
1069 0x0160,0x0143,0x0145,0x00D3,0x014C,0x00D5,0x00D6,0x00D7,
1070 0x0172,0x0141,0x015A,0x016A,0x00DC,0x017B,0x017D,0x00DF,
1071 0x0105,0x012F,0x0101,0x0107,0x00E4,0x00E5,0x0119,0x0113,
1072 0x010D,0x00E9,0x017A,0x0117,0x0123,0x0137,0x012B,0x013C,
1073 0x0161,0x0144,0x0146,0x00F3,0x014D,0x00F5,0x00F6,0x00F7,
1074 0x0173,0x0142,0x015B,0x016B,0x00FC,0x017C,0x017E,0x02D9 } },
1075 { RTL_TEXTENCODING_MS_1258,
1076 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1077 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1078 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1079 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1080 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1081 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1082 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1083 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1084 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1085 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1086 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1087 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1088 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1089 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1090 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1091 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1092 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
1093 0x02C6,0x2030,0xFFFF,0x2039,0x0152,0xFFFF,0xFFFF,0xFFFF,
1094 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1095 0x02DC,0x2122,0xFFFF,0x203A,0x0153,0xFFFF,0xFFFF,0x0178,
1096 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
1097 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
1098 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1099 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
1100 0x00C0,0x00C1,0x00C2,0x0102,0x00C4,0x00C5,0x00C6,0x00C7,
1101 0x00C8,0x00C9,0x00CA,0x00CB,0x0300,0x00CD,0x00CE,0x00CF,
1102 0x0110,0x00D1,0x0309,0x00D3,0x00D4,0x01A0,0x00D6,0x00D7,
1103 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x01AF,0x0303,0x00DF,
1104 0x00E0,0x00E1,0x00E2,0x0103,0x00E4,0x00E5,0x00E6,0x00E7,
1105 0x00E8,0x00E9,0x00EA,0x00EB,0x0301,0x00ED,0x00EE,0x00EF,
1106 0x0111,0x00F1,0x0323,0x00F3,0x00F4,0x01A1,0x00F6,0x00F7,
1107 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x01B0,0x20AB,0x00FF } },
1108 { RTL_TEXTENCODING_KOI8_U, // RFC 2319
1109 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1110 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1111 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1112 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1113 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1114 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1115 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1116 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1117 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1118 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1119 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1120 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1121 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1122 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1123 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1124 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1125 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,
1126 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,
1127 0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,
1128 0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,
1129 0x2550,0x2551,0x2552,0x0451,0x0454,0x2554,0x0456,0x0457,
1130 0x2557,0x2558,0x2559,0x255A,0x255B,0x0491,0x255D,0x255E,
1131 0x255F,0x2560,0x2561,0x0401,0x0404,0x2563,0x0406,0x0407,
1132 0x2566,0x2567,0x2568,0x2569,0x256A,0x0490,0x256C,0x00A9,
1133 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,
1134 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,
1135 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,
1136 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A,
1137 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,
1138 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,
1139 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,
1140 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A } },
1141 { RTL_TEXTENCODING_ADOBE_STANDARD,
1142 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1143 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1144 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1145 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1146 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x2019,
1147 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1148 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1149 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1150 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1151 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1152 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1153 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1154 0x2018,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1155 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1156 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1157 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0xFFFF,
1158 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1159 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1160 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1161 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1162 0xFFFF,0x00A1,0x00A2,0x00A3,0x2215,0x00A5,0x0192,0x00A7,
1163 0x00A4,0x0027,0x201C,0x00AB,0x2039,0x203A,0xFB01,0xFB02,
1164 0xFFFF,0x2013,0x2020,0x2021,0x00B7,0xFFFF,0x00B6,0x2022,
1165 0x201A,0x201E,0x201D,0x00BB,0x2026,0x2030,0xFFFF,0x00BF,
1166 0xFFFF,0x0060,0x00B4,0x02C6,0x02DC,0x00AF,0x02D8,0x02D9,
1167 0x00A8,0xFFFF,0x02DA,0x00B8,0xFFFF,0x02DD,0x02DB,0x02C7,
1168 0x2014,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1169 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1170 0xFFFF,0x00C6,0xFFFF,0x00AA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1171 0x0141,0x00D8,0x0152,0x00BA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1172 0xFFFF,0x00E6,0xFFFF,0xFFFF,0xFFFF,0x0131,0xFFFF,0xFFFF,
1173 0x0142,0x00F8,0x0153,0x00DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
1174 { RTL_TEXTENCODING_ADOBE_SYMBOL,
1175 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1176 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1177 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1178 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1179 0x0020,0x0021,0x2200,0x0023,0x2203,0x0025,0x0026,0x220B,
1180 0x0028,0x0029,0x2217,0x002B,0x002C,0x2212,0x002E,0x002F,
1181 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1182 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1183 0x2245,0x0391,0x0392,0x03A7,0x0394,0x0395,0x03A6,0x0393,
1184 0x0397,0x0399,0x03D1,0x039A,0x039B,0x039C,0x039D,0x039F,
1185 0x03A0,0x0398,0x03A1,0x03A3,0x03A4,0x03A5,0x03C2,0x03A9,
1186 0x039E,0x03A8,0x0396,0x005B,0x2234,0x005D,0x22A5,0x005F,
1187 0xF8E5,0x03B1,0x03B2,0x03C7,0x03B4,0x03B5,0x03C6,0x03B3,
1188 0x03B7,0x03B9,0x03D5,0x03BA,0x03BB,0x03BC,0x03BD,0x03BF,
1189 0x03C0,0x03B8,0x03C1,0x03C3,0x03C4,0x03C5,0x03D6,0x03C9,
1190 0x03BE,0x03C8,0x03B6,0x007B,0x007C,0x007D,0x223C,0xFFFF,
1191 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1192 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1193 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1194 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1195 0x20AC,0x03D2,0x2032,0x2264,0x2215,0x221E,0x0192,0x2663,
1196 0x2666,0x2665,0x2660,0x2194,0x2190,0x2191,0x2192,0x2193,
1197 0x00B0,0x00B1,0x2033,0x2265,0x00D7,0x221D,0x2202,0x2022,
1198 0x00F7,0x2260,0x2261,0x2248,0x2026,0x23AF,0x23D0,0x21B5,
1199 0x2135,0x2111,0x211C,0x2118,0x2297,0x2295,0x2205,0x2229,
1200 0x222A,0x2283,0x2287,0x2284,0x2282,0x2286,0x2208,0x2209,
1201 0x2220,0x2207,0xF6DA,0xF6D9,0xF6DB,0x220F,0x221A,0x22C5,
1202 0x00AC,0x2227,0x2228,0x21D4,0x21D0,0x21D1,0x21D2,0x21D3,
1203 0x25CA,0x2329,0xF8E8,0xF8E9,0xF8EA,0x2211,0x239B,0x239C,
1204 0x239D,0x23A1,0x23A2,0x23A3,0x23A7,0x23A8,0x23A9,0x23AA,
1205 0xFFFF,0x232A,0x222B,0x2320,0x23AE,0x2321,0x239E,0x239F,
1206 0x23A0,0x23A4,0x23A5,0x23A6,0x23AB,0x23AC,0x23AD,0xFFFF } },
1207 { RTL_TEXTENCODING_ADOBE_DINGBATS,
1208 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1209 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1210 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1211 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1212 // 20
1213 0x0020,0x2701,0x2702,0x2703,0x2704,0x260E,0x2706,0x2707,
1214 0x2708,0x2709,0x261B,0x261E,0x270C,0x270D,0x270E,0x270F,
1215 0x2710,0x2711,0x2712,0x2713,0x2714,0x2715,0x2716,0x2717,
1216 0x2718,0x2719,0x271A,0x271B,0x271C,0x271D,0x271E,0x271F,
1217 // 40
1218 0x2720,0x2721,0x2722,0x2723,0x2724,0x2725,0x2726,0x2727,
1219 0x2605,0x2729,0x272A,0x272B,0x272C,0x272D,0x272E,0x272F,
1220 0x2730,0x2731,0x2732,0x2733,0x2734,0x2735,0x2736,0x2737,
1221 0x2738,0x2739,0x273A,0x273B,0x273C,0x273D,0x273E,0x273F,
1222 // 60
1223 0x2740,0x2741,0x2742,0x2743,0x2744,0x2745,0x2746,0x2747,
1224 0x2748,0x2749,0x274A,0x274B,0x25CF,0x274D,0x25A0,0x274F,
1225 0x2750,0x2751,0x2752,0x25B2,0x25BC,0x25C6,0x2756,0x25D7,
1226 0x2758,0x2759,0x275A,0x275B,0x275C,0x275D,0x275E,0xFFFF,
1227 // 80
1228 0xF8D7,0xF8D8,0xF8D9,0xF8DA,0xF8DB,0xF8DC,0xF8DD,0xF8DE,
1229 0xF8DF,0xF8E0,0xF8E1,0xF8E2,0xF8E3,0xF8E4,0xFFFF,0xFFFF,
1230 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1231 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1232 // A0
1233 0xFFFF,0x2761,0x2762,0x2763,0x2764,0x2765,0x2766,0x2767,
1234 0x2663,0x2666,0x2665,0x2660,0x2460,0x2461,0x2462,0x2463,
1235 0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2776,0x2777,
1236 0x2778,0x2779,0x277A,0x277B,0x277C,0x277D,0x277E,0x277F,
1237 // C0
1238 0x2780,0x2781,0x2782,0x2783,0x2784,0x2785,0x2786,0x2787,
1239 0x2788,0x2789,0x278A,0x278B,0x278C,0x278D,0x278E,0x278F,
1240 0x2790,0x2791,0x2792,0x2793,0x2794,0x2795,0x2796,0x2797,
1241 0x2798,0x2799,0x279A,0x279B,0x279C,0x279D,0x279E,0x279F,
1242 // E0
1243 0x27A0,0x27A1,0x27A2,0x27A3,0x27A4,0x27A5,0x27A6,0x27A7,
1244 0x27A8,0x27A9,0x27AA,0x27AB,0x27AC,0x27AD,0x27AE,0x27AF,
1245 0xFFFF,0x27B1,0x27B2,0x27B3,0x27B4,0x27B5,0x27B6,0x27B7,
1246 0x27B8,0x27B9,0x27BA,0x27BB,0x27BC,0x27BD,0x27BE,0xFFFF } },
1247 { RTL_TEXTENCODING_PT154,
1248 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1249 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1250 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1251 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1252 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1253 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1254 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1255 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1256 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1257 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1258 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1259 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1260 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1261 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1262 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1263 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1264 0x0496,0x0492,0x04EE,0x0493,0x201E,0x2026,0x04B6,0x04AE,
1265 0x04B2,0x04AF,0x04A0,0x04E2,0x04A2,0x049A,0x04BA,0x04B8,
1266 0x0497,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1267 0x04B3,0x04B7,0x04A1,0x04E3,0x04A3,0x049B,0x04BB,0x04B9,
1268 0x00A0,0x040E,0x045E,0x0408,0x04E8,0x0498,0x04B0,0x00A7,
1269 0x0401,0x00A9,0x04D8,0x00AB,0x00AC,0x04EF,0x00AE,0x049C,
1270 0x00B0,0x04B1,0x0406,0x0456,0x0499,0x04E9,0x00B6,0x00B7,
1271 0x0451,0x2116,0x04D9,0x00BB,0x0458,0x04AA,0x04AB,0x049D,
1272 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,
1273 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
1274 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,
1275 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
1276 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
1277 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
1278 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,
1279 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } } };
1280 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
1281 testSingleByteCharSet(data[i]);
1285 void Test::testComplex() {
1286 static ComplexCharSetTest const data[]
1287 = { { RTL_TEXTENCODING_ASCII_US,
1288 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~"),
1289 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E },
1291 true,
1292 true,
1293 true,
1294 false,
1295 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1296 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
1297 { RTL_TEXTENCODING_EUC_CN,
1298 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~\xA1\xB9\xF0\xC5"),
1299 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,
1300 0x300D,0x9E4B },
1302 true,
1303 true,
1304 true,
1305 false,
1306 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1307 { RTL_TEXTENCODING_EUC_TW,
1308 RTL_CONSTASCII_STRINGPARAM(
1309 "\x01\"3De$~\xC5\xF0\x8E\xA4\xDC\xD9"),
1310 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,
1311 0x4ED9,0xD87E,0xDD68 },
1313 true,
1314 true,
1315 true,
1316 false,
1317 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1318 { RTL_TEXTENCODING_GB_18030,
1319 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~"),
1320 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E },
1322 true,
1323 true,
1324 true,
1325 false,
1326 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1327 { RTL_TEXTENCODING_GB_18030,
1328 RTL_CONSTASCII_STRINGPARAM("\x81\x40\xFE\xFE"),
1329 { 0x4E02,0xE4C5 },
1331 true,
1332 true,
1333 true,
1334 false,
1335 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1336 { RTL_TEXTENCODING_GB_18030,
1337 RTL_CONSTASCII_STRINGPARAM(
1338 "\x81\x30\xB1\x33\x81\x30\xD3\x30\x81\x36\xA5\x31"),
1339 { 0x028A,0x0452,0x200F },
1341 true,
1342 true,
1343 true,
1344 false,
1345 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1346 { RTL_TEXTENCODING_GB_18030,
1347 RTL_CONSTASCII_STRINGPARAM(
1348 "\xFE\x50\xFE\x51\xFE\x52\xFE\x53\xFE\x54\xFE\x55\xFE\x56"
1349 "\xFE\x57\xFE\x58\xFE\x59\xFE\x5A\xFE\x5B\xFE\x5C\xFE\x5D"
1350 "\xFE\x5E\xFE\x5F\xFE\x60\xFE\x61\xFE\x62\xFE\x63\xFE\x64"
1351 "\xFE\x65\xFE\x66\xFE\x67\xFE\x68\xFE\x69\xFE\x6A\xFE\x6B"
1352 "\xFE\x6C\xFE\x6D\xFE\x6E\xFE\x6F\xFE\x70\xFE\x71\xFE\x72"
1353 "\xFE\x73\xFE\x74\xFE\x75\xFE\x76\xFE\x77\xFE\x78\xFE\x79"
1354 "\xFE\x7A\xFE\x7B\xFE\x7C\xFE\x7D\xFE\x7E\xFE\x80\xFE\x81"
1355 "\xFE\x82\xFE\x83\xFE\x84\xFE\x85\xFE\x86\xFE\x87\xFE\x88"
1356 "\xFE\x89\xFE\x8A\xFE\x8B\xFE\x8C\xFE\x8D\xFE\x8E\xFE\x8F"
1357 "\xFE\x90\xFE\x91\xFE\x92\xFE\x93\xFE\x94\xFE\x95\xFE\x96"
1358 "\xFE\x97\xFE\x98\xFE\x99\xFE\x9A\xFE\x9B\xFE\x9C\xFE\x9D"
1359 "\xFE\x9E\xFE\x9F\xFE\xA0"),
1360 { 0x2E81,0xE816,0xE817,0xE818,0x2E84,0x3473,0x3447,0x2E88,
1361 0x2E8B,0xE81E,0x359E,0x361A,0x360E,0x2E8C,0x2E97,0x396E,
1362 0x3918,0xE826,0x39CF,0x39DF,0x3A73,0x39D0,0xE82B,0xE82C,
1363 0x3B4E,0x3C6E,0x3CE0,0x2EA7,0xE831,0xE832,0x2EAA,0x4056,
1364 0x415F,0x2EAE,0x4337,0x2EB3,0x2EB6,0x2EB7,0xE83B,0x43B1,
1365 0x43AC,0x2EBB,0x43DD,0x44D6,0x4661,0x464C,0xE843,0x4723,
1366 0x4729,0x477C,0x478D,0x2ECA,0x4947,0x497A,0x497D,0x4982,
1367 0x4983,0x4985,0x4986,0x499F,0x499B,0x49B7,0x49B6,0xE854,
1368 0xE855,0x4CA3,0x4C9F,0x4CA0,0x4CA1,0x4C77,0x4CA2,0x4D13,
1369 0x4D14,0x4D15,0x4D16,0x4D17,0x4D18,0x4D19,0x4DAE,0xE864 },
1371 true,
1372 true,
1373 false,
1374 false,
1375 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1376 #endif
1377 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
1378 { RTL_TEXTENCODING_ISO_2022_JP,
1379 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$\\~"),
1380 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1382 false,
1383 true,
1384 true,
1385 false,
1386 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1387 { RTL_TEXTENCODING_ISO_2022_JP,
1388 RTL_CONSTASCII_STRINGPARAM("\x1B(B\x01\"3De$\\~"),
1389 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1391 false,
1392 true,
1393 false,
1394 false,
1395 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1396 { RTL_TEXTENCODING_ISO_2022_JP,
1397 RTL_CONSTASCII_STRINGPARAM("\x1B(J\x01\"3De$\\~"),
1398 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x00A5,0x00AF },
1400 false,
1401 true,
1402 false,
1403 false,
1404 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1405 { RTL_TEXTENCODING_ISO_2022_JP,
1406 RTL_CONSTASCII_STRINGPARAM("\x1B$B\x26\x21\x27\x71\x1B(B"),
1407 { 0x0391,0x044F },
1409 false,
1410 true,
1411 true,
1412 false,
1413 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1414 #endif
1415 #if WITH_LOCALE_ALL || WITH_LOCALE_ko
1416 { RTL_TEXTENCODING_ISO_2022_KR,
1417 RTL_CONSTASCII_STRINGPARAM("\x1B$)C\x01\"3De$\\~"),
1418 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1420 false,
1421 true,
1422 true,
1423 false,
1424 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1425 { RTL_TEXTENCODING_ISO_2022_KR,
1426 RTL_CONSTASCII_STRINGPARAM(
1427 "\x1B$)C\x0E\x25\x21\x0F\x0D\x0Ax\x0E\x48\x7E\x0F"),
1428 { 0x2170,0x000D,0x000A,0x0078,0xD79D },
1430 false,
1431 true,
1432 true,
1433 false,
1434 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1435 #endif
1436 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
1437 { RTL_TEXTENCODING_ISO_2022_CN,
1438 RTL_CONSTASCII_STRINGPARAM(
1439 "\x01\"3De$\\~\x1B$)G\x0E\x45\x70\x1B$*H\x1BN\x22\x22"
1440 "\x45\x70\x0F\x1B$)A\x0E\x26\x21\x0F"),
1441 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E,
1442 0x4ED9,0x531F,0x4ED9,0x0391 },
1444 false,
1445 true,
1446 false,
1447 false,
1448 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1449 { RTL_TEXTENCODING_ISO_2022_CN,
1450 RTL_CONSTASCII_STRINGPARAM(
1451 "\x01\"3De$\\~\x1B$)A\x0E\x26\x21\x1B$*H\x1BN\x22\x22"
1452 "\x26\x21\x0F\x0D\x0A\x1B$)A\x0E\x26\x21\x0F"),
1453 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E,
1454 0x0391,0x531F,0x0391,0x000D,0x000A,0x0391 },
1456 false,
1457 true,
1458 true,
1459 false,
1460 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1461 #endif
1462 // The following does not work as long as Big5-HKSCS maps to
1463 // Unicode PUA instead of Plane 2. Use the next two tests
1464 // instead:
1465 // { RTL_TEXTENCODING_BIG5_HKSCS,
1466 // RTL_CONSTASCII_STRINGPARAM(
1467 // "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1468 // { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1469 // 0xFFED,0xD849,0xDD13,0x3000,0x9F98 },
1470 // 13,
1471 // true,
1472 // true,
1473 // true,
1474 // false,
1475 // RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1476 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
1477 { RTL_TEXTENCODING_BIG5_HKSCS,
1478 RTL_CONSTASCII_STRINGPARAM(
1479 "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1480 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1481 0xFFED,0xE01E,0x3000,0x9F98 },
1483 true,
1484 true,
1485 true,
1486 false,
1487 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1488 { RTL_TEXTENCODING_BIG5_HKSCS,
1489 RTL_CONSTASCII_STRINGPARAM(
1490 "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1491 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1492 0xFFED,0xD849,0xDD13,0x3000,0x9F98 },
1494 true,
1495 false,
1496 true,
1497 false,
1498 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1499 { RTL_TEXTENCODING_BIG5_HKSCS,
1500 RTL_CONSTASCII_STRINGPARAM(
1501 "\xC6\xA1\xC6\xCF\xC6\xD3\xC6\xD5\xC6\xD7\xC6\xDE\xC6\xDF"
1502 "\xC6\xFE\xC7\x40\xC7\x7E\xC7\xA1\xC7\xFE"),
1503 { 0x2460,0xF6E0,0xF6E4,0xF6E6,0xF6E8,0xF6EF,0xF6F0,0x3058,
1504 0x3059,0x30A4,0x30A5,0x041A },
1506 true,
1507 true,
1508 true,
1509 false,
1510 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1511 { RTL_TEXTENCODING_BIG5_HKSCS,
1512 RTL_CONSTASCII_STRINGPARAM("\x81\x40\x84\xFE"),
1513 { 0xEEB8,0xF12B },
1515 true,
1516 true,
1517 true,
1518 false,
1519 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1520 { RTL_TEXTENCODING_BIG5_HKSCS,
1521 RTL_CONSTASCII_STRINGPARAM(
1522 "\x81\x40\x8D\xFE\x8E\x40\xA0\xFE\xC6\xA1\xC8\xFE\xFA\x40"
1523 "\xFE\xFE"),
1524 { 0xEEB8,0xF6B0,0xE311,0xEEB7,0xF6B1,0xF848,0xE000,0xE310 },
1526 true,
1527 false,
1528 true,
1529 false,
1530 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1531 { RTL_TEXTENCODING_BIG5_HKSCS,
1532 RTL_CONSTASCII_STRINGPARAM("\xAD\xC5\x94\x55"),
1533 { 0x5029,0x7250 },
1535 true,
1536 true,
1537 true,
1538 false,
1539 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1540 { RTL_TEXTENCODING_BIG5_HKSCS,
1541 RTL_CONSTASCII_STRINGPARAM("\xFA\x5F\xA0\xE4"),
1542 { 0x5029,0x7250 },
1544 true,
1545 true,
1546 false,
1547 false,
1548 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1549 { RTL_TEXTENCODING_BIG5_HKSCS,
1550 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1551 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1553 true,
1554 false,
1555 true,
1556 false,
1557 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1558 { RTL_TEXTENCODING_BIG5,
1559 RTL_CONSTASCII_STRINGPARAM("\xA1\x45"),
1560 { 0x2027 },
1562 true,
1563 true,
1564 true,
1565 false,
1566 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1567 { RTL_TEXTENCODING_BIG5,
1568 RTL_CONSTASCII_STRINGPARAM(
1569 "\xC6\xCF\xC6\xD3\xC6\xD5\xC6\xD7\xC6\xDE\xC6\xDF"),
1570 { 0x306B,0x306F,0x3071,0x3073,0x307A,0x307B },
1572 true,
1573 true,
1574 true,
1575 false,
1576 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1577 { RTL_TEXTENCODING_BIG5,
1578 RTL_CONSTASCII_STRINGPARAM(
1579 "\xC7\xFD\xC7\xFE\xC8\x40\xC8\x7E\xC8\xA1\xC8\xFE"),
1580 { 0xF7AA,0xF7AB,0xF7AC,0xF7EA,0xF7EB,0xF848 },
1582 true,
1583 true,
1584 true,
1585 false,
1586 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1587 { RTL_TEXTENCODING_BIG5,
1588 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1589 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1591 true,
1592 true,
1593 true,
1594 false,
1595 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1596 #endif
1597 { RTL_TEXTENCODING_MS_950,
1598 RTL_CONSTASCII_STRINGPARAM(
1599 "\xC6\xA1\xC6\xFE\xC7\x40\xC7\x7E\xC7\xA1\xC7\xFE\xC8\x40"
1600 "\xC8\x7E\xC8\xA1\xC8\xFE"),
1601 { 0xF6B1,0xF70E,0xF70F,0xF74D,0xF74E,0xF7AB,0xF7AC,0xF7EA,
1602 0xF7EB,0xF848 },
1604 true,
1605 true,
1606 true,
1607 false,
1608 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1609 { RTL_TEXTENCODING_MS_950,
1610 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1611 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1613 true,
1614 true,
1615 true,
1616 false,
1617 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1619 // Test Unicode beyond BMP:
1621 // FIXME The second m_bForward test (requiring a context) does not
1622 // work for UTF7:
1623 // { RTL_TEXTENCODING_UTF7,
1624 // RTL_CONSTASCII_STRINGPARAM("+2EndEw-"),
1625 // { 0xD849,0xDD13 },
1626 // 2,
1627 // true,
1628 // true,
1629 // true,
1630 // false,
1631 // RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1632 { RTL_TEXTENCODING_UTF8,
1633 RTL_CONSTASCII_STRINGPARAM("\xF0\xA2\x94\x93"),
1634 { 0xD849,0xDD13 },
1636 true,
1637 true,
1638 true,
1639 false,
1640 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1641 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
1642 { RTL_TEXTENCODING_GB_18030,
1643 RTL_CONSTASCII_STRINGPARAM("\x95\x39\xC5\x37"),
1644 { 0xD849,0xDD13 },
1646 true,
1647 true,
1648 true,
1649 false,
1650 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1651 { RTL_TEXTENCODING_BIG5_HKSCS,
1652 RTL_CONSTASCII_STRINGPARAM("\xFA\x5E"),
1653 { 0xD849,0xDD13 },
1655 true,
1656 false,
1657 true,
1658 false,
1659 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1661 // Test GBK (aka CP936):
1663 { RTL_TEXTENCODING_GBK,
1664 RTL_CONSTASCII_STRINGPARAM("\xFD\x7C\xC1\xFA\xFD\x9B"),
1665 { 0x9F76,0x9F99,0x9FA5 },
1667 true,
1668 true,
1669 true,
1670 false,
1671 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1672 #endif
1673 { RTL_TEXTENCODING_MS_936,
1674 RTL_CONSTASCII_STRINGPARAM("\xFD\x7C\xC1\xFA\xFD\x9B"),
1675 { 0x9F76,0x9F99,0x9FA5 },
1677 true,
1678 true,
1679 true,
1680 false,
1681 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1682 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
1683 { RTL_TEXTENCODING_GBK,
1684 RTL_CONSTASCII_STRINGPARAM(
1685 "\xFE\x50\xFE\x54\xFE\x55\xFE\x56"
1686 "\xFE\x57\xFE\x58\xFE\x5A\xFE\x5B\xFE\x5C\xFE\x5D"
1687 "\xFE\x5E\xFE\x5F\xFE\x60\xFE\x62\xFE\x63\xFE\x64"
1688 "\xFE\x65\xFE\x68\xFE\x69\xFE\x6A\xFE\x6B"
1689 "\xFE\x6E\xFE\x6F\xFE\x70\xFE\x71\xFE\x72"
1690 "\xFE\x73\xFE\x74\xFE\x75\xFE\x77\xFE\x78\xFE\x79"
1691 "\xFE\x7A\xFE\x7B\xFE\x7C\xFE\x7D\xFE\x80\xFE\x81"
1692 "\xFE\x82\xFE\x83\xFE\x84\xFE\x85\xFE\x86\xFE\x87\xFE\x88"
1693 "\xFE\x89\xFE\x8A\xFE\x8B\xFE\x8C\xFE\x8D\xFE\x8E\xFE\x8F"
1694 "\xFE\x92\xFE\x93\xFE\x94\xFE\x95\xFE\x96"
1695 "\xFE\x97\xFE\x98\xFE\x99\xFE\x9A\xFE\x9B\xFE\x9C\xFE\x9D"
1696 "\xFE\x9E\xFE\x9F"),
1697 { 0x2E81,0x2E84,0x3473,0x3447,0x2E88,0x2E8B,0x359E,0x361A,
1698 0x360E,0x2E8C,0x2E97,0x396E,0x3918,0x39CF,0x39DF,0x3A73,
1699 0x39D0,0x3B4E,0x3C6E,0x3CE0,0x2EA7,0x2EAA,0x4056,0x415F,
1700 0x2EAE,0x4337,0x2EB3,0x2EB6,0x2EB7,0x43B1,0x43AC,0x2EBB,
1701 0x43DD,0x44D6,0x4661,0x464C,0x4723,0x4729,0x477C,0x478D,
1702 0x2ECA,0x4947,0x497A,0x497D,0x4982,0x4983,0x4985,0x4986,
1703 0x499F,0x499B,0x49B7,0x49B6,0x4CA3,0x4C9F,0x4CA0,0x4CA1,
1704 0x4C77,0x4CA2,0x4D13,0x4D14,0x4D15,0x4D16,0x4D17,0x4D18,
1705 0x4D19,0x4DAE },
1707 true,
1708 true,
1709 true,
1710 false,
1711 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1712 #endif
1713 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
1714 { RTL_TEXTENCODING_EUC_JP,
1715 RTL_CONSTASCII_STRINGPARAM("?"),
1716 { 0xFF0D },
1718 true,
1719 false,
1720 true,
1721 false,
1722 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_QUESTIONMARK },
1723 #endif
1724 // Test of "JIS X 0208 row 13" (taken from CP932; added to
1725 // ISO-2022-JP and EUC-JP; 74 of the 83 characters introduce
1726 // mappings to new Unicode characters):
1727 { RTL_TEXTENCODING_MS_932,
1728 RTL_CONSTASCII_STRINGPARAM(
1729 "\x87\x40\x87\x41\x87\x42\x87\x43\x87\x44\x87\x45\x87\x46"
1730 "\x87\x47\x87\x48\x87\x49\x87\x4A\x87\x4B\x87\x4C\x87\x4D"
1731 "\x87\x4E\x87\x4F\x87\x50\x87\x51\x87\x52\x87\x53\x87\x54"
1732 "\x87\x55\x87\x56\x87\x57\x87\x58\x87\x59\x87\x5A\x87\x5B"
1733 "\x87\x5C\x87\x5D\x87\x5F\x87\x60\x87\x61\x87\x62\x87\x63"
1734 "\x87\x64\x87\x65\x87\x66\x87\x67\x87\x68\x87\x69\x87\x6A"
1735 "\x87\x6B\x87\x6C\x87\x6D\x87\x6E\x87\x6F\x87\x70\x87\x71"
1736 "\x87\x72\x87\x73\x87\x74\x87\x75\x87\x7E\x87\x80\x87\x81"
1737 "\x87\x82\x87\x83\x87\x84\x87\x85\x87\x86\x87\x87\x87\x88"
1738 "\x87\x89\x87\x8A\x87\x8B\x87\x8C\x87\x8D\x87\x8E\x87\x8F"
1739 "\x87\x90\x87\x91\x87\x92\x87\x93\x87\x94\x87\x95\x87\x96"
1740 "\x87\x97\x87\x98\x87\x99\x87\x9A\x87\x9B\x87\x9C"),
1741 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1742 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1743 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1744 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1745 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1746 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1747 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1748 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1749 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1750 0x2229,0x222A },
1752 true,
1753 true,
1754 false,
1755 false,
1756 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1757 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
1758 { RTL_TEXTENCODING_SHIFT_JIS,
1759 RTL_CONSTASCII_STRINGPARAM(
1760 "\x87\x40\x87\x41\x87\x42\x87\x43\x87\x44\x87\x45\x87\x46"
1761 "\x87\x47\x87\x48\x87\x49\x87\x4A\x87\x4B\x87\x4C\x87\x4D"
1762 "\x87\x4E\x87\x4F\x87\x50\x87\x51\x87\x52\x87\x53\x87\x54"
1763 "\x87\x55\x87\x56\x87\x57\x87\x58\x87\x59\x87\x5A\x87\x5B"
1764 "\x87\x5C\x87\x5D\x87\x5F\x87\x60\x87\x61\x87\x62\x87\x63"
1765 "\x87\x64\x87\x65\x87\x66\x87\x67\x87\x68\x87\x69\x87\x6A"
1766 "\x87\x6B\x87\x6C\x87\x6D\x87\x6E\x87\x6F\x87\x70\x87\x71"
1767 "\x87\x72\x87\x73\x87\x74\x87\x75\x87\x7E\x87\x80\x87\x81"
1768 "\x87\x82\x87\x83\x87\x84\x87\x85\x87\x86\x87\x87\x87\x88"
1769 "\x87\x89\x87\x8A\x87\x8B\x87\x8C\x87\x8D\x87\x8E\x87\x8F"
1770 "\x87\x90\x87\x91\x87\x92\x87\x93\x87\x94\x87\x95\x87\x96"
1771 "\x87\x97\x87\x98\x87\x99\x87\x9A\x87\x9B\x87\x9C"),
1772 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1773 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1774 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1775 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1776 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1777 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1778 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1779 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1780 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1781 0x2229,0x222A },
1783 true,
1784 true,
1785 false,
1786 false,
1787 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1788 { RTL_TEXTENCODING_ISO_2022_JP,
1789 RTL_CONSTASCII_STRINGPARAM(
1790 "\x1B$B\x2D\x21\x2D\x22\x2D\x23\x2D\x24\x2D\x25\x2D\x26"
1791 "\x2D\x27\x2D\x28\x2D\x29\x2D\x2A\x2D\x2B\x2D\x2C\x2D\x2D"
1792 "\x2D\x2E\x2D\x2F\x2D\x30\x2D\x31\x2D\x32\x2D\x33\x2D\x34"
1793 "\x2D\x35\x2D\x36\x2D\x37\x2D\x38\x2D\x39\x2D\x3A\x2D\x3B"
1794 "\x2D\x3C\x2D\x3D\x2D\x3E\x2D\x40\x2D\x41\x2D\x42\x2D\x43"
1795 "\x2D\x44\x2D\x45\x2D\x46\x2D\x47\x2D\x48\x2D\x49\x2D\x4A"
1796 "\x2D\x4B\x2D\x4C\x2D\x4D\x2D\x4E\x2D\x4F\x2D\x50\x2D\x51"
1797 "\x2D\x52\x2D\x53\x2D\x54\x2D\x55\x2D\x56\x2D\x5F\x2D\x60"
1798 "\x2D\x61\x2D\x62\x2D\x63\x2D\x64\x2D\x65\x2D\x66\x2D\x67"
1799 "\x2D\x68\x2D\x69\x2D\x6A\x2D\x6B\x2D\x6C\x2D\x6D\x2D\x6E"
1800 "\x2D\x6F\x2D\x70\x2D\x71\x2D\x72\x2D\x73\x2D\x74\x2D\x75"
1801 "\x2D\x76\x2D\x77\x2D\x78\x2D\x79\x2D\x7A\x2D\x7B\x2D\x7C"
1802 "\x1B(B"),
1803 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1804 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1805 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1806 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1807 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1808 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1809 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1810 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1811 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1812 0x2229,0x222A },
1814 false,
1815 true,
1816 false,
1817 false,
1818 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1819 { RTL_TEXTENCODING_ISO_2022_JP,
1820 RTL_CONSTASCII_STRINGPARAM(
1821 "\x1B$B\x2D\x21\x2D\x22\x2D\x23\x2D\x24\x2D\x25\x2D\x26"
1822 "\x2D\x27\x2D\x28\x2D\x29\x2D\x2A\x2D\x2B\x2D\x2C\x2D\x2D"
1823 "\x2D\x2E\x2D\x2F\x2D\x30\x2D\x31\x2D\x32\x2D\x33\x2D\x34"
1824 "\x2D\x35\x2D\x36\x2D\x37\x2D\x38\x2D\x39\x2D\x3A\x2D\x3B"
1825 "\x2D\x3C\x2D\x3D\x2D\x3E\x2D\x40\x2D\x41\x2D\x42\x2D\x43"
1826 "\x2D\x44\x2D\x45\x2D\x46\x2D\x47\x2D\x48\x2D\x49\x2D\x4A"
1827 "\x2D\x4B\x2D\x4C\x2D\x4D\x2D\x4E\x2D\x4F\x2D\x50\x2D\x51"
1828 "\x2D\x52\x2D\x53\x2D\x54\x2D\x55\x2D\x56\x2D\x5F\x2D\x60"
1829 "\x2D\x61\x2D\x62\x2D\x63\x2D\x64\x2D\x65\x2D\x66\x2D\x67"
1830 "\x2D\x68\x2D\x69\x2D\x6A\x2D\x6B\x2D\x6C\x2D\x6D\x2D\x6E"
1831 "\x2D\x6F\x2D\x73\x2D\x74\x2D\x78\x2D\x79\x1B(B"),
1832 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1833 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1834 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1835 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1836 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1837 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1838 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1839 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x222E,0x2211,
1840 0x221F,0x22BF },
1842 false,
1843 true,
1844 true,
1845 false,
1846 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1847 { RTL_TEXTENCODING_EUC_JP,
1848 RTL_CONSTASCII_STRINGPARAM(
1849 "\xAD\xA1\xAD\xA2\xAD\xA3\xAD\xA4\xAD\xA5\xAD\xA6\xAD\xA7"
1850 "\xAD\xA8\xAD\xA9\xAD\xAA\xAD\xAB\xAD\xAC\xAD\xAD\xAD\xAE"
1851 "\xAD\xAF\xAD\xB0\xAD\xB1\xAD\xB2\xAD\xB3\xAD\xB4\xAD\xB5"
1852 "\xAD\xB6\xAD\xB7\xAD\xB8\xAD\xB9\xAD\xBA\xAD\xBB\xAD\xBC"
1853 "\xAD\xBD\xAD\xBE\xAD\xC0\xAD\xC1\xAD\xC2\xAD\xC3\xAD\xC4"
1854 "\xAD\xC5\xAD\xC6\xAD\xC7\xAD\xC8\xAD\xC9\xAD\xCA\xAD\xCB"
1855 "\xAD\xCC\xAD\xCD\xAD\xCE\xAD\xCF\xAD\xD0\xAD\xD1\xAD\xD2"
1856 "\xAD\xD3\xAD\xD4\xAD\xD5\xAD\xD6\xAD\xDF\xAD\xE0\xAD\xE1"
1857 "\xAD\xE2\xAD\xE3\xAD\xE4\xAD\xE5\xAD\xE6\xAD\xE7\xAD\xE8"
1858 "\xAD\xE9\xAD\xEA\xAD\xEB\xAD\xEC\xAD\xED\xAD\xEE\xAD\xEF"
1859 "\xAD\xF0\xAD\xF1\xAD\xF2\xAD\xF3\xAD\xF4\xAD\xF5\xAD\xF6"
1860 "\xAD\xF7\xAD\xF8\xAD\xF9\xAD\xFA\xAD\xFB\xAD\xFC"),
1861 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1862 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1863 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1864 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1865 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1866 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1867 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1868 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1869 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1870 0x2229,0x222A },
1872 true,
1873 true,
1874 false,
1875 false,
1876 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1877 { RTL_TEXTENCODING_EUC_JP,
1878 RTL_CONSTASCII_STRINGPARAM(
1879 "\xAD\xA1\xAD\xA2\xAD\xA3\xAD\xA4\xAD\xA5\xAD\xA6\xAD\xA7"
1880 "\xAD\xA8\xAD\xA9\xAD\xAA\xAD\xAB\xAD\xAC\xAD\xAD\xAD\xAE"
1881 "\xAD\xAF\xAD\xB0\xAD\xB1\xAD\xB2\xAD\xB3\xAD\xB4\xAD\xB5"
1882 "\xAD\xB6\xAD\xB7\xAD\xB8\xAD\xB9\xAD\xBA\xAD\xBB\xAD\xBC"
1883 "\xAD\xBD\xAD\xBE\xAD\xC0\xAD\xC1\xAD\xC2\xAD\xC3\xAD\xC4"
1884 "\xAD\xC5\xAD\xC6\xAD\xC7\xAD\xC8\xAD\xC9\xAD\xCA\xAD\xCB"
1885 "\xAD\xCC\xAD\xCD\xAD\xCE\xAD\xCF\xAD\xD0\xAD\xD1\xAD\xD2"
1886 "\xAD\xD3\xAD\xD4\xAD\xD5\xAD\xD6\xAD\xDF\xAD\xE0\xAD\xE1"
1887 "\xAD\xE2\xAD\xE3\xAD\xE4\xAD\xE5\xAD\xE6\xAD\xE7\xAD\xE8"
1888 "\xAD\xE9\xAD\xEA\xAD\xEB\xAD\xEC\xAD\xED\xAD\xEE\xAD\xEF"
1889 "\xAD\xF3\xAD\xF4\xAD\xF8\xAD\xF9"),
1890 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1891 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1892 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1893 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1894 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1895 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1896 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1897 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x222E,0x2211,
1898 0x221F,0x22BF },
1900 true,
1901 true,
1902 true,
1903 false,
1904 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1906 { RTL_TEXTENCODING_EUC_JP,
1907 RTL_CONSTASCII_STRINGPARAM("\xB9\xF5"),
1908 { 0x9ED2 },
1910 true,
1911 true,
1912 true,
1913 false,
1914 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1915 #endif
1916 // Test ISO-8859-x/MS-125x range 0x80--9F:
1918 { RTL_TEXTENCODING_ISO_8859_1,
1919 RTL_CONSTASCII_STRINGPARAM(
1920 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1921 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1922 "\x9E\x9F"),
1923 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1924 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1925 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1926 0x009B,0x009C,0x009D,0x009E,0x009F },
1928 true,
1929 true,
1930 true,
1931 false,
1932 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1933 { RTL_TEXTENCODING_ISO_8859_2,
1934 RTL_CONSTASCII_STRINGPARAM(
1935 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1936 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1937 "\x9E\x9F"),
1938 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1939 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1940 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1941 0x009B,0x009C,0x009D,0x009E,0x009F },
1943 true,
1944 true,
1945 true,
1946 false,
1947 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1948 { RTL_TEXTENCODING_ISO_8859_3,
1949 RTL_CONSTASCII_STRINGPARAM(
1950 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1951 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1952 "\x9E\x9F"),
1953 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1954 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1955 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1956 0x009B,0x009C,0x009D,0x009E,0x009F },
1958 true,
1959 true,
1960 true,
1961 false,
1962 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1963 { RTL_TEXTENCODING_ISO_8859_4,
1964 RTL_CONSTASCII_STRINGPARAM(
1965 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1966 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1967 "\x9E\x9F"),
1968 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1969 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1970 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1971 0x009B,0x009C,0x009D,0x009E,0x009F },
1973 true,
1974 true,
1975 true,
1976 false,
1977 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1978 { RTL_TEXTENCODING_ISO_8859_5,
1979 RTL_CONSTASCII_STRINGPARAM(
1980 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1981 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1982 "\x9E\x9F"),
1983 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1984 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1985 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1986 0x009B,0x009C,0x009D,0x009E,0x009F },
1988 true,
1989 true,
1990 true,
1991 false,
1992 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1993 { RTL_TEXTENCODING_ISO_8859_6,
1994 RTL_CONSTASCII_STRINGPARAM(
1995 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1996 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1997 "\x9E\x9F"),
1998 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1999 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2000 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2001 0x009B,0x009C,0x009D,0x009E,0x009F },
2003 true,
2004 true,
2005 true,
2006 false,
2007 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2008 { RTL_TEXTENCODING_ISO_8859_7,
2009 RTL_CONSTASCII_STRINGPARAM(
2010 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2011 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2012 "\x9E\x9F"),
2013 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2014 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2015 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2016 0x009B,0x009C,0x009D,0x009E,0x009F },
2018 true,
2019 true,
2020 true,
2021 false,
2022 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2023 { RTL_TEXTENCODING_ISO_8859_8,
2024 RTL_CONSTASCII_STRINGPARAM(
2025 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2026 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2027 "\x9E\x9F"),
2028 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2029 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2030 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2031 0x009B,0x009C,0x009D,0x009E,0x009F },
2033 true,
2034 true,
2035 true,
2036 false,
2037 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2038 { RTL_TEXTENCODING_ISO_8859_9,
2039 RTL_CONSTASCII_STRINGPARAM(
2040 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2041 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2042 "\x9E\x9F"),
2043 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2044 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2045 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2046 0x009B,0x009C,0x009D,0x009E,0x009F },
2048 true,
2049 true,
2050 true,
2051 false,
2052 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2053 { RTL_TEXTENCODING_ISO_8859_14,
2054 RTL_CONSTASCII_STRINGPARAM(
2055 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2056 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2057 "\x9E\x9F"),
2058 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2059 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2060 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2061 0x009B,0x009C,0x009D,0x009E,0x009F },
2063 true,
2064 true,
2065 true,
2066 false,
2067 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2068 { RTL_TEXTENCODING_ISO_8859_15,
2069 RTL_CONSTASCII_STRINGPARAM(
2070 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2071 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2072 "\x9E\x9F"),
2073 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2074 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2075 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2076 0x009B,0x009C,0x009D,0x009E,0x009F },
2078 true,
2079 true,
2080 true,
2081 false,
2082 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2083 { RTL_TEXTENCODING_MS_874,
2084 RTL_CONSTASCII_STRINGPARAM(""),
2085 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2086 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2087 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2088 0x009B,0x009C,0x009D,0x009E,0x009F },
2090 true,
2091 false,
2092 true,
2093 false,
2094 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2095 { RTL_TEXTENCODING_MS_1250,
2096 RTL_CONSTASCII_STRINGPARAM(""),
2097 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2098 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2099 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2100 0x009B,0x009C,0x009D,0x009E,0x009F },
2102 true,
2103 false,
2104 true,
2105 false,
2106 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2107 { RTL_TEXTENCODING_MS_1251,
2108 RTL_CONSTASCII_STRINGPARAM(""),
2109 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2110 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2111 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2112 0x009B,0x009C,0x009D,0x009E,0x009F },
2114 true,
2115 false,
2116 true,
2117 false,
2118 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2119 { RTL_TEXTENCODING_MS_1252,
2120 RTL_CONSTASCII_STRINGPARAM(""),
2121 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2122 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2123 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2124 0x009B,0x009C,0x009D,0x009E,0x009F },
2126 true,
2127 false,
2128 true,
2129 false,
2130 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2131 { RTL_TEXTENCODING_MS_1253,
2132 RTL_CONSTASCII_STRINGPARAM(""),
2133 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2134 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2135 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2136 0x009B,0x009C,0x009D,0x009E,0x009F },
2138 true,
2139 false,
2140 true,
2141 false,
2142 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2143 { RTL_TEXTENCODING_MS_1254,
2144 RTL_CONSTASCII_STRINGPARAM(""),
2145 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2146 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2147 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2148 0x009B,0x009C,0x009D,0x009E,0x009F },
2150 true,
2151 false,
2152 true,
2153 false,
2154 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2155 { RTL_TEXTENCODING_MS_1255,
2156 RTL_CONSTASCII_STRINGPARAM(""),
2157 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2158 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2159 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2160 0x009B,0x009C,0x009D,0x009E,0x009F },
2162 true,
2163 false,
2164 true,
2165 false,
2166 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2167 { RTL_TEXTENCODING_MS_1256,
2168 RTL_CONSTASCII_STRINGPARAM(""),
2169 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2170 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2171 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2172 0x009B,0x009C,0x009D,0x009E,0x009F },
2174 true,
2175 false,
2176 true,
2177 false,
2178 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2179 { RTL_TEXTENCODING_MS_1257,
2180 RTL_CONSTASCII_STRINGPARAM(""),
2181 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2182 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2183 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2184 0x009B,0x009C,0x009D,0x009E,0x009F },
2186 true,
2187 false,
2188 true,
2189 false,
2190 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2191 { RTL_TEXTENCODING_MS_1258,
2192 RTL_CONSTASCII_STRINGPARAM(""),
2193 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2194 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2195 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2196 0x009B,0x009C,0x009D,0x009E,0x009F },
2198 true,
2199 false,
2200 true,
2201 false,
2202 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2203 { RTL_TEXTENCODING_MS_949,
2204 RTL_CONSTASCII_STRINGPARAM(
2205 "\xB0\xA1\xB0\xA2\x81\x41\x81\x42\xB0\xA3\x81\x43\x81\x44"
2206 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7\x81\x45\x81\x46\x81\x47"
2207 "\x81\x48\x81\x49\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2208 "\xB0\xAD\xB0\xAE\xB0\xAF\x81\x4A\xB0\xB0\xB0\xB1\xB0\xB2"),
2209 { 0xAC00,0xAC01,0xAC02,0xAC03,0xAC04,0xAC05,0xAC06,0xAC07,0xAC08,
2210 0xAC09,0xAC0A,0xAC0B,0xAC0C,0xAC0D,0xAC0E,0xAC0F,0xAC10,0xAC11,
2211 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17,0xAC18,0xAC19,0xAC1A,
2212 0xAC1B },
2214 true,
2215 true,
2216 true,
2217 false,
2218 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2219 { RTL_TEXTENCODING_MS_949,
2220 RTL_CONSTASCII_STRINGPARAM(
2221 "\xC9\xA1\xC9\xA2\xC9\xA3\xC9\xFC\xC9\xFD\xC9\xFE"
2222 "\xFE\xA1\xFE\xA2\xFE\xA3\xFE\xFC\xFE\xFD\xFE\xFE"),
2223 { 0xE000,0xE001,0xE002,0xE05B,0xE05C,0xE05D,
2224 0xE05E,0xE05F,0xE060,0xE0B9,0xE0BA,0xE0BB },
2226 true,
2227 true,
2228 true,
2229 false,
2230 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2231 #if WITH_LOCALE_ALL || WITH_LOCALE_ko
2232 { RTL_TEXTENCODING_EUC_KR,
2233 RTL_CONSTASCII_STRINGPARAM(
2234 "\xB0\xA1\xB0\xA2" "\xB0\xA3"
2235 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7"
2236 "\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2237 "\xB0\xAD\xB0\xAE\xB0\xAF" "\xB0\xB0\xB0\xB1\xB0\xB2"),
2238 { 0xAC00,0xAC01, 0xAC04, 0xAC07,0xAC08,
2239 0xAC09,0xAC0A, 0xAC10,0xAC11,
2240 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17, 0xAC19,0xAC1A,
2241 0xAC1B },
2243 true,
2244 true,
2245 true,
2246 false,
2247 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2248 { RTL_TEXTENCODING_EUC_KR,
2249 RTL_CONSTASCII_STRINGPARAM(
2250 "\xB0\xA1\xB0\xA2" "\xB0\xA3"
2251 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7"
2252 "\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2253 "\xB0\xAD\xB0\xAE\xB0\xAF" "\xB0\xB0\xB0\xB1\xB0\xB2"),
2254 { 0xAC00,0xAC01,0xAC02,0xAC03,0xAC04,0xAC05,0xAC06,0xAC07,0xAC08,
2255 0xAC09,0xAC0A,0xAC0B,0xAC0C,0xAC0D,0xAC0E,0xAC0F,0xAC10,0xAC11,
2256 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17,0xAC18,0xAC19,0xAC1A,
2257 0xAC1B },
2259 true,
2260 false,
2261 true,
2262 false,
2263 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2264 { RTL_TEXTENCODING_EUC_KR,
2265 RTL_CONSTASCII_STRINGPARAM(
2266 "\xC9\xA1\xC9\xA2\xC9\xA3\xC9\xFC\xC9\xFD\xC9\xFE"
2267 "\xFE\xA1\xFE\xA2\xFE\xA3\xFE\xFC\xFE\xFD\xFE\xFE"),
2268 { 0xE000,0xE001,0xE002,0xE05B,0xE05C,0xE05D,
2269 0xE05E,0xE05F,0xE060,0xE0B9,0xE0BA,0xE0BB },
2271 true,
2272 true,
2273 true,
2274 false,
2275 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2276 #endif
2277 // Test UTF-8:
2279 { RTL_TEXTENCODING_UTF8,
2280 RTL_CONSTASCII_STRINGPARAM("\x00"),
2281 { 0x0000 },
2283 false,
2284 true,
2285 true,
2286 false,
2287 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2288 { RTL_TEXTENCODING_UTF8,
2289 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF"),
2290 { 0xFEFF },
2292 false,
2293 true,
2294 true,
2295 false,
2296 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2297 { RTL_TEXTENCODING_UTF8,
2298 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF\xEF\xBB\xBF"),
2299 { 0xFEFF,0xFEFF },
2301 false,
2302 true,
2303 true,
2304 false,
2305 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2306 { RTL_TEXTENCODING_UTF8,
2307 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF"),
2308 { 0 },
2310 false,
2311 true,
2312 true,
2313 true,
2314 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2315 { RTL_TEXTENCODING_UTF8,
2316 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF\xEF\xBB\xBF"),
2317 { 0xFEFF },
2319 false,
2320 true,
2321 true,
2322 true,
2323 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2324 { RTL_TEXTENCODING_UTF8,
2325 RTL_CONSTASCII_STRINGPARAM("\x01\x02\x7E\x7F"),
2326 { 0x0001,0x0002,0x007E,0x007F },
2328 false,
2329 true,
2330 true,
2331 false,
2332 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2333 { RTL_TEXTENCODING_UTF8,
2334 RTL_CONSTASCII_STRINGPARAM(
2335 "\xC0\x80\xE0\x80\x81\xF0\x80\x80\x82\xF8\x80\x80\x80\x83"
2336 "\xFC\x80\x80\x80\x80\x84"),
2337 { 0x0000,0x0001,0x0002,0x0003,0x0004 },
2339 false,
2340 true,
2341 false,
2342 false,
2343 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2344 { RTL_TEXTENCODING_UTF8,
2345 RTL_CONSTASCII_STRINGPARAM("\xED\xA1\x89\xED\xB4\x93"),
2346 { 0xD849,0xDD13 },
2348 false,
2349 true,
2350 false,
2351 false,
2352 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2353 { RTL_TEXTENCODING_UTF8,
2354 RTL_CONSTASCII_STRINGPARAM("\xED\xA1\x89\x41"),
2355 { 0xD849,0x0041 },
2357 false,
2358 true,
2359 false,
2360 false,
2361 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2363 // Test Java UTF-8:
2365 { RTL_TEXTENCODING_JAVA_UTF8,
2366 RTL_CONSTASCII_STRINGPARAM(
2367 "\xEF\xBB\xBF\xC0\x80\x01\x20\x41\x7F\xED\xA0\x80"
2368 "\xED\xB0\x80"),
2369 { 0xFEFF,0x0000,0x0001,0x0020,0x0041,0x007F,0xD800,0xDC00 },
2371 false,
2372 true,
2373 true,
2374 true,
2375 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2377 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
2378 // Bug #112949#:
2379 { RTL_TEXTENCODING_SHIFT_JIS,
2380 RTL_CONSTASCII_STRINGPARAM("\x81\x63"),
2381 { 0x2026 },
2383 false,
2384 true,
2385 true,
2386 false,
2387 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2388 { RTL_TEXTENCODING_SHIFT_JIS,
2389 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\xFF"),
2390 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2392 false,
2393 true,
2394 false,
2395 false,
2396 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2397 { RTL_TEXTENCODING_SHIFT_JIS,
2398 RTL_CONSTASCII_STRINGPARAM(""),
2399 { 0x00A0, 0x00A9, 0x2122 },
2401 false,
2402 false,
2403 true,
2404 false,
2405 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2406 #endif
2407 { RTL_TEXTENCODING_MS_932,
2408 RTL_CONSTASCII_STRINGPARAM("\x81\x63"),
2409 { 0x2026 },
2411 false,
2412 true,
2413 true,
2414 false,
2415 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2416 { RTL_TEXTENCODING_MS_932,
2417 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\xFF"),
2418 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2420 false,
2421 true,
2422 false,
2423 false,
2424 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2425 { RTL_TEXTENCODING_MS_932,
2426 RTL_CONSTASCII_STRINGPARAM(""),
2427 { 0x00A0, 0x00A9, 0x2122 },
2429 false,
2430 false,
2431 true,
2432 false,
2433 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2434 { RTL_TEXTENCODING_APPLE_JAPANESE,
2435 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\x81\x63"),
2436 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2438 false,
2439 true,
2440 true,
2441 false,
2442 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2443 { RTL_TEXTENCODING_APPLE_JAPANESE,
2444 RTL_CONSTASCII_STRINGPARAM("\xFF"),
2445 { 0x2026 },
2447 false,
2448 true,
2449 false,
2450 false,
2451 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2453 { RTL_TEXTENCODING_ADOBE_STANDARD,
2454 RTL_CONSTASCII_STRINGPARAM("\x20\x2D\xA4\xB4\xC5"),
2455 { 0x0020, 0x002D, 0x2215, 0x00B7, 0x00AF },
2457 false,
2458 true,
2459 true,
2460 false,
2461 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2462 { RTL_TEXTENCODING_ADOBE_STANDARD,
2463 RTL_CONSTASCII_STRINGPARAM("\x20\x2D\xA4\xB4\xC5"),
2464 { 0x00A0, 0x00AD, 0x2044, 0x2219, 0x02C9 },
2466 false,
2467 false,
2468 true,
2469 false,
2470 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2472 { RTL_TEXTENCODING_ADOBE_SYMBOL,
2473 RTL_CONSTASCII_STRINGPARAM("\x20\x44\x57\x6D\xA4"),
2474 { 0x0020, 0x0394, 0x03A9, 0x03BC, 0x2215 },
2476 false,
2477 true,
2478 true,
2479 false,
2480 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2481 { RTL_TEXTENCODING_ADOBE_SYMBOL,
2482 RTL_CONSTASCII_STRINGPARAM("\x20\x44\x57\x6D\xA4"),
2483 { 0x00A0, 0x2206, 0x2126, 0x00B5, 0x2044 },
2485 false,
2486 false,
2487 true,
2488 false,
2489 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2491 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
2492 // Bug #i62310#:
2493 { RTL_TEXTENCODING_SHIFT_JIS,
2494 RTL_CONSTASCII_STRINGPARAM(
2495 "\xF0\x40\xF0\x7E\xF0\x80\xF0\xFC\xF1\x40\xF9\xFC"),
2496 { 0xE000, 0xE03E, 0xE03F, 0xE0BB, 0xE0BC, 0xE757 },
2498 true,
2499 true,
2500 true,
2501 false,
2502 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2503 #endif
2504 // Bug #i73103#:
2505 { RTL_TEXTENCODING_MS_1258,
2506 RTL_CONSTASCII_STRINGPARAM(
2507 "\xC0\x41\xDE\xE3\xD2\xD4\xEC\xFD\xF2"),
2508 { 0x00C0, 0x0041, 0x0303, 0x0103, 0x0309, 0x00D4, 0x0301, 0x01B0,
2509 0x0323 },
2511 true,
2512 true,
2513 true,
2514 false,
2515 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2516 { RTL_TEXTENCODING_MS_1258,
2517 RTL_CONSTASCII_STRINGPARAM(
2518 "\xC0\x41\xDE\xE3\xD2\xD4\xEC\xFD\xF2"),
2519 { 0x00C0, 0x00C3, 0x1EB3, 0x1ED0, 0x1EF1 },
2521 false,
2522 false,
2523 true,
2524 false,
2525 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2526 #if WITH_LOCALE_ALL || WITH_LOCALE_FOR_SCRIPT_Deva
2527 { RTL_TEXTENCODING_ISCII_DEVANAGARI,
2528 RTL_CONSTASCII_STRINGPARAM(
2529 "\xD7\xE6\x20\xD4\xCF\xE8\xD6\x20"
2530 "\xC8\xD8\xD1\xE1\x20\xB3\xCA\xDC"
2531 "\xCF\xC4\xDA\xD7\x20\xD8\xDB\xA2"
2532 "\xC4\xDE\x20\xB1\xCF\x20\xCC\xDD"
2533 "\xD7\xD1\xCC\xDA\xC6\x20\xC4\xE5"
2534 "\xC6\xE5\xA2\x20\xB3\xE1\x20\xB3"
2535 "\xBD\xE8\xBD\xCF\xC8\xC6\x20\xB3"
2536 "\xE5\x20\xC9\xBD\xB3\xDA\xCF\x20"
2537 "\xB8\xDD\xB3\xE1\x20\xC3\xE1\x20"
2538 "\xEA"),
2539 { 0x0938, 0x094C, 0x0020, 0x0935, 0x0930, 0x094D, 0x0937, 0x0020,
2540 0x092A, 0x0939, 0x0932, 0x0947, 0x0020, 0x0915, 0x092C, 0x0940,
2541 0x0930, 0x0926, 0x093E, 0x0938, 0x0020, 0x0939, 0x093F, 0x0902,
2542 0x0926, 0x0942, 0x0020, 0x0914, 0x0930, 0x0020, 0x092E, 0x0941,
2543 0x0938, 0x0932, 0x092E, 0x093E, 0x0928, 0x0020, 0x0926, 0x094B,
2544 0x0928, 0x094B, 0x0902, 0x0020, 0x0915, 0x0947, 0x0020, 0x0915,
2545 0x091F, 0x094D, 0x091F, 0x0930, 0x092A, 0x0928, 0x0020, 0x0915,
2546 0x094B, 0x0020, 0x092B, 0x091F, 0x0915, 0x093E, 0x0930, 0x0020,
2547 0x091A, 0x0941, 0x0915, 0x0947, 0x0020, 0x0925, 0x0947, 0x0020,
2548 0x0964 },
2550 false,
2551 true,
2552 true,
2553 false,
2554 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2555 { RTL_TEXTENCODING_ISCII_DEVANAGARI,
2556 RTL_CONSTASCII_STRINGPARAM("\xE8\xE8\xE8\xE9\xA1\xE9\xEA\xE9"),
2557 { 0x094D, 0x200C, 0x094D, 0x200D, 0x0950, 0x93D },
2559 false,
2560 true,
2561 true,
2562 false,
2563 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR }
2564 #endif
2566 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
2567 doComplexCharSetTest(data[i]);
2571 void Test::testComplexCut() {
2572 static ComplexCharSetTest const data[]
2574 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
2575 { RTL_TEXTENCODING_EUC_JP,
2576 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2577 { 0 },
2579 true,
2580 true,
2581 false,
2582 false,
2583 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2584 { RTL_TEXTENCODING_EUC_JP,
2585 RTL_CONSTASCII_STRINGPARAM("\x8E"),
2586 { 0 },
2588 true,
2589 true,
2590 false,
2591 false,
2592 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2593 { RTL_TEXTENCODING_EUC_JP,
2594 RTL_CONSTASCII_STRINGPARAM("\x8F"),
2595 { 0 },
2597 true,
2598 true,
2599 false,
2600 false,
2601 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2602 { RTL_TEXTENCODING_EUC_JP,
2603 RTL_CONSTASCII_STRINGPARAM("\x8F\xA1"),
2604 { 0 },
2606 true,
2607 true,
2608 false,
2609 false,
2610 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2611 #endif
2612 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
2613 { RTL_TEXTENCODING_EUC_CN,
2614 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2615 { 0 },
2617 true,
2618 true,
2619 false,
2620 false,
2621 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2622 #endif
2623 /* ,
2624 { RTL_TEXTENCODING_EUC_TW,
2625 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2626 { 0 },
2628 true,
2629 true,
2630 false,
2631 false,
2632 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2633 { RTL_TEXTENCODING_EUC_TW,
2634 RTL_CONSTASCII_STRINGPARAM("\x8E"),
2635 { 0 },
2637 true,
2638 true,
2639 false,
2640 false,
2641 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2642 { RTL_TEXTENCODING_EUC_TW,
2643 RTL_CONSTASCII_STRINGPARAM("\x8E\xA1"),
2644 { 0 },
2646 true,
2647 true,
2648 false,
2649 false,
2650 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2651 { RTL_TEXTENCODING_EUC_TW,
2652 RTL_CONSTASCII_STRINGPARAM("\x8E\xA1\xA1"),
2653 { 0 },
2655 true,
2656 true,
2657 false,
2658 false,
2659 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR } */ };
2660 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
2661 doComplexCharSetCutTest(data[i]);
2665 void Test::testSRCBUFFERTOSMALL() {
2666 rtl_TextToUnicodeConverter cv = rtl_createTextToUnicodeConverter(
2667 RTL_TEXTENCODING_EUC_JP);
2668 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeConverter(EUC-JP) failed",
2669 cv != NULL);
2670 rtl_TextToUnicodeContext cx = rtl_createTextToUnicodeContext(cv);
2671 CPPUNIT_ASSERT_MESSAGE("rtl_createTextToUnicodeContext failed", cx != NULL);
2672 char src = '\xA1';
2673 sal_Unicode dst[10];
2674 sal_uInt32 info;
2675 sal_Size cvt;
2676 CPPUNIT_ASSERT_EQUAL(
2677 sal_Size(0),
2678 rtl_convertTextToUnicode(
2679 cv, cx, &src, 1, dst, sizeof dst / sizeof (sal_Unicode),
2680 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR |
2681 RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR |
2682 RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
2683 &info, &cvt));
2684 CPPUNIT_ASSERT_EQUAL(RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL, info);
2685 CPPUNIT_ASSERT(cvt <= 1);
2686 rtl_destroyTextToUnicodeContext(cv, cx);
2687 rtl_destroyTextToUnicodeConverter(cv);
2690 void Test::testMime() {
2691 struct Data {
2692 char const * mime;
2693 rtl_TextEncoding encoding;
2694 bool reverse;
2696 static Data const data[] = {
2697 { "GBK", RTL_TEXTENCODING_GBK, false },
2698 { "CP936", RTL_TEXTENCODING_GBK, false },
2699 { "MS936", RTL_TEXTENCODING_GBK, false },
2700 { "windows-936", RTL_TEXTENCODING_GBK, false },
2702 { "GB18030", RTL_TEXTENCODING_GB_18030, false },
2704 { "TIS-620", RTL_TEXTENCODING_TIS_620, true },
2705 { "ISO-8859-11", RTL_TEXTENCODING_TIS_620, false }, // not registered
2707 { "CP874", RTL_TEXTENCODING_MS_874, false }, // not registered
2708 { "MS874", RTL_TEXTENCODING_MS_874, false }, // not registered
2709 { "windows-874", RTL_TEXTENCODING_MS_874, true }, // not registered
2711 { "ISO_8859-8:1988", RTL_TEXTENCODING_ISO_8859_8, false },
2712 { "iso-ir-138", RTL_TEXTENCODING_ISO_8859_8, false },
2713 { "ISO_8859-8", RTL_TEXTENCODING_ISO_8859_8, false },
2714 { "ISO-8859-8", RTL_TEXTENCODING_ISO_8859_8, true },
2715 { "hebrew", RTL_TEXTENCODING_ISO_8859_8, false },
2716 { "csISOLatinHebrew", RTL_TEXTENCODING_ISO_8859_8, false },
2718 { "windows-1255", RTL_TEXTENCODING_MS_1255, true },
2720 { "IBM862", RTL_TEXTENCODING_IBM_862, true },
2721 { "cp862", RTL_TEXTENCODING_IBM_862, false },
2722 { "862", RTL_TEXTENCODING_IBM_862, false },
2723 { "csPC862LatinHebrew", RTL_TEXTENCODING_IBM_862, false },
2725 { "ISO_8859-6:1987", RTL_TEXTENCODING_ISO_8859_6, false },
2726 { "iso-ir-127", RTL_TEXTENCODING_ISO_8859_6, false },
2727 { "ISO_8859-6", RTL_TEXTENCODING_ISO_8859_6, false },
2728 { "ISO-8859-6", RTL_TEXTENCODING_ISO_8859_6, true },
2729 { "ECMA-114", RTL_TEXTENCODING_ISO_8859_6, false },
2730 { "ASMO-708", RTL_TEXTENCODING_ISO_8859_6, false },
2731 { "arabic", RTL_TEXTENCODING_ISO_8859_6, false },
2732 { "csISOLatinArabic", RTL_TEXTENCODING_ISO_8859_6, false },
2734 { "windows-1256", RTL_TEXTENCODING_MS_1256, true },
2736 { "IBM864", RTL_TEXTENCODING_IBM_864, true },
2737 { "cp864", RTL_TEXTENCODING_IBM_864, false },
2738 { "csIBM864", RTL_TEXTENCODING_IBM_864, false },
2740 { "KOI8-R", RTL_TEXTENCODING_KOI8_R, false },
2741 { "csKOI8R", RTL_TEXTENCODING_KOI8_R, false },
2742 { "koi8-r", RTL_TEXTENCODING_KOI8_R, true },
2744 { "KOI8-U", RTL_TEXTENCODING_KOI8_U, true },
2746 { "IBM860", RTL_TEXTENCODING_IBM_860, true },
2747 { "cp860", RTL_TEXTENCODING_IBM_860, false },
2748 { "860", RTL_TEXTENCODING_IBM_860, false },
2749 { "csIBM860", RTL_TEXTENCODING_IBM_860, false },
2751 { "IBM861", RTL_TEXTENCODING_IBM_861, true },
2752 { "cp861", RTL_TEXTENCODING_IBM_861, false },
2753 { "861", RTL_TEXTENCODING_IBM_861, false },
2754 { "cp-is", RTL_TEXTENCODING_IBM_861, false },
2755 { "csIBM861", RTL_TEXTENCODING_IBM_861, false },
2757 { "IBM863", RTL_TEXTENCODING_IBM_863, true },
2758 { "cp863", RTL_TEXTENCODING_IBM_863, false },
2759 { "863", RTL_TEXTENCODING_IBM_863, false },
2760 { "csIBM863", RTL_TEXTENCODING_IBM_863, false },
2762 { "IBM865", RTL_TEXTENCODING_IBM_865, true },
2763 { "cp865", RTL_TEXTENCODING_IBM_865, false },
2764 { "865", RTL_TEXTENCODING_IBM_865, false },
2765 { "csIBM865", RTL_TEXTENCODING_IBM_865, false },
2767 { "Latin-9", RTL_TEXTENCODING_ISO_8859_15, false },
2769 { "KS_C_5601-1987", RTL_TEXTENCODING_MS_949, false },
2770 { "iso-ir-149", RTL_TEXTENCODING_MS_949, false },
2771 { "KS_C_5601-1989", RTL_TEXTENCODING_MS_949, false },
2772 { "KSC_5601", RTL_TEXTENCODING_MS_949, false },
2773 { "korean", RTL_TEXTENCODING_MS_949, false },
2774 { "csKSC56011987", RTL_TEXTENCODING_MS_949, false },
2775 { 0, RTL_TEXTENCODING_MS_949, true },
2777 { "Adobe-Standard-Encoding", RTL_TEXTENCODING_ADOBE_STANDARD, false },
2778 { "csAdobeStandardEncoding", RTL_TEXTENCODING_ADOBE_STANDARD, false },
2779 { "Adobe-Symbol-Encoding", RTL_TEXTENCODING_ADOBE_SYMBOL, false },
2780 { "csHPPSMath", RTL_TEXTENCODING_ADOBE_SYMBOL, false },
2782 { "PTCP154", RTL_TEXTENCODING_PT154, true },
2783 { "csPTCP154", RTL_TEXTENCODING_PT154, false },
2784 { "PT154", RTL_TEXTENCODING_PT154, false },
2785 { "CP154", RTL_TEXTENCODING_PT154, false },
2786 { "Cyrillic-Asian", RTL_TEXTENCODING_PT154, false }
2788 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
2789 if (data[i].mime == 0) {
2790 OSL_ASSERT(data[i].reverse);
2791 CPPUNIT_ASSERT_EQUAL(
2792 static_cast< char const * >(0),
2793 rtl_getMimeCharsetFromTextEncoding(data[i].encoding));
2794 } else {
2795 CPPUNIT_ASSERT_EQUAL(
2796 data[i].encoding,
2797 rtl_getTextEncodingFromMimeCharset(data[i].mime));
2798 if (data[i].reverse) {
2799 CPPUNIT_ASSERT_EQUAL(
2800 OString(data[i].mime),
2801 OString(
2802 rtl_getMimeCharsetFromTextEncoding(data[i].encoding)));
2808 void Test::testWindows() {
2809 struct Data {
2810 sal_uInt32 codePage;
2811 rtl_TextEncoding encoding;
2812 bool reverse;
2814 static Data const data[] = {
2815 { 437, RTL_TEXTENCODING_IBM_437, true },
2816 { 708, RTL_TEXTENCODING_ISO_8859_6, false },
2817 { 737, RTL_TEXTENCODING_IBM_737, true },
2818 { 775, RTL_TEXTENCODING_IBM_775, true },
2819 { 850, RTL_TEXTENCODING_IBM_850, true },
2820 { 852, RTL_TEXTENCODING_IBM_852, true },
2821 { 855, RTL_TEXTENCODING_IBM_855, true },
2822 { 857, RTL_TEXTENCODING_IBM_857, true },
2823 { 860, RTL_TEXTENCODING_IBM_860, true },
2824 { 861, RTL_TEXTENCODING_IBM_861, true },
2825 { 862, RTL_TEXTENCODING_IBM_862, true },
2826 { 863, RTL_TEXTENCODING_IBM_863, true },
2827 { 864, RTL_TEXTENCODING_IBM_864, true },
2828 { 865, RTL_TEXTENCODING_IBM_865, true },
2829 { 866, RTL_TEXTENCODING_IBM_866, true },
2830 { 869, RTL_TEXTENCODING_IBM_869, true },
2831 { 874, RTL_TEXTENCODING_MS_874, true },
2832 { 932, RTL_TEXTENCODING_MS_932, true },
2833 { 936, RTL_TEXTENCODING_MS_936, true },
2834 { 949, RTL_TEXTENCODING_MS_949, true },
2835 { 950, RTL_TEXTENCODING_MS_950, true },
2836 { 1250, RTL_TEXTENCODING_MS_1250, true },
2837 { 1251, RTL_TEXTENCODING_MS_1251, true },
2838 { 1252, RTL_TEXTENCODING_MS_1252, true },
2839 { 1253, RTL_TEXTENCODING_MS_1253, true },
2840 { 1254, RTL_TEXTENCODING_MS_1254, true },
2841 { 1255, RTL_TEXTENCODING_MS_1255, true },
2842 { 1256, RTL_TEXTENCODING_MS_1256, true },
2843 { 1257, RTL_TEXTENCODING_MS_1257, true },
2844 { 1258, RTL_TEXTENCODING_MS_1258, true },
2845 { 1361, RTL_TEXTENCODING_MS_1361, true },
2846 { 10000, RTL_TEXTENCODING_APPLE_ROMAN, true },
2847 { 10001, RTL_TEXTENCODING_APPLE_JAPANESE, true },
2848 { 10002, RTL_TEXTENCODING_APPLE_CHINTRAD, true },
2849 { 10003, RTL_TEXTENCODING_APPLE_KOREAN, true },
2850 { 10004, RTL_TEXTENCODING_APPLE_ARABIC, true },
2851 { 10005, RTL_TEXTENCODING_APPLE_HEBREW, true },
2852 { 10006, RTL_TEXTENCODING_APPLE_GREEK, true },
2853 { 10007, RTL_TEXTENCODING_APPLE_CYRILLIC, true },
2854 { 10008, RTL_TEXTENCODING_APPLE_CHINSIMP, true },
2855 { 10010, RTL_TEXTENCODING_APPLE_ROMANIAN, true },
2856 { 10017, RTL_TEXTENCODING_APPLE_UKRAINIAN, true },
2857 { 10029, RTL_TEXTENCODING_APPLE_CENTEURO, true },
2858 { 10079, RTL_TEXTENCODING_APPLE_ICELAND, true },
2859 { 10081, RTL_TEXTENCODING_APPLE_TURKISH, true },
2860 { 10082, RTL_TEXTENCODING_APPLE_CROATIAN, true },
2861 { 20127, RTL_TEXTENCODING_ASCII_US, true },
2862 { 20866, RTL_TEXTENCODING_KOI8_R, true },
2863 { 21866, RTL_TEXTENCODING_KOI8_U, true },
2864 { 28591, RTL_TEXTENCODING_ISO_8859_1, true },
2865 { 28592, RTL_TEXTENCODING_ISO_8859_2, true },
2866 { 28593, RTL_TEXTENCODING_ISO_8859_3, true },
2867 { 28594, RTL_TEXTENCODING_ISO_8859_4, true },
2868 { 28595, RTL_TEXTENCODING_ISO_8859_5, true },
2869 { 28596, RTL_TEXTENCODING_ISO_8859_6, true },
2870 { 28597, RTL_TEXTENCODING_ISO_8859_7, true },
2871 { 28598, RTL_TEXTENCODING_ISO_8859_8, true },
2872 { 28599, RTL_TEXTENCODING_ISO_8859_9, true },
2873 { 28605, RTL_TEXTENCODING_ISO_8859_15, true },
2874 { 50220, RTL_TEXTENCODING_ISO_2022_JP, true },
2875 { 50225, RTL_TEXTENCODING_ISO_2022_KR, true },
2876 { 51932, RTL_TEXTENCODING_EUC_JP, true },
2877 { 51936, RTL_TEXTENCODING_EUC_CN, true },
2878 { 51949, RTL_TEXTENCODING_EUC_KR, true },
2879 { 65000, RTL_TEXTENCODING_UTF7, true },
2880 { 65001, RTL_TEXTENCODING_UTF8, true },
2881 { 1200, RTL_TEXTENCODING_DONTKNOW, false }, // UTF_16LE
2882 { 1201, RTL_TEXTENCODING_DONTKNOW, false }, // UTF_16LE
2883 { 0, RTL_TEXTENCODING_DONTKNOW, true },
2884 { 0, RTL_TEXTENCODING_UCS4, true },
2885 { 0, RTL_TEXTENCODING_UCS2, true },
2886 { 57002, RTL_TEXTENCODING_ISCII_DEVANAGARI, true }
2888 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
2889 OSL_ASSERT(data[i].codePage != 0 || data[i].reverse);
2890 if (data[i].codePage != 0) {
2891 CPPUNIT_ASSERT_EQUAL(
2892 data[i].encoding,
2893 rtl_getTextEncodingFromWindowsCodePage(data[i].codePage));
2895 if (data[i].reverse) {
2896 CPPUNIT_ASSERT_EQUAL(
2897 data[i].codePage,
2898 rtl_getWindowsCodePageFromTextEncoding(data[i].encoding));
2903 void Test::testInfo() {
2904 struct Data {
2905 rtl_TextEncoding encoding;
2906 sal_uInt32 flag;
2907 bool value;
2909 static Data const data[] = {
2910 #if WITH_LOCALE_ALL || WITH_LOCALE_ja
2911 { RTL_TEXTENCODING_APPLE_JAPANESE, RTL_TEXTENCODING_INFO_ASCII, false },
2912 { RTL_TEXTENCODING_EUC_JP, RTL_TEXTENCODING_INFO_ASCII, true },
2913 { RTL_TEXTENCODING_ISO_2022_JP, RTL_TEXTENCODING_INFO_CONTEXT, true },
2914 { RTL_TEXTENCODING_ISO_2022_JP, RTL_TEXTENCODING_INFO_ASCII, false },
2915 { RTL_TEXTENCODING_SHIFT_JIS, RTL_TEXTENCODING_INFO_ASCII, false },
2916 #endif
2917 #if WITH_LOCALE_ALL || WITH_LOCALE_ko
2918 { RTL_TEXTENCODING_APPLE_KOREAN, RTL_TEXTENCODING_INFO_ASCII, false },
2919 { RTL_TEXTENCODING_EUC_KR, RTL_TEXTENCODING_INFO_ASCII, true },
2920 { RTL_TEXTENCODING_ISO_2022_KR, RTL_TEXTENCODING_INFO_CONTEXT, true },
2921 { RTL_TEXTENCODING_ISO_2022_KR, RTL_TEXTENCODING_INFO_ASCII, false },
2922 #endif
2923 #if WITH_LOCALE_ALL || WITH_LOCALE_zh
2924 { RTL_TEXTENCODING_APPLE_CHINTRAD, RTL_TEXTENCODING_INFO_ASCII, false },
2925 { RTL_TEXTENCODING_BIG5, RTL_TEXTENCODING_INFO_ASCII, false },
2926 { RTL_TEXTENCODING_BIG5_HKSCS, RTL_TEXTENCODING_INFO_ASCII, false },
2927 { RTL_TEXTENCODING_EUC_CN, RTL_TEXTENCODING_INFO_ASCII, true },
2928 { RTL_TEXTENCODING_EUC_TW, RTL_TEXTENCODING_INFO_ASCII, true },
2929 { RTL_TEXTENCODING_GBK, RTL_TEXTENCODING_INFO_ASCII, false },
2930 { RTL_TEXTENCODING_GB_18030, RTL_TEXTENCODING_INFO_ASCII, false },
2931 { RTL_TEXTENCODING_GB_18030, RTL_TEXTENCODING_INFO_UNICODE, true },
2932 { RTL_TEXTENCODING_ISO_2022_CN, RTL_TEXTENCODING_INFO_CONTEXT, true },
2933 { RTL_TEXTENCODING_ISO_2022_CN, RTL_TEXTENCODING_INFO_ASCII, false },
2934 #endif
2935 #if WITH_LOCALE_ALL || WITH_LOCALE_FOR_SCRIPT_Deva
2936 { RTL_TEXTENCODING_ISCII_DEVANAGARI, RTL_TEXTENCODING_INFO_ASCII, true },
2937 { RTL_TEXTENCODING_ISCII_DEVANAGARI, RTL_TEXTENCODING_INFO_MIME, false },
2938 #endif
2939 { RTL_TEXTENCODING_MS_1361, RTL_TEXTENCODING_INFO_ASCII, false },
2940 { RTL_TEXTENCODING_MS_874, RTL_TEXTENCODING_INFO_ASCII, true },
2941 { RTL_TEXTENCODING_MS_932, RTL_TEXTENCODING_INFO_ASCII, false },
2942 { RTL_TEXTENCODING_MS_936, RTL_TEXTENCODING_INFO_ASCII, false },
2943 { RTL_TEXTENCODING_MS_949, RTL_TEXTENCODING_INFO_ASCII, false },
2944 { RTL_TEXTENCODING_MS_950, RTL_TEXTENCODING_INFO_ASCII, false },
2945 { RTL_TEXTENCODING_KOI8_R, RTL_TEXTENCODING_INFO_ASCII, true },
2946 { RTL_TEXTENCODING_KOI8_R, RTL_TEXTENCODING_INFO_MIME, true },
2947 { RTL_TEXTENCODING_KOI8_U, RTL_TEXTENCODING_INFO_ASCII, true },
2948 { RTL_TEXTENCODING_KOI8_U, RTL_TEXTENCODING_INFO_MIME, true },
2949 { RTL_TEXTENCODING_IBM_860, RTL_TEXTENCODING_INFO_MIME, true },
2950 { RTL_TEXTENCODING_IBM_861, RTL_TEXTENCODING_INFO_MIME, true },
2951 { RTL_TEXTENCODING_IBM_863, RTL_TEXTENCODING_INFO_MIME, true },
2952 { RTL_TEXTENCODING_IBM_865, RTL_TEXTENCODING_INFO_MIME, true },
2953 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_ASCII, false },
2954 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_MIME, true },
2955 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_SYMBOL, false },
2956 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_ASCII, false },
2957 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_MIME, true },
2958 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_SYMBOL, true },
2959 { RTL_TEXTENCODING_PT154, RTL_TEXTENCODING_INFO_ASCII, true },
2960 { RTL_TEXTENCODING_PT154, RTL_TEXTENCODING_INFO_MIME, true }
2962 for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) {
2963 rtl_TextEncodingInfo info;
2964 info.StructSize = sizeof info;
2965 CPPUNIT_ASSERT(rtl_getTextEncodingInfo(data[i].encoding, &info));
2966 CPPUNIT_ASSERT_EQUAL(data[i].value, ((info.Flags & data[i].flag) != 0));
2970 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
2974 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */