sl@0: /* sl@0: * Copyright (c) 2008-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: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include "t_spanishgsmsingle.h" sl@0: sl@0: const TUint KCharacterSetIdentifier=KCharacterSetIdentifierSpanishSingleSms7Bit; sl@0: sl@0: #ifdef __WINS__ sl@0: _LIT(KInputUnicodeFilename, "c:\\test\\data\\gsm7_spanish_single_uni_input.dat"); sl@0: _LIT(KInputForeignFilename, "c:\\test\\data\\gsm7_spanish_single_for_input.dat"); sl@0: _LIT(KExpectUnicodeFilename, "c:\\test\\data\\gsm7_spanish_single_uni_expect.dat"); sl@0: _LIT(KExpectForeignFilename, "c:\\test\\data\\gsm7_spanish_single_for_expect.dat"); sl@0: #else sl@0: _LIT(KInputUnicodeFilename, "z:\\test\\data\\gsm7_spanish_single_uni_input.dat"); sl@0: _LIT(KInputForeignFilename, "z:\\test\\data\\gsm7_spanish_single_for_input.dat"); sl@0: _LIT(KExpectUnicodeFilename, "z:\\test\\data\\gsm7_spanish_single_uni_expect.dat"); sl@0: _LIT(KExpectForeignFilename, "z:\\test\\data\\gsm7_spanish_single_for_expect.dat"); sl@0: #endif sl@0: sl@0: static CCnvCharacterSetConverter* characterSetConverter; sl@0: static RFs fileServerSession; sl@0: static TBuf8<1600> temp; sl@0: static TBuf16<800> originalUnicode; sl@0: static TBuf8<1600> generatedForeign; sl@0: static TBuf16<800> generatedUnicode; 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: void CT_SPANISHGSMSINGLE::ReadDescL(TDes8& aDes, const TDesC& aFilename, RFs& aFs) sl@0: { sl@0: RFile file; sl@0: TInt err = file.Open(aFs, aFilename, EFileRead); sl@0: test(err == KErrNone); sl@0: CleanupClosePushL(file); sl@0: err = file.Read(aDes); sl@0: test(err == KErrNone); sl@0: CleanupStack::PopAndDestroy(&file); sl@0: } sl@0: sl@0: //translate from unicode big endian TDesC8 to TDes16 sl@0: void CT_SPANISHGSMSINGLE::Unicode_Big(TDesC8& aSource, TDes16& aTarget) sl@0: { sl@0: TInt length = aSource.Length(); sl@0: TInt i = 0; sl@0: for(i=0;i* arrayOfCharacterSetsAvailable=\ sl@0: CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession); sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4045 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: 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: CleanupStack::PopAndDestroy(arrayOfCharacterSetsAvailable); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID TI18N-CHARCONV-UT-4046 sl@0: @SYMTestCaseDesc Testcase to test new converter can be prepared sl@0: @SYMTestPriority High sl@0: @SYMTestActions Test for PrepareToConvertToOrFromL() sl@0: @SYMTestExpectedResults The test passed, If EAvailable is returned sl@0: @SYMPREQ PREQ2592 sl@0: @SYMREQ REQ12584 sl@0: */ sl@0: void CT_SPANISHGSMSINGLE::PrepareNewConverterL() sl@0: { sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4046 Testing new converter can be prepared ")); sl@0: CCnvCharacterSetConverter::TAvailability avaible = characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifier, fileServerSession); sl@0: test( CCnvCharacterSetConverter::EAvailable == avaible ); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID TI18N-CHARCONV-UT-4047 sl@0: @SYMTestCaseDesc Convert Unicode code to foreign character set sl@0: @SYMTestPriority High sl@0: @SYMTestActions Test for ConvertFromUnicode() sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMPREQ PREQ2592 sl@0: @SYMREQ REQ12584 sl@0: */ sl@0: void CT_SPANISHGSMSINGLE::ConvertFromUnicodeToForeignL() sl@0: { sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4047 Testing encoding from Unicode to Foreign ")); sl@0: ReadDescL(temp, KInputUnicodeFilename, fileServerSession); sl@0: sl@0: Unicode_Big(temp, originalUnicode); sl@0: TInt test = characterSetConverter->ConvertFromUnicode(generatedForeign, originalUnicode); sl@0: test(characterSetConverter->ConvertFromUnicode(generatedForeign, originalUnicode) == 0); sl@0: ReadDescL(temp, KExpectForeignFilename, fileServerSession); sl@0: test(generatedForeign == temp); sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID TI18N-CHARCONV-UT-4048 sl@0: @SYMTestCaseDesc Convert foreign character set to Unicode code sl@0: @SYMTestPriority High sl@0: @SYMTestActions Test for ConvertToUnicode() with legal foreign characters, 0x00 - 0x7F sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMPREQ PREQ2592 sl@0: @SYMREQ REQ12584 sl@0: */ sl@0: void CT_SPANISHGSMSINGLE::ConvertFromForeignToUnicodeL() sl@0: { sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4048 Testing encoding from Foreign to Unicode ")); sl@0: ReadDescL(generatedForeign, KInputForeignFilename, fileServerSession); sl@0: TInt state=CCnvCharacterSetConverter::KStateDefault; sl@0: test( 0 == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state)); sl@0: ReadDescL(temp, KExpectUnicodeFilename, fileServerSession); sl@0: originalUnicode.Zero(); sl@0: Unicode_Big(temp, originalUnicode); sl@0: test(generatedUnicode == originalUnicode); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID TI18N-CHARCONV-UT-4049 sl@0: @SYMTestCaseDesc Convert illegal character from foreign character set to unicode sl@0: @SYMTestPriority High sl@0: @SYMTestActions Test for ConvertToUnicode() with illegal foreign characters 0x1B sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMPREQ PREQ2592 sl@0: @SYMREQ REQ12584 sl@0: */ sl@0: void CT_SPANISHGSMSINGLE::ConvertIllegalForeignCharacter() sl@0: { sl@0: //test 0x1b sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4049 Testing EErrorIllFormedInput ")); sl@0: generatedForeign.SetLength(1); sl@0: generatedForeign[0] = 0x1b; //the escape character sl@0: TInt state=CCnvCharacterSetConverter::KStateDefault; sl@0: test( -20 == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state)); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID TI18N-CHARCONV-UT-4050 sl@0: @SYMTestCaseDesc Convert out of range characters from foreign character set to Unicode sl@0: @SYMTestPriority High sl@0: @SYMTestActions Test for ConvertToUnicode() for some out of range foreign characters 0x80 - 0xFF sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMPREQ PREQ2592 sl@0: @SYMREQ REQ12584 sl@0: */ sl@0: void CT_SPANISHGSMSINGLE::ConvertOutOfRangeForeignCharacters() sl@0: { sl@0: //test foreign chararcter point which is not in the scope, e.g. 0x80 in GSM03.38, which should always mapped to 0xFFFD sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:TI18N-CHARCONV-UT-4050 Testing Characters not in the Scope ")); sl@0: generatedForeign.SetLength(1); sl@0: generatedForeign[0] = 0x80; sl@0: TInt state=CCnvCharacterSetConverter::KStateDefault; sl@0: _LIT16(KExpected2, "\xfffd"); //the expected foreign sl@0: test( 0 == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state)); sl@0: test( generatedUnicode == KExpected2 ); sl@0: } sl@0: sl@0: void CT_SPANISHGSMSINGLE::DoE32MainL() sl@0: { sl@0: CleanupClosePushL(fileServerSession); sl@0: User::LeaveIfError(fileServerSession.Connect()); sl@0: characterSetConverter=CCnvCharacterSetConverter::NewLC(); sl@0: sl@0: ListAlltheConvertersL(); sl@0: PrepareNewConverterL(); sl@0: ConvertFromUnicodeToForeignL(); sl@0: ConvertFromForeignToUnicodeL(); sl@0: ConvertIllegalForeignCharacter(); sl@0: ConvertOutOfRangeForeignCharacters(); sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: } sl@0: sl@0: sl@0: CT_SPANISHGSMSINGLE::CT_SPANISHGSMSINGLE() sl@0: { sl@0: SetTestStepName(KTestStep_T_SPANISHGSMSINGLE); sl@0: } sl@0: sl@0: TVerdict CT_SPANISHGSMSINGLE::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: }