LCOV - code coverage report
Current view: top level - sal/qa/rtl/textenc - rtl_textcvt.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 231 248 93.1 %
Date: 2014-11-03 Functions: 18 18 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10