os/textandloc/charconvfw/charconvplugins/test/rtest/tsrc/main/t_eucjpdirectmap.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2000-2010 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
#include <e32std.h>
sl@0
    19
#include <e32base.h>
sl@0
    20
#include <f32file.h>
sl@0
    21
#include <charconv.h>
sl@0
    22
#include "t_eucjpdirectmap.h"
sl@0
    23
sl@0
    24
#define test(cond)                                  \
sl@0
    25
    {                                               \
sl@0
    26
    TBool __bb = (cond);                            \
sl@0
    27
    TEST(__bb);                                     \
sl@0
    28
    if (!__bb)                                      \
sl@0
    29
        {                                           \
sl@0
    30
        ERR_PRINTF1(_L("ERROR: Test Failed"));      \
sl@0
    31
        User::Leave(1);                             \
sl@0
    32
        }                                           \
sl@0
    33
    }
sl@0
    34
sl@0
    35
const TInt KBufferLength=100;
sl@0
    36
sl@0
    37
void CT_EUCJPDIRECTMAP::TestTruncatedConversionFromUnicodeToEucJpDirectmap(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aOriginalUnicode)
sl@0
    38
	{
sl@0
    39
	for (TInt i=aOriginalUnicode.Length(); i>=0; --i)
sl@0
    40
		{
sl@0
    41
		TBuf8<KBufferLength> generatedEucJpDirectmap;
sl@0
    42
		const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(generatedEucJpDirectmap, aOriginalUnicode.Left(i));
sl@0
    43
		test(returnValue>=0);
sl@0
    44
		TBuf8<KBufferLength> generatedsecondPartOfEucJpDirectmap;
sl@0
    45
		test(aCharacterSetConverter.ConvertFromUnicode(generatedsecondPartOfEucJpDirectmap, aOriginalUnicode.Mid(i-returnValue))==0);
sl@0
    46
		generatedEucJpDirectmap.Append(generatedsecondPartOfEucJpDirectmap);
sl@0
    47
		TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
    48
		TBuf16<KBufferLength> generatedUnicode;
sl@0
    49
		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedEucJpDirectmap, state)==0);
sl@0
    50
		test(generatedUnicode==aOriginalUnicode);
sl@0
    51
		}
sl@0
    52
	}
sl@0
    53
sl@0
    54
void CT_EUCJPDIRECTMAP::TestSplittingConvertingFromUnicodeToEucJpDirectmap(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit, TInt aExpectedLengthOfFirstPartOfEucJpDirectmap, const TDesC8& aExpectedEucJpDirectmap, const TDesC16& aOriginalUnicode)
sl@0
    55
	{
sl@0
    56
	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
sl@0
    57
	test(aMaximumLengthUpperLimit<=KBufferLength);
sl@0
    58
	TUint8 eucJpDirectmapBuffer[KBufferLength];
sl@0
    59
	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
sl@0
    60
		{
sl@0
    61
		TPtr8 generatedFirstPartOfEucJpDirectmap(eucJpDirectmapBuffer, i);
sl@0
    62
		test(aCharacterSetConverter.ConvertFromUnicode(generatedFirstPartOfEucJpDirectmap, aOriginalUnicode)==aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit);
sl@0
    63
		test(generatedFirstPartOfEucJpDirectmap==aExpectedEucJpDirectmap.Left(aExpectedLengthOfFirstPartOfEucJpDirectmap));
sl@0
    64
		TBuf8<KBufferLength> generatedSecondPartOfEucJpDirectmap;
sl@0
    65
		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfEucJpDirectmap, aOriginalUnicode.Right(aExpectedNumberOfUnicodeCharactersNotConvertedAtSplit))==0);
sl@0
    66
		test(generatedSecondPartOfEucJpDirectmap==aExpectedEucJpDirectmap.Mid(aExpectedLengthOfFirstPartOfEucJpDirectmap));
sl@0
    67
		TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
    68
		TBuf16<KBufferLength> generatedUnicode;
sl@0
    69
		test(aCharacterSetConverter.ConvertToUnicode(generatedUnicode, generatedFirstPartOfEucJpDirectmap, state)==0);
sl@0
    70
		test(state==CCnvCharacterSetConverter::KStateDefault);
sl@0
    71
		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
sl@0
    72
		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, generatedSecondPartOfEucJpDirectmap, state)==0);
