os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_gbk.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_gbk.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,311 @@
     1.4 +/*
     1.5 +* Copyright (c) 1997-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_gbk.h"
    1.27 +
    1.28 +#define test(cond)                                  \
    1.29 +    {                                               \
    1.30 +    TBool __bb = (cond);                            \
    1.31 +    TEST(__bb);                                     \
    1.32 +    if (!__bb)                                      \
    1.33 +        {                                           \
    1.34 +        ERR_PRINTF1(_L("ERROR: Test Failed"));      \
    1.35 +        User::Leave(1);                             \
    1.36 +        }                                           \
    1.37 +    }
    1.38 +
    1.39 +const TInt KMibValue = 113;
    1.40 +const TInt KBufferLength=100;
    1.41 +/**
    1.42 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0509
    1.43 +@SYMTestCaseDesc        Tests for truncated conversion from Unicode to GBK
    1.44 +@SYMTestPriority        Medium
    1.45 +@SYMTestActions         Tests for truncated conversion from Unicode to Gbk and back to Unicode.
    1.46 +                        Tests for the generated Unicode with original Unicode
    1.47 +@SYMTestExpectedResults Test must not fail
    1.48 +@SYMREQ                 REQ0000
    1.49 +*/
    1.50 +void CT_GBK::TestTruncatedConversionFromUnicodeToGbk(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode)
    1.51 +	{
    1.52 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0509 "));
    1.53 +	for (TInt i=aOriginalUnicode.Length(); i>=0; --i)
    1.54 +		{
    1.55 +		TBuf8<KBufferLength> generatedGbk;
    1.56 +		const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedGbk, aOriginalUnicode.Left(i));
    1.57 +		test(returnValue>=0);
    1.58 +		TBuf8<KBufferLength> generatedsecondPartOfGbk;
    1.59 +		test(aCharacterSetConverter.ConvertFromUnicode(generatedsecondPartOfGbk, aOriginalUnicode.Mid(i-returnValue))==0);
    1.60 +		generatedGbk.Append(generatedsecondPartOfGbk);
    1.61 +		TInt state=CCnvCharacterSetConverter::KStateDefault;
    1.62 +		TBuf16<KBufferLength> generatedUnicode;
    1.63 +		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedGbk, state)==0);
    1.64 +		test(generatedUnicode==aOriginalUnicode);
    1.65 +		}
    1.66 +	}
    1.67 +/**
    1.68 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0510
    1.69 +@SYMTestCaseDesc        Splitting and converting from Unicode to GBK test
    1.70 +@SYMTestPriority        Medium
    1.71 +@SYMTestActions         Tests for conversion after splitting from Unicode to Gbk and back to Unicode
    1.72 +						Tests for the generated Unicode with original Unicode
    1.73 +@SYMTestExpectedResults Test must not fail
    1.74 +@SYMREQ                 REQ0000
    1.75 +*/
    1.76 +void CT_GBK::TestSplittingConvertingFromUnicodeToGbk(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit, TInt aExpectedLengthOfFirstPartOfGbk, const TDesC8& aExpectedGbk, const TDesC16& aOriginalUnicode)
    1.77 +	{
    1.78 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0510 "));
    1.79 +	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
    1.80 +	test(aMaximumLengthUpperLimit<=KBufferLength);
    1.81 +	TUint8 gbkBuffer[KBufferLength];
    1.82 +	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
    1.83 +		{
    1.84 +		TPtr8 generatedFirstPartOfGbk(gbkBuffer, i);
    1.85 +		test(aCharacterSetConverter.ConvertFromUnicode(generatedFirstPartOfGbk, aOriginalUnicode)==aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit);
    1.86 +		test(generatedFirstPartOfGbk==aExpectedGbk.Left(aExpectedLengthOfFirstPartOfGbk));
    1.87 +		TBuf8<KBufferLength> generatedSecondPartOfGbk;
    1.88 +		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfGbk, aOriginalUnicode.Right(aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit))==0);
    1.89 +		test(generatedSecondPartOfGbk==aExpectedGbk.Mid(aExpectedLengthOfFirstPartOfGbk));
    1.90 +		TInt state=CCnvCharacterSetConverter::KStateDefault;
    1.91 +		TBuf16<KBufferLength> generatedUnicode;
    1.92 +		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedFirstPartOfGbk, state)==0);
    1.93 +		test(state==CCnvCharacterSetConverter::KStateDefault);
    1.94 +		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
    1.95 +		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, generatedSecondPartOfGbk, state)==0);
    1.96 +		test(state==CCnvCharacterSetConverter::KStateDefault);
    1.97 +		generatedUnicode.Append(generatedSecondPartOfUnicode);
    1.98 +		test(generatedUnicode==aOriginalUnicode);
    1.99 +		}
   1.100 +	}
   1.101 +/**
   1.102 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0511
   1.103 +@SYMTestCaseDesc        Tests for truncated conversion from GBK to Unicode
   1.104 +@SYMTestPriority        Medium
   1.105 +@SYMTestActions         Tests for conversion after truncation from Unicode to Hz and back to Unicode
   1.106 +@SYMTestExpectedResults Test must not fail
   1.107 +@SYMREQ                 REQ0000
   1.108 +*/
   1.109 +void CT_GBK::TestTruncatedConversionToUnicodeFromGbk(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalGbk)
   1.110 +	{
   1.111 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0511 "));
   1.112 +	for (TInt i=aOriginalGbk.Length(); i>=2; --i) // 2 is the length of GBK's longest multi-byte characters
   1.113 +		{
   1.114 +		TInt state=CCnvCharacterSetConverter::KStateDefault;
   1.115 +		TBuf16<KBufferLength> generatedUnicode;
   1.116 +		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalGbk.Left(i), state);
   1.117 +		test(returnValue>=0);
   1.118 +		TBuf16<KBufferLength> generatedsecondPartOfUnicode;
   1.119 +		test(aCharacterSetConverter.ConvertToUnicode(generatedsecondPartOfUnicode, aOriginalGbk.Mid(i-returnValue), state)==0);
   1.120 +		generatedUnicode.Append(generatedsecondPartOfUnicode);
   1.121 +		test(generatedUnicode==aExpectedUnicode);
   1.122 +		}
   1.123 +	}
   1.124 +/**
   1.125 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0512
   1.126 +@SYMTestCaseDesc        Splitting and converting from GBK to Unicode test
   1.127 +@SYMTestPriority        Medium
   1.128 +@SYMTestActions         Tests for conversion after splitting from Hz to Unicode and back to Hz
   1.129 +@SYMTestExpectedResults Test must not fail
   1.130 +@SYMREQ                 REQ0000
   1.131 +*/
   1.132 +void CT_GBK::TestSplittingConvertingToUnicodeFromGbk(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfGbkBytesNotConvertedAtSplit, TInt aExpectedLengthOfFirstPartOfUnicode, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalGbk)
   1.133 +	{
   1.134 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0512 "));
   1.135 +	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
   1.136 +	test(aMaximumLengthUpperLimit<=KBufferLength);
   1.137 +	TUint16 unicodeBuffer[KBufferLength];
   1.138 +	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
   1.139 +		{
   1.140 +		TPtr16 generatedFirstPartOfUnicode(unicodeBuffer, i);
   1.141 +		TInt state=CCnvCharacterSetConverter::KStateDefault;
   1.142 +		test(aCharacterSetConverter.ConvertToUnicode(generatedFirstPartOfUnicode, aOriginalGbk, state)==aExpectedNumberOfGbkBytesNotConvertedAtSplit);
   1.143 +		test(generatedFirstPartOfUnicode==aExpectedUnicode.Left(aExpectedLengthOfFirstPartOfUnicode));
   1.144 +		test(state==CCnvCharacterSetConverter::KStateDefault);
   1.145 +		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
   1.146 +		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, aOriginalGbk.Right(aExpectedNumberOfGbkBytesNotConvertedAtSplit), state)==0);
   1.147 +		test(generatedSecondPartOfUnicode==aExpectedUnicode.Mid(aExpectedLengthOfFirstPartOfUnicode));
   1.148 +		test(state==CCnvCharacterSetConverter::KStateDefault);
   1.149 +		TBuf8<KBufferLength> generatedGbk;
   1.150 +		test(aCharacterSetConverter.ConvertFromUnicode(generatedGbk, generatedFirstPartOfUnicode)==0);
   1.151 +		TBuf8<KBufferLength> generatedSecondPartOfGbk;
   1.152 +		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfGbk, generatedSecondPartOfUnicode)==0);
   1.153 +		generatedGbk.Append(generatedSecondPartOfGbk);
   1.154 +		test(generatedGbk==aOriginalGbk);
   1.155 +		}
   1.156 +	}
   1.157 +
   1.158 +
   1.159 +/**
   1.160 +Tests retreiving the MIB value from the GBK UID
   1.161 +Tests retreiving the GBK UID from the MIB value
   1.162 +
   1.163 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0513
   1.164 +@SYMTestCaseDesc        Tests for conversion from MIB to UID and UID to MIB
   1.165 +@SYMTestPriority        Medium
   1.166 +@SYMTestActions         Tests CCnvCharacterSetConverter::ConvertMibEnumOfCharacterSetToIdentifierL(),
   1.167 +                        CCnvCharacterSetConverter::ConvertCharacterSetIdentifierToMibEnumL() functions
   1.168 +@SYMTestExpectedResults Test must not fail
   1.169 +@SYMREQ                 REQ0000
   1.170 +*/
   1.171 +void CT_GBK::CharacterSetValueAndMIBTests(CCnvCharacterSetConverter& aCharacterSetConverter, RFs& aFileServerSession)
   1.172 +{
   1.173 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0513 "));
   1.174 +	// check that the character set value of '113' is converted to the GBK UID (0x10003ecb)
   1.175 +	test(aCharacterSetConverter.ConvertMibEnumOfCharacterSetToIdentifierL(KMibValue,aFileServerSession)==KCharacterSetIdentifierGbk);
   1.176 +	INFO_PRINTF1(_L("\nMIB->Char Set UID - OK"));
   1.177 +
   1.178 +	// check that the UCS2 GUID (0x10003ecb) is converted to the character set value of '113'
   1.179 +	test(aCharacterSetConverter.ConvertCharacterSetIdentifierToMibEnumL(KCharacterSetIdentifierGbk,aFileServerSession)==KMibValue);
   1.180 +	INFO_PRINTF1(_L("\nChar Set UID->MIB - OK"));
   1.181 +}
   1.182 +/**
   1.183 +@SYMTestCaseID          SYSLIB-CHARCONV-CT-0514
   1.184 +@SYMTestCaseDesc        Conversion tests for GBK to Unicode
   1.185 +@SYMTestPriority        Medium
   1.186 +@SYMTestActions         Tests for conversion from GBK to Unicode and vice versa.
   1.187 +@SYMTestExpectedResults Test must not fail
   1.188 +@SYMREQ                 REQ0000
   1.189 +*/
   1.190 +void CT_GBK::DoE32MainL()
   1.191 +	{
   1.192 +	RFs fileServerSession;
   1.193 +	CleanupClosePushL(fileServerSession);
   1.194 +	User::LeaveIfError(fileServerSession.Connect());
   1.195 +	CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
   1.196 +	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
   1.197 +	INFO_PRINTF1(_L("Available:\n"));
   1.198 +	for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
   1.199 +		{
   1.200 +		const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
   1.201 +		characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
   1.202 +		TPtrC charactersSetName(charactersSet.Name());
   1.203 +		if (charactersSet.NameIsFileName())
   1.204 +			{
   1.205 +			charactersSetName.Set(TParsePtrC(charactersSetName).Name());
   1.206 +			}
   1.207 +		INFO_PRINTF2(_L("    %S\n"), &charactersSetName);
   1.208 +		}
   1.209 +	TPtrC8 originalGbk;
   1.210 +	TBuf16<KBufferLength> originalUnicode;
   1.211 +	TBuf8<KBufferLength> generatedGbk;
   1.212 +	TBuf16<KBufferLength> generatedUnicode;
   1.213 +	TInt state=CCnvCharacterSetConverter::KStateDefault;
   1.214 +
   1.215 +	// test that we can get MIB and Charset values
   1.216 +	CharacterSetValueAndMIBTests(*characterSetConverter, fileServerSession);
   1.217 +
   1.218 +	characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, *arrayOfCharacterSetsAvailable, fileServerSession);
   1.219 +
   1.220 +	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0514 Testing characters shared with GB 2312-80 and characters only in GBK "));
   1.221 +	originalGbk.Set(_L8("A\xfd\x7d\xdd\xb6\xb1\xc9\xe9\x8e\xe8\x9d""E b\xd3\x59\xd2\x40\x95\xc0"));
   1.222 +	originalUnicode.Format(_L16("A%c%c%c%c%cE b%c%c%c"), 0x9f77, 0x837b, 0x9119, 0x95b9, 0x94e6, 0x89bb, 0x8938, 0x66b2);
   1.223 +	TestTruncatedConversionFromUnicodeToGbk(*characterSetConverter, originalUnicode);
   1.224 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 0, 0, 12, 0, originalGbk, originalUnicode);
   1.225 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 1, 2, 11, 1, originalGbk, originalUnicode);
   1.226 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 3, 4, 10, 3, originalGbk, originalUnicode);
   1.227 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 5, 6, 9, 5, originalGbk, originalUnicode);
   1.228 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 7, 8, 8, 7, originalGbk, originalUnicode);
   1.229 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 9, 10, 7, 9, originalGbk, originalUnicode);
   1.230 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 11, 11, 6, 11, originalGbk, originalUnicode);
   1.231 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 12, 12, 5, 12, originalGbk, originalUnicode);
   1.232 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 13, 13, 4, 13, originalGbk, originalUnicode);
   1.233 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 14, 15, 3, 14, originalGbk, originalUnicode);
   1.234 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 16, 17, 2, 16, originalGbk, originalUnicode);
   1.235 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 18, 19, 1, 18, originalGbk, originalUnicode);
   1.236 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 20, 40, 0, 20, originalGbk, originalUnicode);
   1.237 +	TestTruncatedConversionToUnicodeFromGbk(*characterSetConverter, originalUnicode, originalGbk);
   1.238 +	TestTruncatedConversionToUnicodeFromGbk(*characterSetConverter, originalUnicode.Mid(1, 2), originalGbk.Mid(1, 4));
   1.239 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 0, 0, 20, 0, originalUnicode, originalGbk);
   1.240 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 1, 1, 19, 1, originalUnicode, originalGbk);
   1.241 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 2, 2, 17, 2, originalUnicode, originalGbk);
   1.242 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 3, 3, 15, 3, originalUnicode, originalGbk);
   1.243 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 4, 4, 13, 4, originalUnicode, originalGbk);
   1.244 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 5, 5, 11, 5, originalUnicode, originalGbk);
   1.245 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 6, 6, 9, 6, originalUnicode, originalGbk);
   1.246 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 7, 7, 8, 7, originalUnicode, originalGbk);
   1.247 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 8, 8, 7, 8, originalUnicode, originalGbk);
   1.248 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 9, 9, 6, 9, originalUnicode, originalGbk);
   1.249 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 10, 10, 4, 10, originalUnicode, originalGbk);
   1.250 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 11, 11, 2, 11, originalUnicode, originalGbk);
   1.251 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 12, 30, 0, 12, originalUnicode, originalGbk);
   1.252 +
   1.253 +	INFO_PRINTF1(_L("Testing GBK characters where the first byte has the high-bit set and the second byte doesn't"));
   1.254 +	originalGbk.Set(_L8("\x20\x5d\xa0\x5d\xa0\xdd"));
   1.255 +	originalUnicode.Format(_L16(" ]%c%c"), 0x71f7, 0x72a6);
   1.256 +	TestTruncatedConversionFromUnicodeToGbk(*characterSetConverter, originalUnicode);
   1.257 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 0, 0, 4, 0, originalGbk, originalUnicode);
   1.258 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 1, 1, 3, 1, originalGbk, originalUnicode);
   1.259 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 2, 3, 2, 2, originalGbk, originalUnicode);
   1.260 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 4, 5, 1, 4, originalGbk, originalUnicode);
   1.261 +	TestSplittingConvertingFromUnicodeToGbk(*characterSetConverter, 6, 20, 0, 6, originalGbk, originalUnicode);
   1.262 +	TestTruncatedConversionToUnicodeFromGbk(*characterSetConverter, originalUnicode, originalGbk);
   1.263 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 0, 0, 6, 0, originalUnicode, originalGbk);
   1.264 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 1, 1, 5, 1, originalUnicode, originalGbk);
   1.265 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 2, 2, 4, 2, originalUnicode, originalGbk);
   1.266 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 3, 3, 2, 3, originalUnicode, originalGbk);
   1.267 +	TestSplittingConvertingToUnicodeFromGbk(*characterSetConverter, 4, 20, 0, 4, originalUnicode, originalGbk);
   1.268 +
   1.269 +	INFO_PRINTF1(_L("Testing the many-to-many mapping in GBK"));
   1.270 +	originalGbk.Set(_L8("\xa8\x44\xa1\xaa"));
   1.271 +	test(characterSetConverter->ConvertToUnicode(generatedUnicode, originalGbk, state)==0);
   1.272 +	test(state==CCnvCharacterSetConverter::KStateDefault);
   1.273 +	test(generatedUnicode.Length()==2);
   1.274 +	test(generatedUnicode[0]==0x2015);
   1.275 +	test(generatedUnicode[1]==0x2015);
   1.276 +	originalUnicode.SetLength(2);
   1.277 +	originalUnicode[0]=0x2014;
   1.278 +	originalUnicode[1]=0x2015;
   1.279 +	test(characterSetConverter->ConvertFromUnicode(generatedGbk, originalUnicode)==0);
   1.280 +	test(generatedGbk==_L8("\xa1\xaa\xa1\xaa"));
   1.281 +
   1.282 +	INFO_PRINTF1(_L("Testing truncated GBK sequences"));
   1.283 +	originalGbk.Set(_L8("qwe\xb5"));
   1.284 +	test(characterSetConverter->ConvertToUnicode(generatedUnicode, originalGbk, state)==1);
   1.285 +	test(state==CCnvCharacterSetConverter::KStateDefault);
   1.286 +	test(generatedUnicode==_L16("qwe"));
   1.287 +	originalGbk.Set(_L8("qwe\x80"));
   1.288 +	test(characterSetConverter->ConvertToUnicode(generatedUnicode, originalGbk, state)==1);
   1.289 +	test(state==CCnvCharacterSetConverter::KStateDefault);
   1.290 +	test(generatedUnicode==_L16("qwe"));
   1.291 +	CleanupStack::PopAndDestroy(3); // arrayOfCharacterSetsAvailable and characterSetConverter and fileServerSession
   1.292 +	}
   1.293 +
   1.294 +CT_GBK::CT_GBK()
   1.295 +    {
   1.296 +    SetTestStepName(KTestStep_T_GBK);
   1.297 +    }
   1.298 +
   1.299 +TVerdict CT_GBK::doTestStepL()
   1.300 +    {
   1.301 +    SetTestStepResult(EFail);
   1.302 +
   1.303 +    __UHEAP_MARK;
   1.304 +    TRAPD(error1, DoE32MainL());    
   1.305 +    __UHEAP_MARKEND;
   1.306 +
   1.307 +    if(error1 == KErrNone)
   1.308 +        {
   1.309 +        SetTestStepResult(EPass);
   1.310 +        }
   1.311 +
   1.312 +    return TestStepResult();
   1.313 +    }
   1.314 +