os/persistentdata/persistentstorage/store/TSTRM/t_storucmp.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Test program for the Standard Unicode Compression Scheme; does nothing in the narrow builds.
    15 // 
    16 //
    17 
    18 #include <s32mem.h>
    19 #include <s32ucmp.h>
    20 #include <e32test.h>
    21 
    22 #ifdef _UNICODE
    23 
    24 const TInt KTestCleanupStack=0x20;
    25 CTrapCleanup* TheTrapCleanup;
    26 RTest test(_L("t_storucmp"));
    27 
    28 static const TUint16 UnicodeData[] =
    29 {
    30 0xFEFF, 0x45, 0x6E, 0x67, 0x6C, 0x69, 0x73, 0x68, 0x3A, 0x20, 0x4A, 0x61, 0x63, 0x6B, 0x64, 0x61,  // .English: Jackda
    31 0x77, 0x73, 0x20, 0x6C, 0x6F, 0x76, 0x65, 0x20, 0x6D, 0x79, 0x20, 0x62, 0x69, 0x67, 0x20, 0x73,  // ws love my big s
    32 0x70, 0x68, 0x69, 0x6E, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x71, 0x75, 0x61, 0x72, 0x74, 0x7A, 0x2E,  // phinx of quartz.
    33 0x20, 0x50, 0x61, 0x63, 0x6B, 0x20, 0x6D, 0x79, 0x20, 0x62, 0x6F, 0x78, 0x20, 0x77, 0x69, 0x74,  //  Pack my box wit
    34 0x68, 0x20, 0x66, 0x69, 0x76, 0x65, 0x20, 0x64, 0x6F, 0x7A, 0x65, 0x6E, 0x20, 0x6C, 0x69, 0x71,  // h five dozen liq
    35 0x75, 0x6F, 0x72, 0x20, 0x6A, 0x75, 0x67, 0x73, 0x2E, 0x6, 0x6, 0x47, 0x65, 0x72, 0x6D, 0x61,  // uor jugs...Germa
    36 0x6E, 0x3A, 0x20, 0x44, 0x61, 0xDF, 0x20, 0x43, 0x2B, 0x2B, 0x20, 0x73, 0x69, 0x63, 0x68, 0x20,  // n: Daß C++ sich
    37 0x73, 0x6F, 0x20, 0x73, 0x74, 0x61, 0x72, 0x6B, 0x20, 0x76, 0x65, 0x72, 0x62, 0x72, 0x65, 0x69,  // so stark verbrei
    38 0x74, 0x65, 0x74, 0x20, 0x68, 0x61, 0x74, 0x2C, 0x20, 0x6D, 0x61, 0x67, 0x20, 0x76, 0x6F, 0x72,  // tet hat, mag vor
    39 0x20, 0x61, 0x6C, 0x6C, 0x65, 0x6E, 0x20, 0x44, 0x69, 0x6E, 0x67, 0x65, 0x6E, 0x20, 0x7A, 0x77,  //  allen Dingen zw
    40 0x65, 0x69, 0x20, 0x47, 0x72, 0xFC, 0x6E, 0x64, 0x65, 0x20, 0x68, 0x61, 0x62, 0x65, 0x6E, 0x3A,  // ei Gründe haben:
    41 0x6, 0x44, 0x69, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x6B, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x6E,  // .Die objektorien
    42 0x74, 0x69, 0x65, 0x72, 0x74, 0x65, 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69,  // tierte Programmi
    43 0x65, 0x72, 0x75, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x74, 0x20, 0x73, 0x69, 0x63, 0x68, 0x65, 0x72,  // erung ist sicher
    44 0x20, 0x65, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x75, 0x73, 0x67, 0x65, 0x7A, 0x65, 0x69, 0x63, 0x68,  //  eine ausgezeich
    45 0x6E, 0x65, 0x74, 0x65, 0x20, 0x41, 0x6C, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65,  // nete Alternative
    46 0x6, 0x7A, 0x75, 0x20, 0x64, 0x65, 0x6E, 0x20, 0x74, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6F,  // .zu den traditio
    47 0x6E, 0x65, 0x6C, 0x6C, 0x65, 0x6E, 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69,  // nellen Programmi
    48 0x65, 0x72, 0x74, 0x65, 0x63, 0x68, 0x6E, 0x69, 0x6B, 0x65, 0x6E, 0x2C, 0x20, 0x6D, 0xF6, 0x67,  // ertechniken, mög
    49 0x6C, 0x69, 0x63, 0x68, 0x65, 0x72, 0x77, 0x65, 0x69, 0x73, 0x65, 0x20, 0x66, 0xFC, 0x72, 0x20,  // licherweise für
    50 0x67, 0x72, 0x6F, 0xDF, 0x65, 0x20, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2D, 0x50,  // große Software-P
    51 0x72, 0x6F, 0x6A, 0x65, 0x6B, 0x74, 0x65, 0x6, 0x67, 0x65, 0x67, 0x65, 0x6E, 0x77, 0xE4, 0x72,  // rojekte.gegenwär
    52 0x74, 0x69, 0x67, 0x20, 0x64, 0x69, 0x65, 0x20, 0x65, 0x69, 0x6E, 0x7A, 0x69, 0x67, 0x65, 0x20,  // tig die einzige
    53 0x4D, 0xF6, 0x67, 0x6C, 0x69, 0x63, 0x68, 0x6B, 0x65, 0x69, 0x74, 0x2C, 0x20, 0x64, 0x69, 0x65,  // Möglichkeit, die
    54 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x20, 0x73, 0x6F, 0x77, 0x6F, 0x68,  //  Programme sowoh
    55 0x6C, 0x20, 0x65, 0x66, 0x66, 0x65, 0x6B, 0x74, 0x69, 0x76, 0x20, 0x73, 0x63, 0x68, 0x72, 0x65,  // l effektiv schre
    56 0x69, 0x62, 0x65, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x75, 0x63, 0x68, 0x20, 0x77, 0x61,  // iben als auch wa
    57 0x72, 0x74, 0x65, 0x6E, 0x6, 0x7A, 0x75, 0x20, 0x6B, 0xF6, 0x6E, 0x6E, 0x65, 0x6E, 0x20, 0x28,  // rten.zu können (
    58 0x75, 0x6E, 0x64, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x6B, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74,  // und objektorient
    59 0x69, 0x65, 0x72, 0x74, 0x65, 0x20, 0x56, 0x6F, 0x72, 0x67, 0x65, 0x68, 0x65, 0x6E, 0x73, 0x77,  // ierte Vorgehensw
    60 0x65, 0x69, 0x73, 0x65, 0x6E, 0x20, 0x73, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x75, 0x63, 0x68, 0x20,  // eisen sind auch
    61 0x69, 0x6E, 0x20, 0x76, 0x69, 0x65, 0x6C, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x65,  // in vielen andere
    62 0x6E, 0x6, 0x57, 0x69, 0x73, 0x73, 0x65, 0x6E, 0x73, 0x63, 0x68, 0x61, 0x66, 0x74, 0x73, 0x62,  // n.Wissenschaftsb
    63 0x65, 0x72, 0x65, 0x69, 0x63, 0x68, 0x65, 0x6E, 0x20, 0x65, 0x72, 0x66, 0x6F, 0x6C, 0x67, 0x72,  // ereichen erfolgr
    64 0x65, 0x69, 0x63, 0x68, 0x29, 0x2E, 0x20, 0x5A, 0x75, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x65, 0x72,  // eich). Zum ander
    65 0x65, 0x6E, 0x20, 0x65, 0x6E, 0x74, 0x68, 0xE4, 0x6C, 0x74, 0x20, 0x43, 0x2B, 0x2B, 0x20, 0x64,  // en enthält C++ d
    66 0x65, 0x6E, 0x20, 0x6B, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x74, 0x65, 0x6E, 0x6, 0x53, 0x70,  // en kompletten.Sp
    67 0x72, 0x61, 0x63, 0x68, 0x75, 0x6D, 0x66, 0x61, 0x6E, 0x67, 0x20, 0x76, 0x6F, 0x6E, 0x20, 0x43,  // rachumfang von C
    68 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x64, 0x61, 0xDF, 0x20, 0x66, 0xFC, 0x72, 0x20, 0x64, 0x69, 0x65,  // , so daß für die
    69 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x65, 0x72, 0x65, 0x72, 0x20, 0x65,  //  Programmierer e
    70 0x69, 0x6E, 0x20, 0x22, 0x67, 0x6C, 0x65, 0x69, 0x74, 0x65, 0x6E, 0x64, 0x65, 0x72, 0x20, 0xDC,  // in "gleitender Ü
    71 0x62, 0x65, 0x72, 0x67, 0x61, 0x6E, 0x67, 0x22, 0x20, 0x6D, 0xF6, 0x67, 0x6C, 0x69, 0x63, 0x68,  // bergang" möglich
    72 0x20, 0x69, 0x73, 0x74, 0x6, 0x75, 0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x65, 0x20, 0x43, 0x2D,  //  ist.und alle C-
    73 0x52, 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x6E, 0x20, 0x75, 0x6E, 0x64, 0x20, 0x43, 0x2D, 0x42,  // Routinen und C-B
    74 0x69, 0x62, 0x6C, 0x69, 0x6F, 0x74, 0x68, 0x65, 0x6B, 0x65, 0x6E, 0x20, 0x77, 0x65, 0x69, 0x74,  // ibliotheken weit
    75 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x77, 0x65, 0x6E, 0x64, 0x65, 0x74, 0x20, 0x77, 0x65, 0x72,  // er verwendet wer
    76 0x64, 0x65, 0x6E, 0x20, 0x6B, 0xF6, 0x6E, 0x6E, 0x65, 0x6E, 0x2E, 0x6, 0x6, 0x53, 0x77, 0x65,  // den können...Swe
    77 0x64, 0x69, 0x73, 0x68, 0x3A, 0x20, 0x4A, 0x61, 0x76, 0x61, 0x20, 0xE4, 0x72, 0x20, 0x75, 0x74,  // dish: Java är ut
    78 0x76, 0x65, 0x63, 0x6B, 0x6C, 0x61, 0x64, 0x20, 0x61, 0x76, 0x20, 0x53, 0x75, 0x6E, 0x2E, 0x20,  // vecklad av Sun.
    79 0x46, 0x72, 0xE5, 0x6E, 0x20, 0x62, 0xF6, 0x72, 0x6A, 0x61, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x20,  // Från början var
    80 0x64, 0x65, 0x74, 0x20, 0x74, 0xE4, 0x6E, 0x6B, 0x74, 0x20, 0x61, 0x74, 0x74, 0x20, 0x73, 0x70,  // det tänkt att sp
    81 0x72, 0xE5, 0x6B, 0x65, 0x74, 0x20, 0x73, 0x6B, 0x75, 0x6C, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x76,  // råket skulle anv
    82 0xE4, 0x6E, 0x64, 0x61, 0x73, 0x20, 0x69, 0x6E, 0x6F, 0x6D, 0x20, 0x65, 0x6C, 0x65, 0x6B, 0x74,  // ändas inom elekt
    83 0x72, 0x6F, 0x6E, 0x69, 0x6B, 0x20, 0x74, 0x69, 0x6C, 0x6C, 0x6, 0x74, 0x20, 0x65, 0x78, 0x20,  // ronik till.t ex
    84 0x62, 0x72, 0xF6, 0x64, 0x72, 0x6F, 0x73, 0x74, 0x61, 0x72, 0x20, 0x65, 0x6C, 0x6C, 0x65, 0x72,  // brödrostar eller
    85 0x20, 0x74, 0x76, 0xE4, 0x74, 0x74, 0x6D, 0x61, 0x73, 0x6B, 0x69, 0x6E, 0x65, 0x72, 0x2E, 0x20,  //  tvättmaskiner.
    86 0x55, 0x74, 0x76, 0x65, 0x63, 0x6B, 0x6C, 0x61, 0x72, 0x6E, 0x61, 0x20, 0x69, 0x6E, 0x73, 0xE5,  // Utvecklarna inså
    87 0x67, 0x20, 0x73, 0x6E, 0x61, 0x62, 0x62, 0x74, 0x20, 0x61, 0x74, 0x74, 0x20, 0x64, 0x65, 0x74,  // g snabbt att det
    88 0x20, 0x6B, 0x72, 0xE4, 0x76, 0x64, 0x65, 0x73, 0x20, 0x65, 0x74, 0x74, 0x20, 0x70, 0x6C, 0x61,  //  krävdes ett pla
    89 0x74, 0x74, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x6F, 0x62, 0x65, 0x72, 0x6F, 0x65, 0x6E, 0x64, 0x65,  // ttformsoberoende
    90 0x6, 0x73, 0x70, 0x72, 0xE5, 0x6B, 0x20, 0x66, 0xF6, 0x72, 0x20, 0x61, 0x74, 0x74, 0x20, 0x6B,  // .språk för att k
    91 0x75, 0x6E, 0x6E, 0x61, 0x20, 0x74, 0x69, 0x6C, 0x6C, 0x67, 0x6F, 0x64, 0x6F, 0x73, 0x65, 0x20,  // unna tillgodose
    92 0x64, 0x65, 0x20, 0x6F, 0x6C, 0x69, 0x6B, 0x61, 0x20, 0x62, 0x65, 0x68, 0x6F, 0x76, 0x65, 0x6E,  // de olika behoven
    93 0x20, 0x70, 0xE5, 0x20, 0x65, 0x6C, 0x65, 0x6B, 0x74, 0x72, 0x6F, 0x6E, 0x69, 0x6B, 0x6D, 0x61,  //  på elektronikma
    94 0x72, 0x6B, 0x6E, 0x61, 0x64, 0x65, 0x6E, 0x2E, 0x20, 0x4A, 0x61, 0x76, 0x61, 0x73, 0x20, 0x73,  // rknaden. Javas s
    95 0x6B, 0x61, 0x70, 0x61, 0x72, 0x65, 0x20, 0x4A, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x47, 0x6F, 0x73,  // kapare James Gos
    96 0x6C, 0x69, 0x6E, 0x67, 0x6, 0x62, 0xF6, 0x72, 0x6A, 0x61, 0x64, 0x65, 0x20, 0x61, 0x72, 0x62,  // ling.började arb
    97 0x65, 0x74, 0x61, 0x20, 0x75, 0x74, 0x69, 0x66, 0x72, 0xE5, 0x6E, 0x20, 0x43, 0x2B, 0x2B, 0x20,  // eta utifrån C++
    98 0x6B, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x72, 0x6E, 0x2E, 0x20, 0x45, 0x66,  // kompilatiorn. Ef
    99 0x74, 0x65, 0x72, 0x20, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x64, 0x20, 0x69, 0x6E, 0x73, 0xE5, 0x67,  // ter en tid insåg
   100 0x20, 0x68, 0x61, 0x6E, 0x20, 0x61, 0x74, 0x74, 0x20, 0x64, 0x65, 0x74, 0x6, 0x62, 0xE4, 0x73,  //  han att det.bäs
   101 0x74, 0x61, 0x20, 0x76, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x74, 0x74, 0x20, 0x73, 0x6B, 0x61, 0x70,  // ta vore att skap
   102 0x61, 0x20, 0x65, 0x74, 0x74, 0x20, 0x6E, 0x79, 0x74, 0x74, 0x20, 0x73, 0x70, 0x72, 0xE5, 0x6B,  // a ett nytt språk
   103 0x20, 0x73, 0x6F, 0x6D, 0x20, 0x76, 0x61, 0x72, 0x20, 0x6E, 0xE4, 0x72, 0x61, 0x20, 0x62, 0x65,  //  som var nära be
   104 0x73, 0x6C, 0xE4, 0x6B, 0x74, 0x61, 0x74, 0x20, 0x6D, 0x65, 0x64, 0x20, 0x43, 0x2B, 0x2B, 0x2E,  // släktat med C++.
   105 0x20, 0x44, 0x65, 0x74, 0x20, 0x66, 0xF6, 0x72, 0x73, 0x74, 0x61, 0x20, 0x6E, 0x61, 0x6D, 0x6E,  //  Det första namn
   106 0x65, 0x74, 0x20, 0x73, 0x6F, 0x6D, 0x20, 0x74, 0x65, 0x73, 0x74, 0x61, 0x64, 0x65, 0x73, 0x20,  // et som testades
   107 0x66, 0xF6, 0x72, 0x6, 0x70, 0x61, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x20, 0x4F,  // för.patent var O
   108 0x61, 0x6B, 0x2C, 0x20, 0x64, 0x65, 0x74, 0x74, 0x61, 0x20, 0x6D, 0x69, 0x73, 0x73, 0x6C, 0x79,  // ak, detta missly
   109 0x63, 0x6B, 0x61, 0x64, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x6F, 0x63, 0x68, 0x20, 0x64, 0x65, 0x74,  // ckades - och det
   110 0x20, 0x6E, 0x79, 0x61, 0x20, 0x6E, 0x61, 0x6D, 0x6E, 0x65, 0x74, 0x20, 0x62, 0x6C, 0x65, 0x76,  //  nya namnet blev
   111 0x20, 0x4A, 0x61, 0x76, 0x61, 0x2E, 0x6, 0x53, 0x70, 0x72, 0xE5, 0x6B, 0x65, 0x74, 0x20, 0x69,  //  Java..Språket i
   112 0x6E, 0x74, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x72, 0x61, 0x64, 0x65, 0x73, 0x20, 0x69, 0x20,  // ntroducerades i
   113 0x31, 0x39, 0x39, 0x35, 0x2E, 0x20, 0x53, 0x70, 0x72, 0xE5, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x66,  // 1995. Språkets f
   114 0x72, 0x61, 0x6D, 0x67, 0xE5, 0x6E, 0x67, 0x20, 0x62, 0x65, 0x72, 0x6F, 0x72, 0x20, 0x6D, 0x79,  // ramgång beror my
   115 0x63, 0x6B, 0x65, 0x74, 0x20, 0x70, 0xE5, 0x20, 0x61, 0x74, 0x74, 0x20, 0x64, 0x65, 0x74, 0x20,  // cket på att det
   116 0xE4, 0x72, 0x6, 0x70, 0x6C, 0x61, 0x74, 0x74, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x6F, 0x62, 0x65,  // är.plattformsobe
   117 0x72, 0x6F, 0x65, 0x6E, 0x64, 0x65, 0x2E, 0x20, 0x4A, 0x61, 0x76, 0x61, 0x20, 0x6B, 0x61, 0x6E,  // roende. Java kan
   118 0x20, 0x62, 0x65, 0x73, 0x6B, 0x72, 0x69, 0x76, 0x61, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x20, 0x65,  //  beskrivas som e
   119 0x6E, 0x6B, 0x65, 0x6C, 0x74, 0x2C, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x6B, 0x74, 0x6F, 0x72, 0x69,  // nkelt, objektori
   120 0x65, 0x6E, 0x74, 0x65, 0x72, 0x61, 0x74, 0x2C, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,  // enterat, distrib
   121 0x75, 0x65, 0x72, 0x61, 0x74, 0x2C, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,  // uerat, interpret
   122 0x65, 0x72, 0x61, 0x6E, 0x64, 0x65, 0x2C, 0x6, 0x72, 0x6F, 0x62, 0x75, 0x73, 0x74, 0x2C, 0x20,  // erande,.robust,
   123 0x73, 0xE4, 0x6B, 0x65, 0x72, 0x74, 0x2C, 0x20, 0x70, 0x6C, 0x61, 0x74, 0x74, 0x66, 0x6F, 0x72,  // säkert, plattfor
   124 0x6D, 0x73, 0x6F, 0x62, 0x65, 0x72, 0x6F, 0x65, 0x6E, 0x64, 0x65, 0x2C, 0x20, 0x70, 0x6F, 0x72,  // msoberoende, por
   125 0x74, 0x61, 0x62, 0x65, 0x6C, 0x74, 0x20, 0x6F, 0x63, 0x68, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D,  // tabelt och dynam
   126 0x69, 0x73, 0x6B, 0x74, 0x20, 0x73, 0x70, 0x72, 0xE5, 0x6B, 0x2E, 0x6, 0x6, 0x52, 0x75, 0x73,  // iskt språk...Rus
   127 0x73, 0x69, 0x61, 0x6E, 0x3A, 0x20, 0x415, 0x432, 0x440, 0x43E, 0x43F, 0x430, 0x2C, 0x20, 0x41F, 0x440,  // sian: ......, ..
   128 0x43E, 0x433, 0x440, 0x430, 0x43C, 0x43C, 0x43D, 0x43E, 0x435, 0x20, 0x43E, 0x431, 0x435, 0x441, 0x43F, 0x435,
   129 0x447, 0x435, 0x43D, 0x438, 0x435, 0x20, 0x2B, 0x20, 0x418, 0x43D, 0x442, 0x435, 0x440, 0x43D, 0x435, 0x442,  // ..... + ........
   130 0x3A, 0x6, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x432, 0x20, 0x433, 0x43B, 0x43E, 0x431,  // :.Unicode . ....
   131 0x430, 0x43B, 0x44C, 0x43D, 0x44B, 0x445, 0x20, 0x43C, 0x430, 0x441, 0x448, 0x442, 0x430, 0x431, 0x430, 0x445,
   132 0x20, 0x20, 0x6, 0x417, 0x430, 0x440, 0x435, 0x433, 0x438, 0x441, 0x442, 0x440, 0x438, 0x440, 0x443, 0x439,
   133 0x442, 0x435, 0x441, 0x44C, 0x20, 0x441, 0x435, 0x439, 0x447, 0x430, 0x441, 0x20, 0x43D, 0x430, 0x20, 0x414,
   134 0x435, 0x441, 0x44F, 0x442, 0x443, 0x44E, 0x20, 0x41C, 0x435, 0x436, 0x434, 0x443, 0x43D, 0x430, 0x440, 0x43E,
   135 0x434, 0x43D, 0x443, 0x44E, 0x20, 0x41A, 0x43E, 0x43D, 0x444, 0x435, 0x440, 0x435, 0x43D, 0x446, 0x438, 0x44E,
   136 0x20, 0x43F, 0x43E, 0x20, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x2C, 0x20, 0x43A, 0x43E, 0x442,  //  .. Unicode, ...
   137 0x43E, 0x440, 0x430, 0x44F, 0x6, 0x441, 0x43E, 0x441, 0x442, 0x43E, 0x438, 0x442, 0x441, 0x44F, 0x20, 0x31,  // .............. 1
   138 0x30, 0x2D, 0x31, 0x32, 0x20, 0x43C, 0x430, 0x440, 0x442, 0x430, 0x20, 0x31, 0x39, 0x39, 0x37, 0x20,  // 0-12 ..... 1997
   139 0x433, 0x43E, 0x434, 0x430, 0x20, 0x432, 0x20, 0x41C, 0x430, 0x439, 0x43D, 0x446, 0x435, 0x20, 0x432, 0x20,
   140 0x413, 0x435, 0x440, 0x43C, 0x430, 0x43D, 0x438, 0x438, 0x2E, 0x20, 0x41A, 0x43E, 0x43D, 0x444, 0x435, 0x440,  // ......... ......
   141 0x435, 0x43D, 0x446, 0x438, 0x44F, 0x20, 0x441, 0x43E, 0x431, 0x435, 0x440, 0x435, 0x442, 0x20, 0x448, 0x438,
   142 0x440, 0x43E, 0x43A, 0x438, 0x439, 0x20, 0x43A, 0x440, 0x443, 0x433, 0x6, 0x44D, 0x43A, 0x441, 0x43F, 0x435,
   143 0x440, 0x442, 0x43E, 0x432, 0x20, 0x43F, 0x43E, 0x20, 0x432, 0x43E, 0x43F, 0x440, 0x43E, 0x441, 0x430, 0x43C,
   144 0x20, 0x433, 0x43B, 0x43E, 0x431, 0x430, 0x43B, 0x44C, 0x43D, 0x43E, 0x433, 0x43E, 0x20, 0x418, 0x43D, 0x442,
   145 0x435, 0x440, 0x43D, 0x435, 0x442, 0x430, 0x20, 0x438, 0x20, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65,  // ...... . Unicode
   146 0x2C, 0x20, 0x43B, 0x43E, 0x43A, 0x430, 0x43B, 0x438, 0x437, 0x430, 0x446, 0x438, 0x438, 0x20, 0x438, 0x20,  // , ........... .
   147 0x438, 0x43D, 0x442, 0x435, 0x440, 0x43D, 0x430, 0x446, 0x438, 0x43E, 0x43D, 0x430, 0x43B, 0x438, 0x437, 0x430,
   148 0x446, 0x438, 0x438, 0x2C, 0x6, 0x432, 0x43E, 0x43F, 0x43B, 0x43E, 0x449, 0x435, 0x43D, 0x438, 0x44E, 0x20,  // ...,...........
   149 0x438, 0x20, 0x43F, 0x440, 0x438, 0x43C, 0x435, 0x43D, 0x435, 0x43D, 0x438, 0x44E, 0x20, 0x55, 0x6E, 0x69,  // . .......... Uni
   150 0x63, 0x6F, 0x64, 0x65, 0x20, 0x432, 0x20, 0x440, 0x430, 0x437, 0x43B, 0x438, 0x447, 0x43D, 0x44B, 0x445,  // code . .........
   151 0x20, 0x43E, 0x43F, 0x435, 0x440, 0x430, 0x446, 0x438, 0x43E, 0x43D, 0x43D, 0x44B, 0x445, 0x20, 0x441, 0x438,
   152 0x441, 0x442, 0x435, 0x43C, 0x430, 0x445, 0x20, 0x438, 0x20, 0x43F, 0x440, 0x43E, 0x433, 0x440, 0x430, 0x43C,
   153 0x43C, 0x43D, 0x44B, 0x445, 0x6, 0x43F, 0x440, 0x438, 0x43B, 0x43E, 0x436, 0x435, 0x43D, 0x438, 0x44F, 0x445,
   154 0x2C, 0x20, 0x448, 0x440, 0x438, 0x444, 0x442, 0x430, 0x445, 0x2C, 0x20, 0x432, 0x435, 0x440, 0x441, 0x442,  // , ......., .....
   155 0x43A, 0x435, 0x20, 0x438, 0x20, 0x43C, 0x43D, 0x43E, 0x433, 0x43E, 0x44F, 0x437, 0x44B, 0x447, 0x43D, 0x44B,
   156 0x445, 0x20, 0x43A, 0x43E, 0x43C, 0x43F, 0x44C, 0x44E, 0x442, 0x435, 0x440, 0x43D, 0x44B, 0x445, 0x20, 0x441,
   157 0x438, 0x441, 0x442, 0x435, 0x43C, 0x430, 0x445, 0x2E, 0x20, 0x20, 0x6, 0x41A, 0x43E, 0x433, 0x434, 0x430,  // ........  ......
   158 0x20, 0x43C, 0x438, 0x440, 0x20, 0x436, 0x435, 0x43B, 0x430, 0x435, 0x442, 0x20, 0x43E, 0x431, 0x449, 0x430,
   159 0x442, 0x44C, 0x441, 0x44F, 0x2C, 0x20, 0x43E, 0x43D, 0x20, 0x43E, 0x431, 0x449, 0x430, 0x435, 0x442, 0x441,  // ...., .. .......
   160 0x44F, 0x20, 0x43D, 0x430, 0x20, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x20, 0x6, 0x6,  // . .. Unicode  ..
   161 0x41, 0x72, 0x61, 0x62, 0x69, 0x63, 0x3A, 0x20, 0x623, 0x648, 0x631, 0x648, 0x628, 0x627, 0x2C, 0x20,  // Arabic: ......,
   162 0x628, 0x631, 0x645, 0x62C, 0x64A, 0x627, 0x62A, 0x20, 0x627, 0x644, 0x62D, 0x627, 0x633, 0x648, 0x628, 0x20,
   163 0x2B, 0x20, 0x627, 0x646, 0x62A, 0x631, 0x646, 0x64A, 0x62A, 0x20, 0x3A, 0x6, 0x62A, 0x635, 0x628, 0x62D,  // + ....... :.....
   164 0x20, 0x639, 0x627, 0x644, 0x645, 0x64A, 0x627, 0x20, 0x645, 0x639, 0x20, 0x64A, 0x648, 0x646, 0x64A, 0x643,
   165 0x648, 0x62F, 0x20, 0x20, 0x6, 0x62A, 0x633, 0x62C, 0x651, 0x644, 0x20, 0x627, 0x644, 0x622, 0x646, 0x20,
   166 0x644, 0x62D, 0x636, 0x648, 0x631, 0x20, 0x627, 0x644, 0x645, 0x624, 0x62A, 0x645, 0x631, 0x20, 0x627, 0x644,
   167 0x62F, 0x648, 0x644, 0x64A, 0x20, 0x627, 0x644, 0x639, 0x627, 0x634, 0x631, 0x20, 0x644, 0x64A, 0x648, 0x646,
   168 0x64A, 0x643, 0x648, 0x62F, 0x2C, 0x20, 0x627, 0x644, 0x630, 0x64A, 0x20, 0x633, 0x64A, 0x639, 0x642, 0x62F,  // ...., .... .....
   169 0x20, 0x641, 0x64A, 0x20, 0x31, 0x30, 0x2D, 0x31, 0x32, 0x6, 0x622, 0x630, 0x627, 0x631, 0x20, 0x31,  //  .. 10-12..... 1
   170 0x39, 0x39, 0x37, 0x20, 0x628, 0x645, 0x62F, 0x64A, 0x646, 0x629, 0x20, 0x645, 0x627, 0x64A, 0x646, 0x62A,  // 997 ...... .....
   171 0x633, 0x2C, 0x20, 0x623, 0x644, 0x645, 0x627, 0x646, 0x64A, 0x627, 0x2E, 0x20, 0x648, 0x633, 0x64A, 0x62C,  // ., ........ ....
   172 0x645, 0x639, 0x20, 0x627, 0x644, 0x645, 0x624, 0x62A, 0x645, 0x631, 0x20, 0x628, 0x64A, 0x646, 0x20, 0x62E,
   173 0x628, 0x631, 0x627, 0x621, 0x20, 0x645, 0x646, 0x20, 0x643, 0x627, 0x641, 0x629, 0x20, 0x642, 0x637, 0x627,
   174 0x639, 0x627, 0x62A, 0x6, 0x627, 0x644, 0x635, 0x646, 0x627, 0x639, 0x629, 0x20, 0x639, 0x644, 0x649, 0x20,
   175 0x627, 0x644, 0x634, 0x628, 0x643, 0x629, 0x20, 0x627, 0x644, 0x639, 0x627, 0x644, 0x645, 0x64A, 0x629, 0x20,
   176 0x627, 0x646, 0x62A, 0x631, 0x646, 0x64A, 0x62A, 0x20, 0x648, 0x64A, 0x648, 0x646, 0x64A, 0x643, 0x648, 0x62F,
   177 0x2C, 0x20, 0x62D, 0x64A, 0x62B, 0x20, 0x633, 0x62A, 0x62A, 0x645, 0x2C, 0x20, 0x639, 0x644, 0x649, 0x20,  // , ... ...., ...
   178 0x627, 0x644, 0x635, 0x639, 0x64A, 0x62F, 0x64A, 0x646, 0x6, 0x627, 0x644, 0x62F, 0x648, 0x644, 0x64A, 0x20,
   179 0x648, 0x627, 0x644, 0x645, 0x62D, 0x644, 0x64A, 0x20, 0x639, 0x644, 0x649, 0x20, 0x62D, 0x62F, 0x20, 0x633,
   180 0x648, 0x627, 0x621, 0x20, 0x645, 0x646, 0x627, 0x642, 0x634, 0x629, 0x20, 0x633, 0x628, 0x644, 0x20, 0x627,
   181 0x633, 0x62A, 0x62E, 0x62F, 0x627, 0x645, 0x20, 0x64A, 0x648, 0x646, 0x643, 0x648, 0x62F, 0x20, 0x641, 0x64A,
   182 0x20, 0x627, 0x644, 0x646, 0x638, 0x645, 0x20, 0x627, 0x644, 0x642, 0x627, 0x626, 0x645, 0x629, 0x6, 0x648,
   183 0x641, 0x64A, 0x645, 0x627, 0x20, 0x64A, 0x62E, 0x635, 0x20, 0x627, 0x644, 0x62A, 0x637, 0x628, 0x64A, 0x642,
   184 0x627, 0x62A, 0x20, 0x627, 0x644, 0x62D, 0x627, 0x633, 0x648, 0x628, 0x64A, 0x629, 0x2C, 0x20, 0x627, 0x644,  // .. ........., ..
   185 0x62E, 0x637, 0x648, 0x637, 0x2C, 0x20, 0x62A, 0x635, 0x645, 0x64A, 0x645, 0x20, 0x627, 0x644, 0x646, 0x635,  // ...., ..... ....
   186 0x648, 0x635, 0x20, 0x648, 0x627, 0x644, 0x62D, 0x648, 0x633, 0x628, 0x629, 0x20, 0x645, 0x62A, 0x639, 0x62F,
   187 0x62F, 0x629, 0x20, 0x627, 0x644, 0x644, 0x63A, 0x627, 0x62A, 0x2E, 0x20, 0x20, 0x6, 0x639, 0x646, 0x62F,  // .. .......  ....
   188 0x645, 0x627, 0x20, 0x64A, 0x631, 0x64A, 0x62F, 0x20, 0x627, 0x644, 0x639, 0x627, 0x644, 0x645, 0x20, 0x623,
   189 0x646, 0x20, 0x64A, 0x62A, 0x643, 0x644, 0x651, 0x645, 0x2C, 0x20, 0x641, 0x647, 0x648, 0x20, 0x64A, 0x62A,  // . ......, ... ..
   190 0x62D, 0x62F, 0x651, 0x62B, 0x20, 0x628, 0x644, 0x63A, 0x629, 0x20, 0x64A, 0x648, 0x646, 0x64A, 0x643, 0x648,
   191 0x62F, 0x2E, 0x20, 0x20, 0x6, 0x6, 0x43, 0x68, 0x69, 0x6E, 0x65, 0x73, 0x65, 0x20, 0x28, 0x73,  // ..  ..Chinese (s
   192 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x69, 0x65, 0x64, 0x29, 0x3B, 0x20, 0x6B27, 0x6D32, 0xFF0C, 0x8F6F,  // implified); ....
   193 0x4EF6, 0xFF0B, 0x4E92, 0x8054, 0x7F51, 0x6, 0x7528, 0x7EDF, 0x4E00, 0x7801, 0x20, 0x28, 0x55, 0x6E, 0x69, 0x63,  // .......... (Unic
   194 0x6F, 0x64, 0x65, 0x29, 0x20, 0x8D70, 0x904D, 0x4E16, 0x754C, 0x20, 0x20, 0x6, 0x5C06, 0x4E8E, 0x31, 0x39,  // ode) ....  ...19
   195 0x39, 0x37, 0x5E74, 0x20, 0x33, 0x20, 0x6708, 0x31, 0x30, 0x65E5, 0xFF0D, 0x31, 0x32, 0x65E5, 0x5728, 0x5FB7,  // 97. 3 .10..12...
   196 0x56FD, 0x20, 0x4D, 0x61, 0x69, 0x6E, 0x7A, 0x20, 0x5E02, 0x4E3E, 0x884C, 0x7684, 0x7B2C, 0x5341, 0x5C4A, 0x7EDF,  // . Mainz ........
   197 0x4E00, 0x7801, 0x56FD, 0x9645, 0x7814, 0x8BA8, 0x4F1A, 0x73B0, 0x5728, 0x5F00, 0x59CB, 0x6CE8, 0x518C, 0x3002, 0x6, 0x672C,
   198 0x6B21, 0x4F1A, 0x8BAE, 0x5C06, 0x6C47, 0x96C6, 0x5404, 0x65B9, 0x9762, 0x7684, 0x4E13, 0x5BB6, 0x3002, 0x6D89, 0x53CA, 0x7684,
   199 0x9886, 0x57DF, 0x5305, 0x62EC, 0xFF1A, 0x56FD, 0x9645, 0x4E92, 0x8054, 0x7F51, 0x548C, 0x7EDF, 0x4E00, 0x7801, 0xFF0C, 0x56FD,
   200 0x9645, 0x5316, 0x548C, 0x672C, 0x5730, 0x5316, 0xFF0C, 0x6, 0x7EDF, 0x4E00, 0x7801, 0x5728, 0x64CD, 0x4F5C, 0x7CFB, 0x7EDF,
   201 0x548C, 0x5E94, 0x7528, 0x8F6F, 0x4EF6, 0x4E2D, 0x7684, 0x5B9E, 0x73B0, 0xFF0C, 0x5B57, 0x578B, 0xFF0C, 0x6587, 0x672C, 0x683C,
   202 0x5F0F, 0x4EE5, 0x53CA, 0x591A, 0x6587, 0x79CD, 0x8BA1, 0x7B97, 0x7B49, 0x3002, 0x20, 0x20, 0x6, 0x5F53, 0x4E16, 0x754C,
   203 0x9700, 0x8981, 0x6C9F, 0x901A, 0x65F6, 0xFF0C, 0x8BF7, 0x7528, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0xFF01,  // ........Unicode.
   204 0x20, 0x20, 0x6, 0x6, 0x43, 0x68, 0x69, 0x6E, 0x65, 0x73, 0x65, 0x20, 0x28, 0x74, 0x72, 0x61,  //   ..Chinese (tra
   205 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x29, 0x20, 0x6B50, 0x6D32, 0xFF0C, 0x8EDF, 0x9AD4, 0x53CA,  // ditional) ......
   206 0x7DB2, 0x969B, 0x7DB2, 0x8DEF, 0xFF1A, 0x6, 0x8B93, 0x7D71, 0x4E00, 0x78BC, 0xFF08, 0x55, 0x6E, 0x69, 0x63, 0x6F,  // ...........Unico
   207 0x64, 0x65, 0xFF09, 0x9818, 0x4F60, 0x9032, 0x5165, 0x5168, 0x4E16, 0x754C, 0x20, 0x20, 0x6, 0x4F60, 0x73FE, 0x5728,  // de........  ....
   208 0x5C31, 0x61C9, 0x5831, 0x540D, 0x5C07, 0x5728, 0xFF11, 0xFF19, 0xFF19, 0xFF17, 0x5E74, 0xFF13, 0x6708, 0xFF11, 0xFF10, 0x81F3,
   209 0xFF11, 0xFF12, 0x65E5, 0x65BC, 0x5FB7, 0x570B, 0x7F8E, 0x59FF, 0x57CE, 0xFF08, 0x4D, 0x61, 0x69, 0x6E, 0x7A, 0xFF09,  // ..........Mainz.
   210 0x6, 0x53EC, 0x958B, 0x7684, 0x7B2C, 0x5341, 0x5C46, 0x570B, 0x969B, 0x7D71, 0x4E00, 0x78BC, 0x7814, 0x8A0E, 0x6703, 0x3002,
   211 0x672C, 0x6B21, 0x7814, 0x8A0E, 0x6703, 0x5C07, 0x9080, 0x8ACB, 0x591A, 0x4F4D, 0x696D, 0x754C, 0x5C08, 0x5BB6, 0x7814, 0x8A0E,
   212 0x95DC, 0x65BC, 0x5168, 0x7403, 0x7DB2, 0x969B, 0x7DB2, 0x8DEF, 0x53CA, 0x7D71, 0x4E00, 0x78BC, 0x767C, 0x5C55, 0x3001, 0x6,
   213 0x570B, 0x969B, 0x5316, 0x53CA, 0x672C, 0x571F, 0x5316, 0x3001, 0x652F, 0x63F4, 0x7D71, 0x4E00, 0x78BC, 0x7684, 0x4F5C, 0x696D,
   214 0x7CFB, 0x7D71, 0x53CA, 0x61C9, 0x7528, 0x7A0B, 0x5F0F, 0x3001, 0x5B57, 0x578B, 0x3001, 0x6587, 0x5B57, 0x6392, 0x7248, 0x3001,
   215 0x96FB, 0x8166, 0x591A, 0x570B, 0x8A9E, 0x6587, 0x5316, 0x7B49, 0x591A, 0x9805, 0x8AB2, 0x984C, 0x3002, 0x20, 0x20, 0x6,
   216 0x7576, 0x4E16, 0x754C, 0x9700, 0x8981, 0x6E9D, 0x901A, 0x6642, 0xFF0C, 0x8ACB, 0x7528, 0x7D71, 0x4E00, 0x78BC, 0xFF08, 0x55,  // ...............U
   217 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0xFF09, 0x20, 0x20, 0x6, 0x6, 0x47, 0x65, 0x6F, 0x72, 0x67,  // nicode.  ..Georg
   218 0x69, 0x61, 0x6E, 0x3A, 0x20, 0x10D4, 0x10D5, 0x10E0, 0x10DD, 0x10DE, 0x10D0, 0x2C, 0x20, 0x10DE, 0x10E0, 0x10DD,  // ian: ......, ...
   219 0x10D2, 0x10E0, 0x10D0, 0x10DB, 0x10E3, 0x10DA, 0x10D8, 0x20, 0x10E3, 0x10D6, 0x10E0, 0x10E3, 0x10DC, 0x10D5, 0x10D4, 0x10DA,
   220 0x10E7, 0x10DD, 0x10E4, 0x10D0, 0x20, 0x2B, 0x20, 0x10D8, 0x10DC, 0x10E2, 0x10D4, 0x10E0, 0x10DC, 0x10D4, 0x10E2, 0x10D8,  // .... + .........
   221 0x3A, 0x6, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x2D, 0x10D8, 0x20, 0x10DB, 0x10D7, 0x10D4, 0x10DA,  // :.Unicode-. ....
   222 0x10E1, 0x20, 0x10DB, 0x10E1, 0x10DD, 0x10E4, 0x10DA, 0x10D8, 0x10DD, 0x10E8, 0x10D8, 0x20, 0x20, 0x6, 0x10D2, 0x10D7,
   223 0x10EE, 0x10DD, 0x10D5, 0x10D7, 0x20, 0x10D0, 0x10EE, 0x10DA, 0x10D0, 0x10D5, 0x10D4, 0x20, 0x10D2, 0x10D0, 0x10D8, 0x10D0,
   224 0x10E0, 0x10DD, 0x10D7, 0x20, 0x10E0, 0x10D4, 0x10D2, 0x10D8, 0x10E1, 0x10E2, 0x10E0, 0x10D0, 0x10EA, 0x10D8, 0x10D0, 0x20,
   225 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x2D, 0x10D8, 0x10E1, 0x20, 0x10DB, 0x10D4, 0x10D0, 0x10D7, 0x10D4,  // Unicode-.. .....
   226 0x6, 0x10E1, 0x10D0, 0x10D4, 0x10E0, 0x10D7, 0x10D0, 0x10E8, 0x10DD, 0x10E0, 0x10D8, 0x10E1, 0x10DD, 0x20, 0x10D9, 0x10DD,
   227 0x10DC, 0x10E4, 0x10D4, 0x10E0, 0x10D4, 0x10DC, 0x10EA, 0x10D8, 0x10D0, 0x10D6, 0x10D4, 0x20, 0x10D3, 0x10D0, 0x10E1, 0x10D0,
   228 0x10E1, 0x10EC, 0x10E0, 0x10D4, 0x10D1, 0x10D0, 0x10D3, 0x2C, 0x20, 0x10E0, 0x10DD, 0x10DB, 0x10D4, 0x10DA, 0x10D8, 0x10EA,  // ......., .......
   229 0x6, 0x10D2, 0x10D0, 0x10D8, 0x10DB, 0x10D0, 0x10E0, 0x10D7, 0x10D4, 0x10D1, 0x10D0, 0x20, 0x31, 0x30, 0x2D, 0x31,  // ........... 10-1
   230 0x32, 0x20, 0x10DB, 0x10D0, 0x10E0, 0x10E2, 0x10E1, 0x2C, 0x20, 0x10E5, 0x2E, 0x20, 0x10DB, 0x10D0, 0x10D8, 0x10DC,  // 2 ....., .. ....
   231 0x10EA, 0x10E8, 0x10D8, 0x2C, 0x20, 0x10D2, 0x10D4, 0x10E0, 0x10DB, 0x10D0, 0x10DC, 0x10D8, 0x10D0, 0x10E8, 0x10D8, 0x2E,  // ..., ...........
   232 0x6, 0x10D9, 0x10DD, 0x10DC, 0x10E4, 0x10D4, 0x10E0, 0x10D4, 0x10DC, 0x10EA, 0x10D8, 0x10D0, 0x20, 0x10E8, 0x10D4, 0x10F0,
   233 0x10D9, 0x10E0, 0x10D4, 0x10D1, 0x10E1, 0x20, 0x10D4, 0x10E0, 0x10D7, 0x10D0, 0x10D3, 0x20, 0x10DB, 0x10E1, 0x10DD, 0x10E4,
   234 0x10DA, 0x10D8, 0x10DD, 0x10E1, 0x20, 0x10D4, 0x10E5, 0x10E1, 0x10DE, 0x10D4, 0x10E0, 0x10E2, 0x10D4, 0x10D1, 0x10E1, 0x20,
   235 0x10D8, 0x10E1, 0x10D4, 0x10D7, 0x6, 0x10D3, 0x10D0, 0x10E0, 0x10D2, 0x10D4, 0x10D1, 0x10E8, 0x10D8, 0x20, 0x10E0, 0x10DD,
   236 0x10D2, 0x10DD, 0x10E0, 0x10D8, 0x10EA, 0x10D0, 0x10D0, 0x20, 0x10D8, 0x10DC, 0x10E2, 0x10D4, 0x10E0, 0x10DC, 0x10D4, 0x10E2,
   237 0x10D8, 0x20, 0x10D3, 0x10D0, 0x20, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x2D, 0x10D8, 0x2C, 0x6,  // . .. Unicode-.,.
   238 0x10D8, 0x10DC, 0x10E2, 0x10D4, 0x10E0, 0x10DC, 0x10D0, 0x10EA, 0x10D8, 0x10DD, 0x10DC, 0x10D0, 0x10DA, 0x10D8, 0x10D6, 0x10D0,
   239 0x10EA, 0x10D8, 0x10D0, 0x20, 0x10D3, 0x10D0, 0x20, 0x10DA, 0x10DD, 0x10D9, 0x10D0, 0x10DA, 0x10D8, 0x10D6, 0x10D0, 0x10EA,
   240 0x10D8, 0x10D0, 0x2C, 0x20, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x2D, 0x10D8, 0x10E1, 0x6, 0x10D2,  // .., Unicode-....
   241 0x10D0, 0x10DB, 0x10DD, 0x10E7, 0x10D4, 0x10DC, 0x10D4, 0x10D1, 0x10D0, 0x20, 0x10DD, 0x10DE, 0x10D4, 0x10E0, 0x10D0, 0x10EA,
   242 0x10D8, 0x10E3, 0x10DA, 0x20, 0x10E1, 0x10D8, 0x10E1, 0x10E2, 0x10D4, 0x10DB, 0x10D4, 0x10D1, 0x10E1, 0x10D0, 0x2C, 0x20,  // ... ..........,
   243 0x10D3, 0x10D0, 0x20, 0x10D2, 0x10D0, 0x10DB, 0x10DD, 0x10E7, 0x10D4, 0x10DC, 0x10D4, 0x10D1, 0x10D8, 0x10D7, 0x6, 0x10DE,
   244 0x10E0, 0x10DD, 0x10D2, 0x10E0, 0x10D0, 0x10DB, 0x10D4, 0x10D1, 0x10E8, 0x10D8, 0x2C, 0x20, 0x10E8, 0x10E0, 0x10D8, 0x10E4,  // .........., ....
   245 0x10E2, 0x10D4, 0x10D1, 0x10E8, 0x10D8, 0x2C, 0x20, 0x10E2, 0x10D4, 0x10E5, 0x10E1, 0x10E2, 0x10D4, 0x10D1, 0x10D8, 0x10E1,  // ....., .........
   246 0x20, 0x10D3, 0x10D0, 0x10DB, 0x10E3, 0x10E8, 0x10D0, 0x10D5, 0x10D4, 0x10D1, 0x10D0, 0x10E1, 0x10D0, 0x20, 0x10D3, 0x10D0,
   247 0x6, 0x10DB, 0x10E0, 0x10D0, 0x10D5, 0x10D0, 0x10DA, 0x10D4, 0x10DC, 0x10DD, 0x10D5, 0x10D0, 0x10DC, 0x20, 0x10D9, 0x10DD,
   248 0x10DB, 0x10DE, 0x10D8, 0x10E3, 0x10E2, 0x10D4, 0x10E0, 0x10E3, 0x10DA, 0x20, 0x10E1, 0x10D8, 0x10E1, 0x10E2, 0x10D4, 0x10DB,
   249 0x10D4, 0x10D1, 0x10E8, 0x10D8, 0x2E, 0x20, 0x20, 0x6, 0x10E0, 0x10DD, 0x10D3, 0x10D4, 0x10E1, 0x10D0, 0x10EA, 0x20,  // .....  ........
   250 0x10DB, 0x10E1, 0x10DD, 0x10E4, 0x10DA, 0x10D8, 0x10DD, 0x10E1, 0x20, 0x10E3, 0x10E0, 0x10D7, 0x10D8, 0x10E0, 0x10D7, 0x10DD,
   251 0x10D1, 0x10D0, 0x20, 0x10E1, 0x10E3, 0x10E0, 0x10E1, 0x2C, 0x20, 0x10D8, 0x10D2, 0x10D8, 0x20, 0x55, 0x6E, 0x69,  // .. ...., ... Uni
   252 0x63, 0x6F, 0x64, 0x65, 0x2D, 0x10D8, 0x10E1, 0x20, 0x10D4, 0x10DC, 0x10D0, 0x10D6, 0x10D4, 0x6, 0x10DA, 0x10D0,  // code-.. ........
   253 0x10DE, 0x10D0, 0x10E0, 0x10D0, 0x10D9, 0x10DD, 0x10D1, 0x10E1, 0x20, 0x20, 0x6, 0x6
   254 }; // phew!
   255 
   256 const TInt UnicodeDataSize = sizeof(UnicodeData) / sizeof(UnicodeData[0]);
   257 
   258 static TBuf8<UnicodeDataSize * 2> CompressedData;
   259 static TBuf16<UnicodeDataSize * 2> ExpandedData;
   260 
   261 static void PerformTestL(const TUint16* aData,TInt aDataSize,
   262 						TBool aCompStreamOutput,TBool aCompStreamInput,TBool aCompBreak,
   263 						TBool aExpStreamOutput,TBool aExpStreamInput,TBool aExpBreak)
   264 	{
   265 	test.Printf(_L("compress %d words from %s to %s in %s\n"),aDataSize,
   266 				aCompStreamInput ? _S("stream") : _S("buffer"),
   267 				aCompStreamOutput ? _S("stream") : _S("buffer"),
   268 				aCompBreak ? _S("two sections") : _S("one section"));
   269 
   270 	// Compress
   271 	TPtrC8 comp_input((const TUint8*)aData,aDataSize * 2);
   272 	RDesReadStream comp_input_stream(comp_input);
   273 	TMemoryStreamUnicodeSource comp_input_stream_source(comp_input_stream);
   274 	TMemoryUnicodeSource comp_input_memory_source(aData);
   275 	MUnicodeSource& comp_source = aCompStreamInput ? (MUnicodeSource&)comp_input_stream_source : (MUnicodeSource&)comp_input_memory_source;
   276 	int comp_output_bytes = aCompBreak ? aDataSize / 3 : KMaxTInt;
   277 	int in1 = 0, in2 = 0, out1 = 0, out2 = 0, out3 = 0;
   278 	TUnicodeCompressor compressor;
   279 	if (aCompStreamOutput)
   280 		{
   281 		RDesWriteStream comp_output_stream(CompressedData);
   282 		compressor.CompressL(comp_output_stream,comp_source,comp_output_bytes,aDataSize,&out1,&in1);
   283 		if (aCompBreak)
   284 			compressor.CompressL(comp_output_stream,comp_source,KMaxTInt,aDataSize - in1,&out2,&in2);
   285 		compressor.FlushL(comp_output_stream,KMaxTInt,out3);
   286 		}
   287 	else
   288 		{
   289 		TUint8* p = (TUint8*)CompressedData.Ptr();
   290 		compressor.CompressL(p,comp_source,comp_output_bytes,aDataSize,&out1,&in1);
   291 		if (aCompBreak)
   292 			compressor.CompressL(p + out1,comp_source,KMaxTInt,aDataSize - in1,&out2,&in2);
   293 		compressor.FlushL(p + out1 + out2,KMaxTInt,out3);
   294 		}
   295 	int compressed_size = out1 + out2 + out3;
   296 	CompressedData.SetLength(compressed_size);
   297 
   298 	// Expand
   299 	test.Printf(_L("expand %d bytes from %s to %s in %s\n"),compressed_size,
   300 				aExpStreamInput ? _S("stream") : _S("buffer"),
   301 				aExpStreamOutput ? _S("stream") : _S("buffer"),
   302 				aExpBreak ? _S("two sections") : _S("one section"));
   303 	TPtr8 exp_output((TUint8*)ExpandedData.Ptr(),aDataSize * 2);
   304 	RDesWriteStream exp_output_stream(exp_output);
   305 	TMemoryStreamUnicodeSink exp_output_stream_sink(exp_output_stream);
   306 	TMemoryUnicodeSink exp_output_memory_sink((TUint16*)ExpandedData.Ptr());
   307 	MUnicodeSink& exp_sink = aExpStreamOutput ? (MUnicodeSink&)exp_output_stream_sink : (MUnicodeSink&)exp_output_memory_sink;
   308 	int exp_input_bytes = aExpBreak ? compressed_size / 3 : compressed_size;
   309 	TUnicodeExpander expander;
   310 	in1 = in2 = out1 = out2 = out3 = 0;
   311 	if (aExpStreamInput)
   312 		{
   313 		RDesReadStream exp_input_stream1(CompressedData);
   314 		(void)expander.ExpandedSizeL(exp_input_stream1, CompressedData.Length() );
   315 		RDesReadStream exp_input_stream(CompressedData);
   316 		TRAPD(r, expander.ExpandL(exp_sink,exp_input_stream,KMaxTInt,exp_input_bytes,&out1,&in1));
   317 		test(r==KErrNone);
   318 		if (aExpBreak)
   319 			expander.ExpandL(exp_sink,exp_input_stream,KMaxTInt,compressed_size - exp_input_bytes,&out2,&in2);
   320 		expander.FlushL(exp_sink,KMaxTInt,out3);
   321 		}
   322 	else
   323 		{
   324 		const TUint8* p = CompressedData.Ptr();
   325 		expander.ExpandL(exp_sink,p,KMaxTInt,exp_input_bytes,&out1,&in1);
   326 		if (aExpBreak)
   327 			expander.ExpandL(exp_sink,p + in1,KMaxTInt,compressed_size - exp_input_bytes,&out2,&in2);
   328 		expander.FlushL(exp_sink,KMaxTInt,out3);
   329 		}
   330 	int expanded_size = out1 + out2 + out3;
   331 	ExpandedData.SetLength(expanded_size);
   332 
   333 	// Compare original data with data that was compressed then expanded.
   334 	TPtrC16 original_data(aData,aDataSize);
   335 	test(ExpandedData == original_data);
   336 	}
   337 
   338 static const TUint16 UnicodeData2[] =
   339 	{
   340 	0x61, 0x62, 0x62, 0x2029
   341 	};
   342 const TInt UnicodeData2Size = sizeof(UnicodeData2) / sizeof(UnicodeData2[0]);
   343 
   344 /**
   345 @SYMTestCaseID          SYSLIB-STORE-CT-1218
   346 @SYMTestCaseDesc	    Tests for the defect number EDNATHE-4JYFYQ
   347 @SYMTestPriority 	    High
   348 @SYMTestActions  	    Compress and expand with a flush.Check for the integrity of the expanded data with the original data
   349 @SYMTestExpectedResults Test must not fail
   350 @SYMREQ                 REQ0000
   351 */
   352 static void TestFlushL()
   353 	{
   354 	test.Next(_L(" @SYMTestCaseID:SYSLIB-STORE-CT-1218 "));
   355 	test.Printf(_L("compress into too small buffer then flush (defect EDNATHE-4JYFYQ)\n"));
   356 
   357 	// Compress
   358 	TMemoryUnicodeSource comp_source(UnicodeData2);
   359 	int bytes_needed = TUnicodeCompressor::CompressedSizeL(comp_source,UnicodeData2Size);
   360 	TUnicodeCompressor compressor;
   361 	TUint8* p = (TUint8*)CompressedData.Ptr();
   362 	int out1, out2;
   363 	comp_source = TMemoryUnicodeSource(UnicodeData2); // reinitialise comp_source; pointer changed by CompressedSizeL
   364 	compressor.CompressL(p,comp_source,bytes_needed - 1,UnicodeData2Size,&out1);
   365 	compressor.FlushL(p + out1,KMaxTInt,out2);
   366 	int compressed_size = out1 + out2;
   367 	CompressedData.SetLength(compressed_size);
   368 
   369 	// Expand
   370 	TMemoryUnicodeSink exp_sink((TUint16*)ExpandedData.Ptr());
   371 	TUnicodeExpander expander;
   372 	const TUint8* q = CompressedData.Ptr();
   373 	expander.ExpandL(exp_sink,q,KMaxTInt,compressed_size,&out1);
   374 	expander.FlushL(exp_sink,KMaxTInt,out2);
   375 	int expanded_size = out1 + out2;
   376 	ExpandedData.SetLength(expanded_size);
   377 
   378 	// Compare original data with data that was compressed then expanded.
   379 	TPtrC16 original_data(UnicodeData2,UnicodeData2Size);
   380 	test(ExpandedData == original_data);
   381 	}
   382 
   383 void DoDEF113513L()
   384 	{
   385 	// Compress
   386 	TBuf<2> unicodeBuf;
   387 
   388 	// To switch to iUnicodeMode = 1
   389 	// Condition 1:
   390 	//		DynamicWindowOffsetIndex(aCode)
   391 	//		if (aCode < 0x0080)
   392 	//      if (aCode >= 0x3400 && aCode <= 0xDFFF)
   393 	//			return KErrNotFound;
   394 	// Condition 2:
   395 	//		if (aCode >= iStaticWindow[i] && aCode < iStaticWindow[i] + 128)
   396 	// HandleUByteL conditions
   397 	// aByte <= 0xDF || aByte >= 0xF3
   398 	// aByte == UQU
   399 	// aByte >= UC0 && aByte <= UC0 + 7
   400 	// aByte >= UD0 && aByte <= UD0 + 7
   401 	// aByte == UDX / 0xF1
   402 	unicodeBuf.Append(0xDFFE);
   403 	unicodeBuf.Append(0xDFFE);
   404 
   405 	TBuf8<20> compBuf;
   406 	RDesWriteStream strm1(compBuf);
   407 	strm1 << unicodeBuf;
   408 
   409 	strm1.CommitL();
   410 	strm1.Close();
   411 	//Corrupt the compressed data
   412 	compBuf[2] = 0xF2;
   413 	compBuf[3] = 0xF2;
   414 
   415 
   416 	// Decompress
   417 	TBuf<20> resBuf;
   418 	RDesReadStream strm2(compBuf);
   419 	strm2 >> resBuf;//Should not panic here!
   420 	strm2.Close();
   421 
   422  	}
   423 
   424  /**
   425  @SYMTestCaseID			SYSLIB-STORE-UT-4004
   426  @SYMTestCaseDesc		Test for DEF113513: "TUnicodeCompressor/Expander function should not panic unnecessary".
   427  						1) The test writes a unicode string to a stream, with a descriptor used as a stream store.
   428  						2) The test uses the overloaded "<<" operator, so the string will be compressed during the internalization.
   429  						3) Then the test corrupts the stream store (the descriptor) and attempts to externalize the string.
   430  						4) If the defect is fixed. the ">>" operator should not panic the test application.
   431  @SYMTestPriority		Medium
   432  @SYMTestActions		Test for DEF113513: "TUnicodeCompressor/Expander function should not panic unnecessary".
   433  @SYMTestExpectedResults The test must not fail or panic
   434  @SYMDEF
   435  */
   436  void DEF113513()
   437  	{
   438  	TRAPD(err, DoDEF113513L());
   439  	test(err == KErrCorrupt);
   440  	}
   441 
   442 
   443 /**
   444 @SYMTestCaseID          SYSLIB-STORE-CT-1217
   445 @SYMTestCaseDesc	    Standard Unicode compression scheme test
   446 @SYMTestPriority 	    High
   447 @SYMTestActions  	    Attempt for compressing and expanding the data.Test for the integrity of expanded data with the original data.
   448 @SYMTestExpectedResults Test must not fail
   449 @SYMREQ                 REQ0000
   450 */
   451 static void PerformTestsL()
   452 	{
   453 	const TUint16* data = NULL;
   454 	int data_size = 0;
   455 	int i;
   456 
   457 	test.Next(_L(" @SYMTestCaseID:SYSLIB-STORE-CT-1217 "));
   458 
   459 	// Iterate over all possible values of the 6 Boolean parameters to PerformTest, varying the start and size of the data
   460 	for (i = 0; i < 64; i++)
   461 		{
   462 		int start = (9753 * (i % 7)) % UnicodeDataSize;
   463 		data = UnicodeData + start;
   464 		data_size = UnicodeDataSize - start;
   465 
   466 		PerformTestL(data,data_size,i & 32,i & 16,i & 8,i & 4,i & 2,i & 1);
   467 		}
   468 
   469 	// Do everything again with zero and small amounts of data.
   470 	for (i = 0; i < 64; i++)
   471 		{
   472 		int start = (7953 * (i % 7)) % UnicodeDataSize;
   473 		data = UnicodeData + start;
   474 		data_size = i % 9;
   475 
   476 		PerformTestL(data,data_size,i & 32,i & 16,i & 8,i & 4,i & 2,i & 1);
   477 		}
   478 
   479 	// Do tests added in response to defects.
   480 	TestFlushL();
   481 	}
   482 
   483 static void SetupCleanup()
   484     {
   485 	TheTrapCleanup = CTrapCleanup::New();
   486 	test(TheTrapCleanup != NULL);
   487 	TRAPD(r,\
   488 		{\
   489 		for (TInt i = KTestCleanupStack;i>0;i--)\
   490 			CleanupStack::PushL((TAny*)1);\
   491 		test(r == KErrNone);\
   492 		CleanupStack::Pop(KTestCleanupStack);\
   493 		});
   494 	test(r == KErrNone);
   495 	}
   496 
   497 
   498 void DoPDEF112374L()
   499 	{
   500 	// Compress
   501 	_LIT(KTestStr, "0123456789");
   502 	TBuf8<20> compBuf;
   503 	RDesWriteStream strm1(compBuf);
   504 	strm1 << KTestStr;
   505 	strm1.CommitL();
   506 	strm1.Close();
   507 	//Corrupt the compressed data
   508 	compBuf[0] = 0x0C;
   509 	compBuf[1] = 0x0C;
   510 	// Decompress
   511 	TBuf<20> resBuf;
   512 	RDesReadStream strm2(compBuf);
   513 	strm2 >> resBuf;//Should not panic here!
   514 	strm2.Close();
   515 	}
   516 
   517 /**
   518 @SYMTestCaseID			SYSLIB-STORE-UT-4001
   519 @SYMTestCaseDesc		Test for PDEF112374: "LIBmm54818 Remove/re-insert SIM, DUT reboot incorrectly and crash detected".
   520 						1) The test writes a unicode string to a stream, with a descriptor used as a stream store.
   521 						2) The test uses the overloaded "<<" operator, so the string will be compressed during the internalization.
   522 						3) Then the test corrupts the stream store (the descriptor) and attempts to externalize the string.
   523 						4) If the defect is fixed. the ">>" operator should not panic the test application.
   524 @SYMTestPriority		Medium
   525 @SYMTestActions			Test for PDEF112374: "LIBmm54818 Remove/re-insert SIM, DUT reboot incorrectly and crash detected".
   526 @SYMTestExpectedResults The test must not fail or panic
   527 @SYMDEF					PDEF112374
   528 */
   529 void PDEF112374()
   530 	{
   531 	TRAPD(err, DoPDEF112374L())
   532 	test(err == KErrCorrupt);
   533 	}
   534 
   535 #endif
   536 
   537 TInt E32Main()
   538     {
   539 #ifdef _UNICODE
   540 	test.Title();
   541 	SetupCleanup();
   542 	__UHEAP_MARK;
   543 	test.Start(_L("test the Standard Compression Scheme for Unicode"));
   544 	TRAPD(err, PerformTestsL());
   545 	test(err == KErrNone);
   546 	test.Next(_L(" @SYMTestCaseID:SYSLIB-STORE-UT-4001 PDEF112374: LIBmm54818 Remove/re-insert SIM, DUT reboot incorrectly and crash detected "));
   547 	PDEF112374();
   548 
   549 	test.Next(_L(" @SYMTestCaseID:SYSLIB-STORE-UT-4004 DEF113513: TUnicodeCompressor/Expander function should not panic unnecessary "));
   550 	DEF113513();
   551 
   552 
   553 test.End();
   554 	__UHEAP_MARKEND;
   555 	delete TheTrapCleanup;
   556 	test.Close();
   557 #endif
   558 	return 0;
   559     }