sl@0
    73
		test(state==CCnvCharacterSetConverter::KStateDefault);
sl@0
    74
		generatedUnicode.Append(generatedSecondPartOfUnicode);
sl@0
    75
		test(generatedUnicode==aOriginalUnicode);
sl@0
    76
		}
sl@0
    77
	}
sl@0
    78
sl@0
    79
void CT_EUCJPDIRECTMAP::TestTruncatedConversionToUnicodeFromEucJpDirectmap(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalEucJpDirectmap)
sl@0
    80
	{
sl@0
    81
	for (TInt i=aOriginalEucJpDirectmap.Length(); i>=3; --i) 
sl@0
    82
		{
sl@0
    83
		TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
    84
		TBuf16<KBufferLength> generatedUnicode;
sl@0
    85
		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, aOriginalEucJpDirectmap.Left(i), state);
sl@0
    86
		test(returnValue>=0);
sl@0
    87
		TBuf16<KBufferLength> generatedsecondPartOfUnicode;
sl@0
    88
		test(aCharacterSetConverter.ConvertToUnicode(generatedsecondPartOfUnicode, aOriginalEucJpDirectmap.Mid(i-returnValue), state)==0);
sl@0
    89
		generatedUnicode.Append(generatedsecondPartOfUnicode);
sl@0
    90
		test(generatedUnicode==aExpectedUnicode);
sl@0
    91
		}
sl@0
    92
	}
sl@0
    93
sl@0
    94
void CT_EUCJPDIRECTMAP::TestSplittingConvertingToUnicodeFromEucJpDirectmap(CCnvCharacterSetConverter& aCharacterSetConverter, TInt aMaximumLengthLowerLimit, TInt aMaximumLengthUpperLimit, TInt aExpectedNumberOfEucJpDirectmapBytesNotConvertedAtSplit, TInt aExpectedLengthOfFirstPartOfUnicode, const TDesC16& aExpectedUnicode, const TDesC8& aOriginalEucJpDirectmap)
sl@0
    95
	{
sl@0
    96
	test(aMaximumLengthLowerLimit<=aMaximumLengthUpperLimit);
sl@0
    97
	test(aMaximumLengthUpperLimit<=KBufferLength);
sl@0
    98
	TUint16 unicodeBuffer[KBufferLength];
sl@0
    99
	for (TInt i=aMaximumLengthLowerLimit; i<=aMaximumLengthUpperLimit; ++i)
sl@0
   100
		{
sl@0
   101
		TPtr16 generatedFirstPartOfUnicode(unicodeBuffer, i);
sl@0
   102
		TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
   103
		test(aCharacterSetConverter.ConvertToUnicode(generatedFirstPartOfUnicode, aOriginalEucJpDirectmap, state)==aExpectedNumberOfEucJpDirectmapBytesNotConvertedAtSplit);
sl@0
   104
		test(generatedFirstPartOfUnicode==aExpectedUnicode.Left(aExpectedLengthOfFirstPartOfUnicode));
sl@0
   105
		test(state==CCnvCharacterSetConverter::KStateDefault);
sl@0
   106
		TBuf16<KBufferLength> generatedSecondPartOfUnicode;
sl@0
   107
		test(aCharacterSetConverter.ConvertToUnicode(generatedSecondPartOfUnicode, aOriginalEucJpDirectmap.Right(aExpectedNumberOfEucJpDirectmapBytesNotConvertedAtSplit), state)==0);
sl@0
   108
		test(generatedSecondPartOfUnicode==aExpectedUnicode.Mid(aExpectedLengthOfFirstPartOfUnicode));
sl@0
   109
		test(state==CCnvCharacterSetConverter::KStateDefault);
sl@0
   110
		TBuf8<KBufferLength> generatedEucJpDirectmap;
sl@0
   111
		test(aCharacterSetConverter.ConvertFromUnicode(generatedEucJpDirectmap, generatedFirstPartOfUnicode)==0);
sl@0
   112
		TBuf8<KBufferLength> generatedSecondPartOfEucJpDirectmap;
sl@0
   113
		test(aCharacterSetConverter.ConvertFromUnicode(generatedSecondPartOfEucJpDirectmap, generatedSecondPartOfUnicode)==0);
sl@0
   114
		generatedEucJpDirectmap.Append(generatedSecondPartOfEucJpDirectmap);
sl@0
   115
		test(generatedEucJpDirectmap==aOriginalEucJpDirectmap);
sl@0
   116
		}
sl@0
   117
	}
