charconvfw/charconvplugins/test/rtest/tsrc/main/t_cp949.cpp
changeset 51 a7c938434754
equal deleted inserted replaced
44:601ab138ba0b 51:a7c938434754
       
     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