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

Generated by: LCOV version 1.11