sl@0
   118
sl@0
   119
void CT_EUCJPDIRECTMAP::TestIsIllFormedEucJpDirectmap(CCnvCharacterSetConverter& aCharacterSetConverter, const TDesC8& aEucJpDirectmap)
sl@0
   120
	{
sl@0
   121
	TBuf16<50> generatedUnicode;
sl@0
   122
	TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
   123
	TPtrC8 remainderOfEucJpDirectmap(aEucJpDirectmap);
sl@0
   124
	TInt lastReturnValue=KMaxTInt;
sl@0
   125
	FOREVER
sl@0
   126
		{
sl@0
   127
		const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(generatedUnicode, remainderOfEucJpDirectmap, state);
sl@0
   128
		if (returnValue==CCnvCharacterSetConverter::EErrorIllFormedInput)
sl@0
   129
			{
sl@0
   130
			break;
sl@0
   131
			}
sl@0
   132
		test(returnValue>0);
sl@0
   133
		test(returnValue<lastReturnValue);
sl@0
   134
		lastReturnValue=returnValue;
sl@0
   135
		remainderOfEucJpDirectmap.Set(remainderOfEucJpDirectmap.Right(returnValue));
sl@0
   136
		}
sl@0
   137
	}
sl@0
   138
sl@0
   139
void CT_EUCJPDIRECTMAP::DoE32MainL()
sl@0
   140
	{
sl@0
   141
	RFs fileServerSession;
sl@0
   142
	CleanupClosePushL(fileServerSession);
sl@0
   143
	User::LeaveIfError(fileServerSession.Connect());
sl@0
   144
	CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
sl@0
   145
	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable=CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
sl@0
   146
	INFO_PRINTF1(_L("Available:\n"));
sl@0
   147
	TInt i;
sl@0
   148
	for (i=arrayOfCharacterSetsAvailable->Count()-1; i>=0; --i)
sl@0
   149
		{
sl@0
   150
		const CCnvCharacterSetConverter::SCharacterSet& charactersSet=(*arrayOfCharacterSetsAvailable)[i];
sl@0
   151
		characterSetConverter->PrepareToConvertToOrFromL(charactersSet.Identifier(), *arrayOfCharacterSetsAvailable, fileServerSession);
sl@0
   152
		TPtrC charactersSetName(charactersSet.Name());
sl@0
   153
		if (charactersSet.NameIsFileName())
sl@0
   154
			{
sl@0
   155
			charactersSetName.Set(TParsePtrC(charactersSetName).Name());
sl@0
   156
			}
sl@0
   157
		INFO_PRINTF2(_L("    %S\n"), &charactersSetName);
sl@0
   158
		}
sl@0
   159
	INFO_PRINTF1(_L("Testing EUC-JP (DirectMap) conversions "));
sl@0
   160
	characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierEucJpDirectmap, *arrayOfCharacterSetsAvailable, fileServerSession);
sl@0
   161
	//
sl@0
   162
	INFO_PRINTF1(_L("Empty descriptor"));
sl@0
   163
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 0, 10, 0, 0, KNullDesC8, KNullDesC16);
sl@0
   164
	TestSplittingConvertingToUnicodeFromEucJpDirectmap(*characterSetConverter, 0, 10, 0, 0, KNullDesC16, KNullDesC8);
sl@0
   165
	INFO_PRINTF1(_L("Testing converting to EUC-JP (DirectMap)"));
sl@0
   166
	TBuf16<50> originalUnicode;
sl@0
   167
	originalUnicode.Format(_L16("Some %c%c%c%c%c%c"), 0xff9a, 0xff70, 0x6f22, 0x5b57, 0x5379, 0x5dce);
sl@0
   168
	const TPtrC8 expectedEucJpDirectmap(_S8("Some \x8e\xda\x8e\xb0\xb4\xc1\xbb\xfa\x8f\xb4\xc1\x8f\xbb\xfa"));
sl@0
   169
	TestTruncatedConversionFromUnicodeToEucJpDirectmap(*characterSetConverter, originalUnicode);
