First public contribution.
2 * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
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".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
23 #include "t_extendedsms.h"
26 _LIT(KInputUnicodeFilename, "c:\\test\\data\\extendedsms_uni_input.dat");
27 _LIT(KInputForeignFilename, "c:\\test\\data\\extendedsms_for_input.dat");
28 _LIT(KExpectUnicodeFilename, "c:\\test\\data\\extendedsms_uni_expect.dat");
29 _LIT(KExpectForeignFilename, "c:\\test\\data\\extendedsms_for_expect.dat");
31 _LIT(KInputUnicodeFilename, "z:\\test\\data\\extendedsms_uni_input.dat");
32 _LIT(KInputForeignFilename, "z:\\test\\data\\extendedsms_for_input.dat");
33 _LIT(KExpectUnicodeFilename, "z:\\test\\data\\extendedsms_uni_expect.dat");
34 _LIT(KExpectForeignFilename, "z:\\test\\data\\extendedsms_for_expect.dat");
37 static CCnvCharacterSetConverter* characterSetConverter;
38 static RFs fileServerSession;
39 static TBuf8<1254> temp;
40 static TBuf16<627> originalUnicode;
41 static TBuf8<627> generatedForeign;
42 static TBuf16<627> generatedUnicode;
46 TBool __bb = (cond); \
50 ERR_PRINTF1(_L("ERROR: Test Failed")); \
56 //read test data from file
57 void CT_EXTENDEDSMS::ReadDescL(TDes8& aDes, const TDesC& aFilename, RFs& aFs)
60 TInt err = file.Open(aFs, aFilename, EFileRead);
61 test(err == KErrNone);
62 CleanupClosePushL(file);
63 err = file.Read(aDes);
64 test(err == KErrNone);
65 CleanupStack::PopAndDestroy(&file);
68 //translate from unicode big endian TDesC8 to TDes16
69 void CT_EXTENDEDSMS::Unicode_Big(TDesC8& aSource, TDes16& aTarget)
71 TInt length = aSource.Length();
73 for(i=0;i<length-1;i++)
75 TInt32 temp = *(aSource.Ptr()+(i))*16*16 + *(aSource.Ptr()+i+1);
82 @SYMTestCaseID SYSLIB-CHARCONV-UT-4003
83 @SYMTestCaseDesc Testcase to test new converter name can be listed
85 @SYMTestActions Test for CreateArrayOfCharacterSetsAvailableLC()
86 @SYMTestExpectedResults The test passed, if Available character sets are listed in epocwind.out
90 void CT_EXTENDEDSMS::ListAlltheConvertersL()
92 CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=\
93 CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
94 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4003 Available Converters\n "));
95 for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
97 const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
98 TPtrC charactersSetName(charactersSet.Name());
99 if (charactersSet.NameIsFileName())
101 charactersSetName.Set(TParsePtrC(charactersSetName).Name());
103 INFO_PRINTF2(_L(" %S\n"), &charactersSetName);
105 CleanupStack::PopAndDestroy(arrayOfCharacterSetsAvailable);
109 @SYMTestCaseID SYSLIB-CHARCONV-UT-4004
110 @SYMTestCaseDesc Testcase to test new converter name can be prepared for converting
111 @SYMTestPriority High
112 @SYMTestActions Test for PrepareToConvertToOrFromL()
113 @SYMTestExpectedResults The test passed, If EAvailable is returned
117 void CT_EXTENDEDSMS::PrepareNewConverterL()
119 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4004 Preparing the new converter "));
120 CCnvCharacterSetConverter::TAvailability avaible = characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierExtendedSms7Bit, fileServerSession);
121 test( CCnvCharacterSetConverter::EAvailable == avaible );
125 @SYMTestCaseID SYSLIB-CHARCONV-UT-4005
126 @SYMTestCaseDesc Convert Unicode code to foreign character set
127 @SYMTestPriority High
128 @SYMTestActions Test for ConvertFromUnicode()
129 @SYMTestExpectedResults Test is passed if the generated cod and Expected code is same
133 void CT_EXTENDEDSMS::ConvertFromUnicodeToForeignL()
135 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4005 Encoding from Unicode to Foreign "));
136 ReadDescL(temp, KInputUnicodeFilename, fileServerSession);
137 Unicode_Big(temp, originalUnicode);
138 test(characterSetConverter->ConvertFromUnicode(generatedForeign, originalUnicode) == 0);
139 ReadDescL(temp, KExpectForeignFilename, fileServerSession);
140 test(generatedForeign == temp);
144 @SYMTestCaseID SYSLIB-CHARCONV-UT-4006
145 @SYMTestCaseDesc Convert foreign character set to Unicode code
146 @SYMTestPriority High
147 @SYMTestActions Test for ConvertToUnicode() with legal foreign characters, 0x00 - 0x7F
148 @SYMTestExpectedResults Test is passed if contents of generatedUnicode buffer with OriginalUnicode buffer are same.
152 void CT_EXTENDEDSMS::ConvertFromForeignToUnicodeL()
154 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4006 Encoding from Foreign to Unicode "));
155 ReadDescL(generatedForeign, KInputForeignFilename, fileServerSession);
156 TInt state=CCnvCharacterSetConverter::KStateDefault;
157 test( 0 == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state));
158 ReadDescL(temp, KExpectUnicodeFilename, fileServerSession);
159 originalUnicode.Zero();
160 Unicode_Big(temp, originalUnicode);
161 test(generatedUnicode == originalUnicode);
165 @SYMTestCaseID SYSLIB-CHARCONV-UT-4007
166 @SYMTestCaseDesc Convert out of range characters from foreign character set to Unicode
167 @SYMTestPriority High
168 @SYMTestActions Test for ConvertToUnicode() for some out of range foreign characters 0x80 - 0xFF
169 @SYMTestExpectedResults The test is passed if generated code is same as expected code
173 void CT_EXTENDEDSMS::ConvertOutOfRangeForeignCharacters()
175 //test foreign chararcter point which is not in the scope, e.g. 0x80 in GSM03.38, which should always mapped to 0xFFFD
176 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4007 Testing Characters not in the Scope "));
177 generatedForeign.SetLength(1);
178 generatedForeign[0] = 0x81;
179 TInt state=CCnvCharacterSetConverter::KStateDefault;
180 _LIT16(KExpected2, "\xfffd"); //the expected foreign
181 test( 0 == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state));
182 test( generatedUnicode == KExpected2 );
186 @SYMTestCaseID SYSLIB-CHARCONV-UT-4008
187 @SYMTestCaseDesc Convert illegal character from foreign character set to unicode
188 @SYMTestPriority High
189 @SYMTestActions Test for ConvertToUnicode() with illegal foreign characters 0x1B
190 @SYMTestExpectedResults Test is passed if KErrCorrupt is returned
194 void CT_EXTENDEDSMS::ConvertIllegalForeignCharacter()
197 INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-UT-4008 Testing EErrorIllFormedInput "));
198 generatedForeign.SetLength(1);
199 generatedForeign[0] = 0x1b; //the escape character
200 TInt state=CCnvCharacterSetConverter::KStateDefault;
201 test( KErrCorrupt == characterSetConverter->ConvertToUnicode(generatedUnicode, generatedForeign, state));
204 void CT_EXTENDEDSMS::DoE32MainL()
206 CleanupClosePushL(fileServerSession);
207 User::LeaveIfError(fileServerSession.Connect());
208 characterSetConverter=CCnvCharacterSetConverter::NewLC();
210 ListAlltheConvertersL();
211 PrepareNewConverterL();
212 ConvertFromUnicodeToForeignL();
213 ConvertFromForeignToUnicodeL();
214 ConvertOutOfRangeForeignCharacters();
215 ConvertIllegalForeignCharacter();
217 CleanupStack::PopAndDestroy(2);
220 CT_EXTENDEDSMS::CT_EXTENDEDSMS()
222 SetTestStepName(KTestStep_T_EXTENDEDSMS);
225 TVerdict CT_EXTENDEDSMS::doTestStepL()
227 SetTestStepResult(EFail);
230 TRAPD(error1, DoE32MainL());
233 if(error1 == KErrNone)
235 SetTestStepResult(EPass);
238 return TestStepResult();