1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_cp949.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,147 @@
1.4 +/*
1.5 +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description:
1.18 +*
1.19 +*/
1.20 +
1.21 +
1.22 +#include <e32std.h>
1.23 +#include <e32base.h>
1.24 +#include <f32file.h>
1.25 +#include <charconv.h>
1.26 +#include "t_cp949.h"
1.27 +
1.28 +// Local Functions
1.29 +///////////////////////////////////////////////////////////////////////////////////////
1.30 +/*
1.31 +Below four plugins all use cp949table.dll, and first three are same converter.
1.32 +cp949 (code page 949) 0x200100FF
1.33 +ksc5601 (Korean) 0x200113CD
1.34 +EUCKR (EUC-KR) 0x2000E526
1.35 +iso2022kr (Korean) 0x20010101
1.36 + */
1.37 +
1.38 +#define test(cond) \
1.39 + { \
1.40 + TBool __bb = (cond); \
1.41 + TEST(__bb); \
1.42 + if (!__bb) \
1.43 + { \
1.44 + ERR_PRINTF1(_L("ERROR: Test Failed")); \
1.45 + User::Leave(1); \
1.46 + } \
1.47 + }
1.48 +
1.49 +const TInt KBufferLength=100;
1.50 +
1.51 +void CT_CP949::TestConversionToUnicodeFromCP949(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalCP949, TInt aExpectedResult)
1.52 + {
1.53 + TInt state=CCnvCharacterSetConverter::KStateDefault;
1.54 + TBuf16<KBufferLength> generatedUnicode;
1.55 + const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalCP949, state);
1.56 + test(returnValue == aExpectedResult );
1.57 + test(generatedUnicode==aExpectedUnicode);
1.58 + }
1.59 +
1.60 +void CT_CP949::TestConversionFromUnicodeToCP949(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode, const TDesC8& aExpectedCP949, TInt aExpectedResult)
1.61 + {
1.62 + TBuf8<KBufferLength> generatedCP949;
1.63 + const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedCP949, aOriginalUnicode);
1.64 + test(returnValue == aExpectedResult);
1.65 + test(generatedCP949==aExpectedCP949);
1.66 + }
1.67 +
1.68 +void CT_CP949::TestConversion( CCnvCharacterSetConverter& aCharacterSetConverter )
1.69 +{
1.70 + TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x79"));
1.71 + TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x79"));
1.72 +
1.73 + TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x81\x41"));
1.74 + TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x81\x41"));
1.75 +}
1.76 +
1.77 +void CT_CP949::TestConversionIso2022kr( CCnvCharacterSetConverter& aCharacterSetConverter )
1.78 +{
1.79 + TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x1b\x24\x43\x0f\x79"));
1.80 + TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\x0079"), _L8("\x1b\x24\x43\x0f\x79"));
1.81 +
1.82 + TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xc7b8"), _L8("\x1b\x24\x43\x0e\x20\x0f\x41"));
1.83 + TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xc7b8\x0079"), _L8("\x1b\x24\x43\x0f\xa0\x41\x79"));
1.84 +
1.85 + TestConversionFromUnicodeToCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x1b\x24\x43\x0f\x81\x41"));
1.86 + TestConversionToUnicodeFromCP949(aCharacterSetConverter, _L16("\xAC02"), _L8("\x1b\x24\x43\x0f\x81\x41"));
1.87 +}
1.88 +
1.89 +void CT_CP949::DoE32MainL()
1.90 + {
1.91 + RFs fileServerSession;
1.92 + CleanupClosePushL(fileServerSession);
1.93 + User::LeaveIfError(fileServerSession.Connect());
1.94 + CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
1.95 + CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=\
1.96 + CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
1.97 +
1.98 + INFO_PRINTF1(_L("Available:\n"));
1.99 + for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
1.100 + {
1.101 + const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
1.102 + characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
1.103 + TPtrC charactersSetName(charactersSet.Name());
1.104 + if (charactersSet.NameIsFileName())
1.105 + {
1.106 + charactersSetName.Set(TParsePtrC(charactersSetName).Name());
1.107 + }
1.108 + INFO_PRINTF2(_L(" %S\n"), &charactersSetName);
1.109 + }
1.110 +
1.111 + INFO_PRINTF1(_L("Testing CP949"));
1.112 + characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierCP949, *arrayOfCharacterSetsAvailable, fileServerSession);
1.113 + TestConversion( *characterSetConverter );
1.114 +
1.115 + INFO_PRINTF1(_L("Testing ksc5601"));
1.116 + characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierKsc5601, *arrayOfCharacterSetsAvailable, fileServerSession);
1.117 + TestConversion( *characterSetConverter );
1.118 +
1.119 + INFO_PRINTF1(_L("Testing EUCKR"));
1.120 + characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierEUCKR, *arrayOfCharacterSetsAvailable, fileServerSession);
1.121 + TestConversion( *characterSetConverter );
1.122 +
1.123 + INFO_PRINTF1(_L("Testing Iso2022kr"));
1.124 + characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierIso2022kr, *arrayOfCharacterSetsAvailable, fileServerSession);
1.125 + TestConversionIso2022kr( *characterSetConverter );
1.126 +
1.127 + CleanupStack::PopAndDestroy(3);
1.128 + }
1.129 +
1.130 +CT_CP949::CT_CP949()
1.131 + {
1.132 + SetTestStepName(KTestStep_T_CP949);
1.133 + }
1.134 +
1.135 +TVerdict CT_CP949::doTestStepL()
1.136 + {
1.137 + SetTestStepResult(EFail);
1.138 +
1.139 + __UHEAP_MARK;
1.140 + TRAPD(error1, DoE32MainL());
1.141 + __UHEAP_MARKEND;
1.142 +
1.143 + if(error1 == KErrNone)
1.144 + {
1.145 + SetTestStepResult(EPass);
1.146 + }
1.147 +
1.148 + return TestStepResult();
1.149 + }
1.150 +