sl@0: /* sl@0: * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include "t_iscii.h" sl@0: sl@0: const TUint KCharacterSetIdentifier=KCharacterSetIdentifierIscii; sl@0: sl@0: #define test(cond) \ sl@0: { \ sl@0: TBool __bb = (cond); \ sl@0: TEST(__bb); \ sl@0: if (!__bb) \ sl@0: { \ sl@0: ERR_PRINTF1(_L("ERROR: Test Failed")); \ sl@0: User::Leave(1); \ sl@0: } \ sl@0: } sl@0: sl@0: sl@0: const TInt KBufferLength=100; sl@0: sl@0: void CT_ISCII::TestConversionToUnicodeFromISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalISCII, TInt aExpectedResult) sl@0: { sl@0: TInt state=CCnvCharacterSetConverter::KStateDefault; sl@0: TBuf16 generatedUnicode; sl@0: const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalISCII, state); sl@0: test(returnValue == aExpectedResult ); sl@0: test(generatedUnicode==aExpectedUnicode); sl@0: } sl@0: sl@0: void CT_ISCII::TestConversionToUnicodeFromTruncatedISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16&, const TDesC8& aOriginalISCII, TInt aExpectedResult) sl@0: { sl@0: TInt state=CCnvCharacterSetConverter::KStateDefault; sl@0: TBuf16 generatedUnicode; sl@0: const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalISCII, state); sl@0: test(returnValue != aExpectedResult ); sl@0: } sl@0: sl@0: void CT_ISCII::TestConversionFromUnicodeToISCII(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode, const TDesC8& aExpectedISCII, TInt aExpectedResult) sl@0: { sl@0: TBuf8 generatedISCII; sl@0: const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedISCII, aOriginalUnicode); sl@0: test(returnValue == aExpectedResult); sl@0: test(generatedISCII==aExpectedISCII); sl@0: } sl@0: sl@0: void CT_ISCII::TestConversion( CCnvCharacterSetConverter& aCharacterSetConverter ) sl@0: { sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0079"), _L8("\xef\x42\x79")); sl@0: TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079"), _L8("\x79")); sl@0: sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075"), _L8("\xef\x42\x79\x7a\x70\x71\x72\x73\x74\x75")); sl@0: TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075"), _L8("\x79\x7a\x70\x71\x72\x73\x74\x75")); sl@0: TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0079\x007a\x0070\x0071\x0072\x0073\x0074\x0075\x0901"), _L8("\x79\x7a\x70\x71\x72\x73\x74\x75\xa1")); sl@0: 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")); sl@0: sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0901"), _L8("\xef\x42\xa1")); sl@0: TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x0901\x0079"), _L8("\xa1\x79")); sl@0: TestConversionToUnicodeFromTruncatedISCII(aCharacterSetConverter, _L16("\x0901"), _L8("\xa1")); sl@0: sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x094d"), _L8("\xef\x42\xe8")); sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x200c"), _L8("\xef\x42\xe8")); sl@0: TestConversionToUnicodeFromISCII(aCharacterSetConverter, _L16("\x094d\x0079"), _L8("\xe8\x79")); sl@0: sl@0: TestConversionFromUnicodeToISCII(aCharacterSetConverter, _L16("\x0950"), _L8("\xef\x42\xa1\xe9")); sl@0: } sl@0: sl@0: void CT_ISCII::DoE32MainL() sl@0: { sl@0: RFs fileServerSession; sl@0: CleanupClosePushL(fileServerSession); sl@0: User::LeaveIfError(fileServerSession.Connect()); sl@0: CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC(); sl@0: CArrayFix* arrayOfCharacterSetsAvailable=\ sl@0: CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession); sl@0: sl@0: INFO_PRINTF1(_L("Available:\n")); sl@0: for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i) sl@0: { sl@0: const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i]; sl@0: characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession); sl@0: TPtrC charactersSetName(charactersSet.Name()); sl@0: if (charactersSet.NameIsFileName()) sl@0: { sl@0: charactersSetName.Set(TParsePtrC(charactersSetName).Name()); sl@0: } sl@0: INFO_PRINTF2(_L(" %S\n"), &charactersSetName); sl@0: } sl@0: sl@0: characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifier, *arrayOfCharacterSetsAvailable, fileServerSession); sl@0: sl@0: TestConversion( *characterSetConverter ); sl@0: sl@0: CleanupStack::PopAndDestroy(3); sl@0: } sl@0: sl@0: CT_ISCII::CT_ISCII() sl@0: { sl@0: SetTestStepName(KTestStep_T_ISCII); sl@0: } sl@0: sl@0: TVerdict CT_ISCII::doTestStepL() sl@0: { sl@0: SetTestStepResult(EFail); sl@0: sl@0: __UHEAP_MARK; sl@0: TRAPD(error1, DoE32MainL()); sl@0: __UHEAP_MARKEND; sl@0: sl@0: if(error1 == KErrNone) sl@0: { sl@0: SetTestStepResult(EPass); sl@0: } sl@0: sl@0: return TestStepResult(); sl@0: }