sl@0
   170
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 0, 0, 11, 0, expectedEucJpDirectmap, originalUnicode);
sl@0
   171
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 1, 1, 10, 1, expectedEucJpDirectmap, originalUnicode);
sl@0
   172
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 2, 2, 9, 2, expectedEucJpDirectmap, originalUnicode);
sl@0
   173
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 3, 3, 8, 3, expectedEucJpDirectmap, originalUnicode);
sl@0
   174
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 4, 4, 7, 4, expectedEucJpDirectmap, originalUnicode);
sl@0
   175
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 5, 6, 6, 5, expectedEucJpDirectmap, originalUnicode);
sl@0
   176
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 7, 8, 5, 7, expectedEucJpDirectmap, originalUnicode);
sl@0
   177
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 9, 10, 4, 9, expectedEucJpDirectmap, originalUnicode);
sl@0
   178
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 11, 12, 3, 11, expectedEucJpDirectmap, originalUnicode);
sl@0
   179
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 13, 15, 2, 13, expectedEucJpDirectmap, originalUnicode);
sl@0
   180
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 16, 18, 1, 16, expectedEucJpDirectmap, originalUnicode);
sl@0
   181
	TestSplittingConvertingFromUnicodeToEucJpDirectmap(*characterSetConverter, 19, 30, 0, 19, expectedEucJpDirectmap, originalUnicode);
sl@0
   182
	INFO_PRINTF1(_L("Testing converting to Unicode"));
sl@0
   183
	const TPtrC8 originalEucJpDirectmap(_S8("pool\xbe\xae\xc3\xd3\x8e\xcc\x8e\xdf\x8e\xd9\x8f\xc0\xcd\x8f\xc8\xc5pool\x8e\xcc\x8e\xdf\x8e\xd9\xbe\xae\xc3\xd3\x8f\xc0\xcd\x8f\xc8\xc5\xbe\xae\xc3\xd3pool\x8f\xc0\xcd\x8f\xc8\xc5\x8e\xcc\x8e\xdf\x8e\xd9pool"));
sl@0
   184
	TBuf16<50> expectedUnicode;
sl@0
   185
	expectedUnicode.Format(_L16("pool%c%c%c%c%c%c%cpool%c%c%c%c%c%c%c%c%cpool%c%c%c%c%cpool"), 0x5c0f, 0x6c60, 0xff8c, 0xff9f, 0xff99, 0x641e, 0x6f0d, 0xff8c, 0xff9f, 0xff99, 0x5c0f, 0x6c60, 0x641e, 0x6f0d, 0x5c0f, 0x6c60, 0x641e, 0x6f0d, 0xff8c, 0xff9f, 0xff99);
sl@0
   186
	TestTruncatedConversionToUnicodeFromEucJpDirectmap(*characterSetConverter, expectedUnicode, originalEucJpDirectmap);
sl@0
   187
	TestTruncatedConversionToUnicodeFromEucJpDirectmap(*characterSetConverter, expectedUnicode.Mid(4, 2), originalEucJpDirectmap.Mid(4, 4));
sl@0
   188
	TestTruncatedConversionToUnicodeFromEucJpDirectmap(*characterSetConverter, expectedUnicode.Mid(6, 3), originalEucJpDirectmap.Mid(8, 6));
sl@0
   189
	TestTruncatedConversionToUnicodeFromEucJpDirectmap(*characterSetConverter, expectedUnicode.Mid(9, 2), originalEucJpDirectmap.Mid(14, 6));
sl@0
   190
	static const TInt numberOfCharactersInEachHomogeneousRun[13]={4, 2, 3, 2, 4, 3, 2, 2, 2, 4, 2, 3, 4};
sl@0
   191
	static const TInt numberOfBytesPerCharacterInEachHomogeneousRun[13]={1, 2, 2, 3, 1, 2, 2, 3, 2, 1, 3, 2, 1};
sl@0
   192
	TInt e=64;
sl@0
   193
	TInt u=0;
sl@0
   194
	for (i=0; i<13; ++i)
sl@0
   195
		{
sl@0
   196
		TInt j;
sl@0
   197
		for (j=0; j<numberOfCharactersInEachHomogeneousRun[i]; ++j, ++u, e-=numberOfBytesPerCharacterInEachHomogeneousRun[i])
sl@0
   198
			{
sl@0
   199
			TestSplittingConvertingToUnicodeFromEucJpDirectmap(*characterSetConverter, u, u, e, u, expectedUnicode, originalEucJpDirectmap);
sl@0
   200
			}
sl@0
   201
		}
