os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_hz.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /*
     2 * Copyright (c) 2000-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     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".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description: 
    15 *
    16 */
    17 
    18 
    19 #include <e32std.h>
    20 #include <e32base.h>
    21 #include <f32file.h>
    22 #include <charconv.h>
    23 #include "t_hz.h"
    24 
    25 #define test(cond)                                  \
    26     {                                               \
    27     TBool __bb = (cond);                            \
    28     TEST(__bb);                                     \
    29     if (!__bb)                                      \
    30         {                                           \
    31         ERR_PRINTF1(_L("ERROR: Test Failed"));      \
    32         User::Leave(1);                             \
    33         }                                           \
    34     }
    35 
    36 const TInt KBufferLength=100;
    37 /**
    38 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0503
    39 @SYMTestCaseDesc        Tests for truncated conversion from Unicode to HZ character set
    40 @SYMTestPriority        Medium
    41 @SYMTestActions         Tests for generated Unicode with the original Unicode
    42 @SYMTestExpectedResults Test must not fail
    43 @SYMREQ                 REQ0000
    44 */
    45 void CT_HZ::TestTruncatedConversionFromUnicodeToHz(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode)
    46 	{
    47 	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0503 "));
    48 	for (TInt i=aOriginalUnicode.Length(); i>=0; --i)
    49 		{
    50 		TBuf8<KBufferLength> generatedHz;
    51 		const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedHz, aOriginalUnicode.Left(i));
    52 		test(returnValue>=0);
    53 		TBuf8<KBufferLength> generatedsecondPartOfHz;
    54 		test(aCharacterSetConverter.ConvertFromUnicode(generatedsecondPartOfHz, aOriginalUnicode.Mid(i-returnValue))==0);
    55 		generatedHz.Append(generatedsecondPartOfHz);
    56 		TInt state=CCnvCharacterSetConverter::KStateDefault;
    57 		TBuf16<KBufferLength> generatedUnicode;
    58 		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedHz, state)==0);
    59 		test(generatedUnicode==aOriginalUnicode);
    60 		}
    61 	}
    62 /**
    63 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0504
    64 @SYMTestCaseDesc        Splitting and converting from Unicode to HZ test
    65 @SYMTestPriority        Medium
    66 @SYMTestActions         Tests for conversion after splitting from Unicode to Hz and back to Unicode
    67 @SYMTestExpectedResults Test must not fail
    68 @SYMREQ                 REQ0000
    69 */
    70 void CT_HZ::TestSplittingConvertingFromUnicodeToHz(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit, const TDesC8& aExpectedFirstPartOfHz, const TDesC8& aExpectedSecondPartOfHz, const TDesC16& aOriginalUnicode)
    71 	{
    72 	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0504 "));
    73 	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
    74 	test(aMaximumLengthUpperLimit<=KBufferLength);
    75 	TUint8 hzBuffer[KBufferLength];
    76 	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
    77 		{
    78 		TPtr8 generatedFirstPartOfHz(hzBuffer, i);
    79 		test(aCharacterSetConverter.ConvertFromUnicode(generatedFirstPartOfHz, aOriginalUnicode)==aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit);
    80 		test(generatedFirstPartOfHz==aExpectedFirstPartOfHz);
    81 		TBuf8<KBufferLength> generatedSecondPartOfHz;
    82 		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfHz, aOriginalUnicode.Right(aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit))==0);
    83 		test(generatedSecondPartOfHz==aExpectedSecondPartOfHz);
    84 		TInt state=CCnvCharacterSetConverter::KStateDefault;
    85 		TBuf16<KBufferLength> generatedUnicode;
    86 		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedFirstPartOfHz, state)==0);
    87 		test(state==CCnvCharacterSetConverter::KStateDefault);
    88 		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
    89 		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, generatedSecondPartOfHz, state)==0);
    90 		test(state==CCnvCharacterSetConverter::KStateDefault);
    91 		generatedUnicode.Append(generatedSecondPartOfUnicode);
    92 		test(generatedUnicode==aOriginalUnicode);
    93 		}
    94 	}
    95 /**
    96 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0505
    97 @SYMTestCaseDesc        Tests for truncated conversion from HZ to Unicode
    98 @SYMTestPriority        Medium
    99 @SYMTestActions         Tests for conversion after truncation from HZ to Unicode and back to HZ
   100 @SYMTestExpectedResults Test must not fail
   101 @SYMREQ                 REQ0000
   102 */
   103 void CT_HZ::TestTruncatedConversionToUnicodeFromHz(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalHz)
   104 	{
   105 	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0505 "));
   106 	for (TInt i=aOriginalHz.Length(); i>=2; --i) // 2 is the length of HZ's "tilde" sequences
   107 		{
   108 		TInt state=CCnvCharacterSetConverter::KStateDefault;
   109 		TBuf16<KBufferLength> generatedUnicode;
   110 		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalHz.Left(i), state);
   111 		test(returnValue>=0);
   112 		TBuf16<KBufferLength> generatedsecondPartOfUnicode;
   113 		test(aCharacterSetConverter.ConvertToUnicode(generatedsecondPartOfUnicode, aOriginalHz.Mid(i-returnValue), state)==0);
   114 		generatedUnicode.Append(generatedsecondPartOfUnicode);
   115 		test(generatedUnicode==aExpectedUnicode);
   116 		}
   117 	}
   118 /**
   119 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0506
   120 @SYMTestCaseDesc        Splitting and converting to Unicode from HZ test
   121 @SYMTestPriority        Medium
   122 @SYMTestActions         Tests for conversion after splitting from Hz to Unicode and back to Hz
   123 @SYMTestExpectedResults Test must not fail
   124 @SYMREQ                 REQ0000
   125 */
   126 void CT_HZ::TestSplittingConvertingToUnicodeFromHz(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfHzBytesNotConvertedAtSplit, TInt aExpectedStateAtSplit, TInt aExpectedLengthOfFirstPartOfUnicode, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalHz)
   127 	{
   128 	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0506 "));
   129 	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
   130 	test(aMaximumLengthUpperLimit<=KBufferLength);
   131 	TUint16 unicodeBuffer[KBufferLength];
   132 	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
   133 		{
   134 		TPtr16 generatedFirstPartOfUnicode(unicodeBuffer, i);
   135 		TInt state=CCnvCharacterSetConverter::KStateDefault;
   136 		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedFirstPartOfUnicode, aOriginalHz, state);
   137 		test(generatedFirstPartOfUnicode==aExpectedUnicode.Left(aExpectedLengthOfFirstPartOfUnicode));
   138 		test((returnValue==aExpectedNumberOfHzBytesNotConvertedAtSplit) && (state==aExpectedStateAtSplit));
   139 		{
   140 		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
   141 		state=aExpectedStateAtSplit;
   142 		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, aOriginalHz.Right(aExpectedNumberOfHzBytesNotConvertedAtSplit), state)==0);
   143 		test(generatedSecondPartOfUnicode==aExpectedUnicode.Mid(aExpectedLengthOfFirstPartOfUnicode));
   144 		test(state==CCnvCharacterSetConverter::KStateDefault);
   145 		TBuf8<KBufferLength> generatedHz;
   146 		test(aCharacterSetConverter.ConvertFromUnicode(generatedHz, generatedFirstPartOfUnicode)==0);
   147 		TBuf8<KBufferLength> generatedSecondPartOfHz;
   148 		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfHz, generatedSecondPartOfUnicode)==0);
   149 		generatedHz.Append(generatedSecondPartOfHz);
   150 		TBuf16<KBufferLength> regeneratedUnicode;
   151 		state=CCnvCharacterSetConverter::KStateDefault;
   152 		test(aCharacterSetConverter.ConvertToUnicode(regeneratedUnicode, generatedHz, state)==0);
   153 		test(regeneratedUnicode==aExpectedUnicode);
   154 		test(state==CCnvCharacterSetConverter::KStateDefault);
   155 		test(aCharacterSetConverter.ConvertToUnicode(regeneratedUnicode, aOriginalHz, state)==0);
   156 		test(regeneratedUnicode==aExpectedUnicode);
   157 		test(state==CCnvCharacterSetConverter::KStateDefault);
   158 		}
   159 		{
   160 		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
   161 		state=aExpectedStateAtSplit;
   162 		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, aOriginalHz.Right(aExpectedNumberOfHzBytesNotConvertedAtSplit), state)==0);
   163 		test(generatedSecondPartOfUnicode==aExpectedUnicode.Mid(aExpectedLengthOfFirstPartOfUnicode));
   164 		test(state==CCnvCharacterSetConverter::KStateDefault);
   165 		TBuf8<KBufferLength> generatedHz;
   166 		test(aCharacterSetConverter.ConvertFromUnicode(generatedHz, generatedFirstPartOfUnicode)==0);
   167 		TBuf8<KBufferLength> generatedSecondPartOfHz;
   168 		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfHz, generatedSecondPartOfUnicode)==0);
   169 		generatedHz.Append(generatedSecondPartOfHz);
   170 		TBuf16<KBufferLength> regeneratedUnicode;
   171 		state=CCnvCharacterSetConverter::KStateDefault;
   172 		test(aCharacterSetConverter.ConvertToUnicode(regeneratedUnicode, generatedHz, state)==0);
   173 		test(regeneratedUnicode==aExpectedUnicode);
   174 		test(state==CCnvCharacterSetConverter::KStateDefault);
   175 		test(aCharacterSetConverter.ConvertToUnicode(regeneratedUnicode, aOriginalHz, state)==0);
   176 		test(regeneratedUnicode==aExpectedUnicode);
   177 		test(state==CCnvCharacterSetConverter::KStateDefault);
   178 		}
   179 		}
   180 	}
   181 /**
   182 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0507
   183 @SYMTestCaseDesc        Conversion of bad HZ format to Unicode test
   184 @SYMTestPriority        Medium
   185 @SYMTestActions         Tests to convert bad Hz format to Unicode.
   186                         Check the status of CCnvCharacterSetConverter::EErrorIllFormedInput error flag
   187 @SYMTestExpectedResults Test must not fail
   188 @SYMREQ                 REQ0000
   189 */
   190 void CT_HZ::TestIsIllFormedHz(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC8& aHz)
   191 	{
   192 	INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0507 "));
   193 	TBuf16<50> generatedUnicode;
   194 	TInt state=CCnvCharacterSetConverter::KStateDefault;
   195 	TPtrC8 remainderOfHz(aHz);
   196 	TInt lastReturnValue=KMaxTInt;
   197 	FOREVER
   198 		{
   199 		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, remainderOfHz, state);
   200 		if (returnValue==CCnvCharacterSetConverter::EErrorIllFormedInput)
   201 			{
   202 			break;
   203 			}
   204 		test(returnValue>0);
   205 		test(returnValue<lastReturnValue);
   206 		lastReturnValue=returnValue;
   207 		remainderOfHz.Set(remainderOfHz.Right(returnValue));
   208 		}
   209 	}
   210 /**
   211 @SYMTestCaseID          SYSLIB-CHARCONV-CT-0508
   212 @SYMTestCaseDesc        HZ to Unicode and Unicode to HZ conversion tests
   213 @SYMTestPriority        Medium
   214 @SYMTestActions         Wrapper function to call HZ conversion test functions
   215 @SYMTestExpectedResults Test must not fail
   216 @SYMREQ                 REQ0000
   217 */
   218 void CT_HZ::DoE32MainL()
   219 	{
   220     INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0508 "));
   221 	RFs fileServerSession;
   222 	CleanupClosePushL(fileServerSession);
   223 	User::LeaveIfError(fileServerSession.Connect());
   224 	CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
   225 	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
   226 	INFO_PRINTF1(_L("Available:\n"));
   227 	for (TInt i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
   228 		{
   229 		const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
   230 		characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
   231 		TPtrC charactersSetName(charactersSet.Name());
   232 		if (charactersSet.NameIsFileName())
   233 			{
   234 			charactersSetName.Set(TParsePtrC(charactersSetName).Name());
   235 			}
   236 		INFO_PRINTF2(_L("    %S\n"), &charactersSetName);
   237 		}
   238 	INFO_PRINTF1(_L("Testing HZ conversions"));
   239 	characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierHz, *arrayOfCharacterSetsAvailable, fileServerSession);
   240 	//
   241 	INFO_PRINTF1(_L("Empty descriptor"));
   242 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 0, 10, 0, KNullDesC8, KNullDesC8, KNullDesC16);
   243 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 0, 10, 0, CCnvCharacterSetConverter::KStateDefault, 0, KNullDesC16, KNullDesC8);
   244 	INFO_PRINTF1(_L("Testing converting to HZ"));
   245 	TBuf16<50> originalUnicode;
   246 	originalUnicode.Format(_L16("%c%cxyz%c%c~%c~~%ce~a%c"), 0x4e2d, 0x56fd, 0x5979, 0x4ed6, 0x4eba, 0x4e09, 0x7259);
   247 	TestTruncatedConversionFromUnicodeToHz(*characterSetConverter, originalUnicode);
   248 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 0, 5, 16, KNullDesC8, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   249 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 6, 7, 15, _L8("~{VP~}"), _L8("~{9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   250 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 8, 8, 14, _L8("~{VP9z~}"), _L8("xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   251 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 9, 9, 13, _L8("~{VP9z~}x"), _L8("yz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   252 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 10, 10, 12, _L8("~{VP9z~}xy"), _L8("z~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   253 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 11, 16, 11, _L8("~{VP9z~}xyz"), _L8("~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   254 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 17, 18, 10, _L8("~{VP9z~}xyz~{K}~}"), _L8("~{K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   255 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 19, 20, 9, _L8("~{VP9z~}xyz~{K}K{~}"), _L8("~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   256 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 21, 26, 8, _L8("~{VP9z~}xyz~{K}K{~}~~"), _L8("~{HK~}~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   257 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 27, 28, 7, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}"), _L8("~~~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   258 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 29, 30, 6, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~"), _L8("~~~{H}~}e~~a~{Q@~}"), originalUnicode);
   259 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 31, 36, 5, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~"), _L8("~{H}~}e~~a~{Q@~}"), originalUnicode);
   260 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 37, 37, 4, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}"), _L8("e~~a~{Q@~}"), originalUnicode);
   261 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 38, 39, 3, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e"), _L8("~~a~{Q@~}"), originalUnicode);
   262 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 40, 40, 2, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~"), _L8("a~{Q@~}"), originalUnicode);
   263 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 41, 46, 1, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a"), _L8("~{Q@~}"), originalUnicode);
   264 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 47, 50, 0, _L8("~{VP9z~}xyz~{K}K{~}~~~{HK~}~~~~~{H}~}e~~a~{Q@~}"), KNullDesC8, originalUnicode);
   265 	INFO_PRINTF1(_L("Testing converting to Unicode"));
   266 	const TPtrC8 originalHz(_S8("My name is ~{3W~} ~~~~{~~I ~{'X'Z'S'e~} in ~{11>)~}~~~~}~~~~"));
   267 	TBuf16<50> expectedUnicode;
   268 	expectedUnicode.Format(_L16("My name is %c ~~{~I %c%c%c%c in %c%c~~}~~"), 0x5319, 0x0436, 0x0438, 0x0432, 0x0443, 0x5317, 0x4eac);
   269 	TestTruncatedConversionToUnicodeFromHz(*characterSetConverter, expectedUnicode, originalHz);
   270 	TestTruncatedConversionToUnicodeFromHz(*characterSetConverter, _L16("Hello"), _L8("~{~}~{~}~{~}Hello"));
   271 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 0, 0, 60, CCnvCharacterSetConverter::KStateDefault, 0, expectedUnicode, originalHz);
   272 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 1, 1, 59, CCnvCharacterSetConverter::KStateDefault, 1, expectedUnicode, originalHz);
   273 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 2, 2, 58, CCnvCharacterSetConverter::KStateDefault, 2, expectedUnicode, originalHz);
   274 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 3, 3, 57, CCnvCharacterSetConverter::KStateDefault, 3, expectedUnicode, originalHz);
   275 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 4, 4, 56, CCnvCharacterSetConverter::KStateDefault, 4, expectedUnicode, originalHz);
   276 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 5, 5, 55, CCnvCharacterSetConverter::KStateDefault, 5, expectedUnicode, originalHz);
   277 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 6, 6, 54, CCnvCharacterSetConverter::KStateDefault, 6, expectedUnicode, originalHz);
   278 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 7, 7, 53, CCnvCharacterSetConverter::KStateDefault, 7, expectedUnicode, originalHz);
   279 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 8, 8, 52, CCnvCharacterSetConverter::KStateDefault, 8, expectedUnicode, originalHz);
   280 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 9, 9, 51, CCnvCharacterSetConverter::KStateDefault, 9, expectedUnicode, originalHz);
   281 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 10, 10, 50, CCnvCharacterSetConverter::KStateDefault, 10, expectedUnicode, originalHz);
   282 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 11, 11, 47, CCnvCharacterSetConverter::KStateDefault+1, 11, expectedUnicode, originalHz);
   283 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 12, 12, 43, CCnvCharacterSetConverter::KStateDefault, 12, expectedUnicode, originalHz);
   284 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 13, 13, 42, CCnvCharacterSetConverter::KStateDefault, 13, expectedUnicode, originalHz);
   285 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 14, 14, 40, CCnvCharacterSetConverter::KStateDefault, 14, expectedUnicode, originalHz);
   286 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 15, 15, 38, CCnvCharacterSetConverter::KStateDefault, 15, expectedUnicode, originalHz);
   287 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 16, 16, 37, CCnvCharacterSetConverter::KStateDefault, 16, expectedUnicode, originalHz);
   288 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 17, 17, 35, CCnvCharacterSetConverter::KStateDefault, 17, expectedUnicode, originalHz);
   289 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 18, 18, 34, CCnvCharacterSetConverter::KStateDefault, 18, expectedUnicode, originalHz);
   290 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 19, 19, 31, CCnvCharacterSetConverter::KStateDefault+1, 19, expectedUnicode, originalHz);
   291 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 20, 20, 29, CCnvCharacterSetConverter::KStateDefault+1, 20, expectedUnicode, originalHz);
   292 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 21, 21, 27, CCnvCharacterSetConverter::KStateDefault+1, 21, expectedUnicode, originalHz);
   293 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 22, 22, 25, CCnvCharacterSetConverter::KStateDefault+1, 22, expectedUnicode, originalHz);
   294 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 23, 23, 21, CCnvCharacterSetConverter::KStateDefault, 23, expectedUnicode, originalHz);
   295 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 24, 24, 20, CCnvCharacterSetConverter::KStateDefault, 24, expectedUnicode, originalHz);
   296 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 25, 25, 19, CCnvCharacterSetConverter::KStateDefault, 25, expectedUnicode, originalHz);
   297 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 26, 26, 18, CCnvCharacterSetConverter::KStateDefault, 26, expectedUnicode, originalHz);
   298 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 27, 27, 15, CCnvCharacterSetConverter::KStateDefault+1, 27, expectedUnicode, originalHz);
   299 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 28, 28, 13, CCnvCharacterSetConverter::KStateDefault+1, 28, expectedUnicode, originalHz);
   300 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 29, 29, 9, CCnvCharacterSetConverter::KStateDefault, 29, expectedUnicode, originalHz);
   301 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 30, 30, 7, CCnvCharacterSetConverter::KStateDefault, 30, expectedUnicode, originalHz);
   302 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 31, 31, 5, CCnvCharacterSetConverter::KStateDefault, 31, expectedUnicode, originalHz);
   303 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 32, 32, 4, CCnvCharacterSetConverter::KStateDefault, 32, expectedUnicode, originalHz);
   304 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 33, 33, 2, CCnvCharacterSetConverter::KStateDefault, 33, expectedUnicode, originalHz);
   305 	TestSplittingConvertingToUnicodeFromHz(*characterSetConverter, 34, 40, 0, CCnvCharacterSetConverter::KStateDefault, 34, expectedUnicode, originalHz);
   306 	INFO_PRINTF1(_L("Having '~' as the second byte of a Chinese character"));
   307 	originalUnicode.Format(_L16("1%c2"), 0x4e8c);
   308 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 0, 0, 3, KNullDesC8, _L8("1~{6~~}2"), originalUnicode);
   309 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 1, 6, 2, _L8("1"), _L8("~{6~~}2"), originalUnicode);
   310 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 7, 7, 1, _L8("1~{6~~}"), _L8("2"), originalUnicode);
   311 	TestSplittingConvertingFromUnicodeToHz(*characterSetConverter, 8, 20, 0, _L8("1~{6~~}2"), KNullDesC8, originalUnicode);
   312 	INFO_PRINTF1(_L("Testing ill-formed HZ"));
   313 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{C~} def"));
   314 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{C;C~} def"));
   315 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{C;C;C~} def"));
   316 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~"));
   317 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{~"));
   318 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{C"));
   319 	// note that...................................._L8("abc ~{C~") is actually well-formed
   320 	TestIsIllFormedHz(*characterSetConverter, _L8("abc ~{C;~"));
   321 	CleanupStack::PopAndDestroy(3); // arrayOfCharacterSetsAvailable and characterSetConverter and fileServerSession
   322 	}
   323 
   324 CT_HZ::CT_HZ()
   325     {
   326     SetTestStepName(KTestStep_T_HZ);
   327     }
   328 
   329 TVerdict CT_HZ::doTestStepL()
   330     {
   331     SetTestStepResult(EFail);
   332 
   333     __UHEAP_MARK;
   334     TRAPD(error1, DoE32MainL());    
   335     __UHEAP_MARKEND;
   336 
   337     if(error1 == KErrNone)
   338         {
   339         SetTestStepResult(EPass);
   340         }
   341 
   342     return TestStepResult();
   343     }
   344 
   345