os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_iscii.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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_iscii.h"
    24 
    25 const TUint KCharacterSetIdentifier=KCharacterSetIdentifierIscii;
    26 
    27 #define test(cond)                                  \
    28     {                                               \
    29     TBool __bb = (cond);                            \
    30     TEST(__bb);                                     \
    31     if (!__bb)                                      \
    32         {                                           \
    33         ERR_PRINTF1(_L("ERROR: Test Failed"));      \
    34         User::Leave(1);                             \
    35         }                                           \
    36     }
    37 
    38 
    39 const TInt KBufferLength=100;
    40 
    41 void CT_ISCII::TestConversionToUnicodeFromISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalISCII, TInt aExpectedResult)
    42     {
    43     TInt state=CCnvCharacterSetConverter::KStateDefault;
    44     TBuf16<KBufferLength> generatedUnicode;
    45     const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalISCII, state);
    46     test(returnValue == aExpectedResult );
    47     test(generatedUnicode==aExpectedUnicode);
    48     }
    49 
    50 void CT_ISCII::TestConversionToUnicodeFromTruncatedISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16&, const TDesC8& aOriginalISCII, TInt aExpectedResult)
    51     {
    52     TInt state=CCnvCharacterSetConverter::KStateDefault;
    53     TBuf16<KBufferLength> generatedUnicode;
    54     const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalISCII, state);
    55     test(returnValue != aExpectedResult );
    56     }
    57 
    58 void CT_ISCII::TestConversionFromUnicodeToISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode, const TDesC8& aExpectedISCII, TInt aExpectedResult)
    59     {
    60     TBuf8<KBufferLength> generatedISCII;
    61     const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedISCII, aOriginalUnicode);
    62     test(returnValue == aExpectedResult);
    63     test(generatedISCII==aExpectedISCII);
    64     }
    65 
    66 void CT_ISCII::TestConversion( CCnvCharacterSetConverter& aCharacterSetConverter )
    67 {
    68     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0079"), _L8("\xef\x42\x79"));
    69     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079"), _L8("\x79"));
    70 
    71     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075"), _L8("\xef\x42\x79\x7a\x70\x71\x72\x73\x74\x75"));
    72     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075"), _L8("\x79\x7a\x70\x71\x72\x73\x74\x75"));
    73     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075\x0901"), _L8("\x79\x7a\x70\x71\x72\x73\x74\x75\xa1"));
    74     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075\x0901\x093d"), _L8("\x79\x7a\x70\x71\x72\x73\x74\x75\xa1\xea\xe9"));
    75     
    76     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0901"), _L8("\xef\x42\xa1"));
    77     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0901\x0079"), _L8("\xa1\x79"));
    78     TestConversionToUnicodeFromTruncatedISCII(aCharacterSetConverter, _L16("\x0901"), _L8("\xa1"));
    79     
    80     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x094d"), _L8("\xef\x42\xe8"));
    81     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x200c"), _L8("\xef\x42\xe8"));
    82     TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x094d\x0079"), _L8("\xe8\x79"));
    83     
    84     TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0950"), _L8("\xef\x42\xa1\xe9"));
    85 }
    86 
    87 void CT_ISCII::DoE32MainL()
    88 	{
    89 	RFs fileServerSession;
    90 	CleanupClosePushL(fileServerSession);
    91 	User::LeaveIfError(fileServerSession.Connect());
    92 	CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
    93 	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=\
    94 		CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
    95 	
    96 	INFO_PRINTF1(_L("Available:\n"));
    97 	for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
    98 		{
    99 		const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
   100 		characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
   101 		TPtrC charactersSetName(charactersSet.Name());
   102 		if (charactersSet.NameIsFileName())
   103 			{
   104 			charactersSetName.Set(TParsePtrC(charactersSetName).Name());
   105 			}
   106 		INFO_PRINTF2(_L("    %S\n"), &charactersSetName);
   107 		}
   108 		
   109 	characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifier, *arrayOfCharacterSetsAvailable, fileServerSession);
   110 
   111     TestConversion( *characterSetConverter );
   112     
   113  	CleanupStack::PopAndDestroy(3);
   114         }
   115 
   116 CT_ISCII::CT_ISCII()
   117     {
   118     SetTestStepName(KTestStep_T_ISCII);
   119     }
   120 
   121 TVerdict CT_ISCII::doTestStepL()
   122     {
   123     SetTestStepResult(EFail);
   124 
   125     __UHEAP_MARK;
   126     TRAPD(error1, DoE32MainL());    
   127     __UHEAP_MARKEND;
   128 
   129     if(error1 == KErrNone)
   130         {
   131         SetTestStepResult(EPass);
   132         }
   133 
   134     return TestStepResult();
   135     }