sl@0
   202
	test(e==0);
sl@0
   203
	test(u==37);
sl@0
   204
	TestSplittingConvertingToUnicodeFromEucJpDirectmap(*characterSetConverter, u, u+10, e, u, expectedUnicode, originalEucJpDirectmap);
sl@0
   205
	INFO_PRINTF1(_L("Testing ill-formed EUC-JP (DirectMap)"));
sl@0
   206
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1"));
sl@0
   207
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1\xb2\xc3"));
sl@0
   208
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1\xb2\x8e"));
sl@0
   209
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1\xb2\x8f"));
sl@0
   210
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1\xb2\x8f\xaa"));
sl@0
   211
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8e\xd4\x8e"));
sl@0
   212
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8e\xd4\x8f"));
sl@0
   213
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8e\xd4\x8f\xbb"));
sl@0
   214
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\xe5\x8e"));
sl@0
   215
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\xe5\x8f"));
sl@0
   216
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\xe5\x8f\xcc"));
sl@0
   217
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8e\xd4\x8e"));
sl@0
   218
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8e\xd4\x8f"));
sl@0
   219
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8e\xd4\x8f\xdd"));
sl@0
   220
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8f\xe5\x8e"));
sl@0
   221
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8f\xe5\x8f"));
sl@0
   222
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("xyz\x8f\xe5\x8f\xee"));
sl@0
   223
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8e "));
sl@0
   224
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f "));
sl@0
   225
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\xf1 "));
sl@0
   226
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8e\x41"));
sl@0
   227
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\x41"));
sl@0
   228
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\x8f\xe2\x41"));
sl@0
   229
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8e "));
sl@0
   230
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8f "));
sl@0
   231
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8f\xf1 "));
sl@0
   232
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8e\x41"));
sl@0
   233
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8f\x41"));
sl@0
   234
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("amb\x8f\xe2\x41"));
sl@0
   235
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1 "));
sl@0
   236
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("\xa1\x61"));
sl@0
   237
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("eb\xa1 "));
sl@0
   238
	TestIsIllFormedEucJpDirectmap(*characterSetConverter, _L8("eb\xa1\x61"));
sl@0
   239
	
sl@0
   240
	const TPtrC8 originalEucJpDirectmapYen(_S8("pool\x5c"));
sl@0
   241
	TBuf16<10> expectedUnicodeBackSlash;
sl@0
   242
	expectedUnicodeBackSlash.Format(_L16("pool%c"), 0x005c);
sl@0
   243
    TInt state=CCnvCharacterSetConverter::KStateDefault;
sl@0
   244
    TBuf16<KBufferLength> generatedUnicodeBackSlash;
sl@0
   245
    test(characterSetConverter->ConvertToUnicode(generatedUnicodeBackSlash, originalEucJpDirectmapYen, state) == 0);
sl@0
   246
    test(generatedUnicodeBackSlash==expectedUnicodeBackSlash);
sl@0
   247
	
sl@0
   248
	CleanupStack::PopAndDestroy(3); // arrayOfCharacterSetsAvailable and characterSetConverter and fileServerSession
sl@0
   249
	}
sl@0
   250
sl@0
   251
CT_EUCJPDIRECTMAP::CT_EUCJPDIRECTMAP()
sl@0
   252
    {
sl@0
   253
    SetTestStepName(KTestStep_T_EUCJPDIRECTMAP);
sl@0
   254
    }
sl@0
   255
sl@0
   256
TVerdict CT_EUCJPDIRECTMAP::doTestStepL()
sl@0
   257
    {
sl@0
   258
    SetTestStepResult(EFail);
sl@0
   259
sl@0
   260
    __UHEAP_MARK;
sl@0
   261
    TRAPD(error1, DoE32MainL());    
sl@0
   262
    __UHEAP_MARKEND;
sl@0
   263
sl@0
   264
    if(error1 == KErrNone)
sl@0
   265
        {
sl@0
   266
        SetTestStepResult(EPass);
sl@0
   267
        }
sl@0
   268
sl@0
   269
    return TestStepResult();
sl@0
   270
    }