os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_cp949.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description: 
    15 *
    16 */
    17 
    18 
    19 #include <e32std.h>
    20 #include <e32base.h>
    21 #include <f32file.h>
    22 #include <charconv.h>
    23 #include "t_cp949.h"
    24 
    25 //  Local Functions
    26 ///////////////////////////////////////////////////////////////////////////////////////
    27 /*
    28 Below four plugins all use cp949table.dll, and first three are same converter.
    29 cp949 (code page 949) 0x200100FF
    30 ksc5601 (Korean) 0x200113CD
    31 EUCKR (EUC-KR) 0x2000E526
    32 iso2022kr (Korean) 0x20010101
    33  */
    34 
    35 #define test(cond)                                  \
    36     {                                               \
    37     TBool __bb = (cond);                            \
    38     TEST(__bb);                                     \
    39     if (!__bb)                                      \
    40         {                                           \
    41         ERR_PRINTF1(_L("ERROR: Test Failed"));      \
    42         User::Leave(1);                             \
    43         }                                           \
    44     }
    45 
    46 const TInt KBufferLength=100;
    47 
    48 void CT_CP949::TestConversionToUnicodeFromCP949(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalCP949, TInt aExpectedResult)
    49     {
    50     TInt state=CCnvCharacterSetConverter::KStateDefault;
    51     TBuf16<KBufferLength> generatedUnicode;
    52     const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalCP949, state);
    53     test(returnValue == aExpectedResult );
    54     test(generatedUnicode==aExpectedUnicode);
    55     }
    56 
    57 void CT_CP949::TestConversionFromUnicodeToCP949(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode, const TDesC8& aExpectedCP949, TInt aExpectedResult)
    58     {
    59     TBuf8<KBufferLength> generatedCP949;
    60     const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedCP949, aOriginalUnicode);
    61     test(returnValue == aExpectedResult);
    62     test(generatedCP949==aExpectedCP949);
    63     }
    64 
    65 void CT_CP949::TestConversion( CCnvCharacterSetConverter& aCharacterSetConverter )
    66 {
    67     TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x79"));
    68     TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x79"));
    69 
    70     TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x81\x41"));
    71     TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x81\x41"));
    72 }
    73 
    74 void CT_CP949::TestConversionIso2022kr( CCnvCharacterSetConverter& aCharacterSetConverter )
    75 {
    76     TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x1b\x24\x43\x0f\x79"));
    77     TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x1b\x24\x43\x0f\x79"));
    78 
    79     TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xc7b8"), _L8("\x1b\x24\x43\x0e\x20\x0f\x41"));
    80     TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xc7b8\x0079"), _L8("\x1b\x24\x43\x0f\xa0\x41\x79"));
    81 
    82     TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x1b\x24\x43\x0f\x81\x41"));
    83     TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x1b\x24\x43\x0f\x81\x41"));
    84 }
    85 
    86 void CT_CP949::DoE32MainL()
    87     {
    88     RFs fileServerSession;
    89     CleanupClosePushL(fileServerSession);
    90     User::LeaveIfError(fileServerSession.Connect());
    91     CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
    92     CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=\
    93         CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
    94     
    95     INFO_PRINTF1(_L("Available:\n"));
    96     for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
    97         {
    98         const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
    99         characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
   100         TPtrC charactersSetName(charactersSet.Name());
   101         if (charactersSet.NameIsFileName())
   102             {
   103             charactersSetName.Set(TParsePtrC(charactersSetName).Name());
   104             }
   105         INFO_PRINTF2(_L("    %S\n"), &charactersSetName);
   106         }
   107         
   108     INFO_PRINTF1(_L("Testing CP949"));
   109     characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierCP949, *arrayOfCharacterSetsAvailable, fileServerSession);
   110     TestConversion( *characterSetConverter );
   111 
   112     INFO_PRINTF1(_L("Testing ksc5601"));
   113     characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierKsc5601, *arrayOfCharacterSetsAvailable, fileServerSession);
   114     TestConversion( *characterSetConverter );
   115 
   116     INFO_PRINTF1(_L("Testing EUCKR"));
   117     characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierEUCKR, *arrayOfCharacterSetsAvailable, fileServerSession);
   118     TestConversion( *characterSetConverter );
   119 
   120     INFO_PRINTF1(_L("Testing Iso2022kr"));
   121     characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierIso2022kr, *arrayOfCharacterSetsAvailable, fileServerSession);
   122     TestConversionIso2022kr( *characterSetConverter );
   123 
   124     CleanupStack::PopAndDestroy(3);
   125         }
   126 
   127 CT_CP949::CT_CP949()
   128     {
   129     SetTestStepName(KTestStep_T_CP949);
   130     }
   131 
   132 TVerdict CT_CP949::doTestStepL()
   133     {
   134     SetTestStepResult(EFail);
   135 
   136     __UHEAP_MARK;
   137     TRAPD(error1, DoE32MainL());    
   138     __UHEAP_MARKEND;
   139 
   140     if(error1 == KErrNone)
   141         {
   142         SetTestStepResult(EPass);
   143         }
   144 
   145     return TestStepResult();
   146     }
   147