os/ossrv/genericservices/httputils/Test/t_uriparser/CEscapeUtilsTest.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
// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include "CEscapeUtilsTest.h"
sl@0
    17
sl@0
    18
#include <e32base.h>
sl@0
    19
sl@0
    20
#include "EscapeUtilsTestCommon.h"
sl@0
    21
#include "EscapeUtilsTests.h"
sl@0
    22
#include <tconvbase64.h>
sl@0
    23
sl@0
    24
CEscapeUtilsTest* CEscapeUtilsTest::NewLC(CIpuTestHarness* aTestHarness)
sl@0
    25
	{
sl@0
    26
	CEscapeUtilsTest* self = new (ELeave) CEscapeUtilsTest(aTestHarness);
sl@0
    27
	CleanupStack::PushL(self);
sl@0
    28
	self->ConstructL();
sl@0
    29
	return self;
sl@0
    30
	}
sl@0
    31
sl@0
    32
CEscapeUtilsTest* CEscapeUtilsTest::NewL(CIpuTestHarness* aTestHarness)
sl@0
    33
	{
sl@0
    34
	CEscapeUtilsTest* self = CEscapeUtilsTest::NewLC(aTestHarness);
sl@0
    35
	CleanupStack::Pop(self);
sl@0
    36
	return self;
sl@0
    37
	}
sl@0
    38
sl@0
    39
CEscapeUtilsTest::CEscapeUtilsTest(CIpuTestHarness* aTestHarness)
sl@0
    40
: iTestHarness(aTestHarness)
sl@0
    41
	{
sl@0
    42
	}
sl@0
    43
sl@0
    44
void CEscapeUtilsTest::ConstructL()
sl@0
    45
	{
sl@0
    46
	}
sl@0
    47
sl@0
    48
CEscapeUtilsTest::~CEscapeUtilsTest()
sl@0
    49
	{
sl@0
    50
	}
sl@0
    51
sl@0
    52
void CEscapeUtilsTest::DoTestsL()
sl@0
    53
	{
sl@0
    54
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_auth, EscapeUtils::EEscapeAuth);
sl@0
    55
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_path, EscapeUtils::EEscapePath);
sl@0
    56
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_query, EscapeUtils::EEscapeQuery);
sl@0
    57
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_normal, EscapeUtils::EEscapeNormal);
sl@0
    58
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
    59
sl@0
    60
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_auth, EscapeUtils::EEscapeAuth);
sl@0
    61
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_path, EscapeUtils::EEscapePath);
sl@0
    62
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_query, EscapeUtils::EEscapeQuery);
sl@0
    63
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_normal, EscapeUtils::EEscapeNormal);
sl@0
    64
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
    65
sl@0
    66
sl@0
    67
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_auth, KEscapeDecoded0);
sl@0
    68
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_path, KEscapeDecoded0);
sl@0
    69
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_query, KEscapeDecoded0);
sl@0
    70
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_normal, KEscapeDecoded0);
sl@0
    71
sl@0
    72
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_auth, KEscapeDecoded1);
sl@0
    73
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_path, KEscapeDecoded1);
sl@0
    74
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_query, KEscapeDecoded1);
sl@0
    75
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_normal, KEscapeDecoded1);
sl@0
    76
sl@0
    77
	// Test cases for section 2.9.1.2 //
sl@0
    78
sl@0
    79
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_auth, EscapeUtils::EEscapeAuth);
sl@0
    80
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_path, EscapeUtils::EEscapePath);
sl@0
    81
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_query, EscapeUtils::EEscapeQuery);
sl@0
    82
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_normal, EscapeUtils::EEscapeNormal);
sl@0
    83
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
    84
sl@0
    85
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_auth, EscapeUtils::EEscapeAuth);
sl@0
    86
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_path, EscapeUtils::EEscapePath);
sl@0
    87
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_query, EscapeUtils::EEscapeQuery);
sl@0
    88
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_normal, EscapeUtils::EEscapeNormal);
sl@0
    89
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
    90
sl@0
    91
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_auth, EscapeUtils::EEscapeAuth);
sl@0
    92
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_path, EscapeUtils::EEscapePath);
sl@0
    93
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_query, EscapeUtils::EEscapeQuery);
sl@0
    94
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_normal, EscapeUtils::EEscapeNormal);
sl@0
    95
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
    96
sl@0
    97
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_auth, EscapeUtils::EEscapeAuth);
sl@0
    98
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_path, EscapeUtils::EEscapePath);
sl@0
    99
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_query, EscapeUtils::EEscapeQuery);
sl@0
   100
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_normal, EscapeUtils::EEscapeNormal);
sl@0
   101
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
   102
sl@0
   103
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_auth, EscapeUtils::EEscapeAuth);
sl@0
   104
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_path, EscapeUtils::EEscapePath);
sl@0
   105
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_query, EscapeUtils::EEscapeQuery);
sl@0
   106
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_normal, EscapeUtils::EEscapeNormal);
sl@0
   107
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
   108
sl@0
   109
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_auth, EscapeUtils::EEscapeAuth);
sl@0
   110
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_path, EscapeUtils::EEscapePath);
sl@0
   111
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_query, EscapeUtils::EEscapeQuery);
sl@0
   112
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_normal, EscapeUtils::EEscapeNormal);
sl@0
   113
	TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_url, EscapeUtils::EEscapeUrlEncoded);
sl@0
   114
sl@0
   115
sl@0
   116
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_auth, KEscapeDecoded2);
sl@0
   117
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_path, KEscapeDecoded2);
sl@0
   118
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_query, KEscapeDecoded2);
sl@0
   119
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_normal, KEscapeDecoded2);
sl@0
   120
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_url, KEscapeDecoded2);
sl@0
   121
sl@0
   122
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_auth, KEscapeDecoded3);
sl@0
   123
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_path, KEscapeDecoded3);
sl@0
   124
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_query, KEscapeDecoded3);
sl@0
   125
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_normal, KEscapeDecoded3);
sl@0
   126
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_url, KEscapeDecoded3);
sl@0
   127
sl@0
   128
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_auth, KEscapeDecoded4);
sl@0
   129
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_path, KEscapeDecoded4);
sl@0
   130
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_query, KEscapeDecoded4);
sl@0
   131
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_normal, KEscapeDecoded4);
sl@0
   132
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_url, KEscapeDecoded4);
sl@0
   133
sl@0
   134
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_auth, KEscapeDecoded5);
sl@0
   135
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_path, KEscapeDecoded5);
sl@0
   136
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_query, KEscapeDecoded5);
sl@0
   137
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_normal, KEscapeDecoded5);
sl@0
   138
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_url, KEscapeDecoded5);
sl@0
   139
sl@0
   140
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_auth, KEscapeDecoded6);
sl@0
   141
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_path, KEscapeDecoded6);
sl@0
   142
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_query, KEscapeDecoded6);
sl@0
   143
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_normal, KEscapeDecoded6);
sl@0
   144
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_url, KEscapeDecoded6);
sl@0
   145
sl@0
   146
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_auth, KEscapeDecoded7);
sl@0
   147
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_path, KEscapeDecoded7);
sl@0
   148
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_query, KEscapeDecoded7);
sl@0
   149
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_normal, KEscapeDecoded7);
sl@0
   150
	TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_url, KEscapeDecoded7);
sl@0
   151
sl@0
   152
	//
sl@0
   153
sl@0
   154
	TestEscapeUtilsUnicodeUtf8ConversionsL(KUnicode_0, KUtf8_0);
sl@0
   155
sl@0
   156
	TestEscapeUtilsIsExcludedCharL(KExcludedChar0, KExcludedChar0_excluded);
sl@0
   157
	TestEscapeUtilsIsExcludedCharL(KExcludedChar1, KExcludedChar1_excluded);
sl@0
   158
	TestEscapeUtilsIsExcludedCharL(KExcludedChar2, KExcludedChar2_excluded);
sl@0
   159
	TestEscapeUtilsIsExcludedCharL(KExcludedChar3, KExcludedChar3_excluded);
sl@0
   160
	TestEscapeUtilsIsExcludedCharL(KExcludedChar4, KExcludedChar4_excluded);
sl@0
   161
sl@0
   162
	TestEscapeUtilsIsEscapeTripleL(KEscapeTriple0(), KEscapeTriple0_valid, KEscapeTriple0_value);
sl@0
   163
	TestEscapeUtilsIsEscapeTripleL(KEscapeTriple1(), KEscapeTriple1_valid, KEscapeTriple1_value);
sl@0
   164
	TestEscapeUtilsIsEscapeTripleL(KEscapeTriple2(), KEscapeTriple2_valid, KEscapeTriple2_value);
sl@0
   165
	
sl@0
   166
	//TConvBase64 Test
sl@0
   167
	TestEscapeUtilsBase64ConversionL(KEscapeDecoded2);
sl@0
   168
	}
sl@0
   169
sl@0
   170
void CEscapeUtilsTest::TestEscapeUtilsEscapeEncodeL(const TDesC& aData, const TDesC& aExpected, EscapeUtils::TEscapeMode aEscapeMode)
sl@0
   171
	{
sl@0
   172
	iTestHarness->StartTestL(_L("Test EscapeUtils EscapeEncode (16-bit)"));
sl@0
   173
sl@0
   174
	TInt error = DoTestEscapeUtilsEscapeEncode<HBufC16>(aData, aExpected, aEscapeMode);
sl@0
   175
sl@0
   176
	iTestHarness->EndTest(error);
sl@0
   177
sl@0
   178
	// Make 8-bit copy
sl@0
   179
	HBufC8* dataBuf = HBufC8::NewLC(aData.Length());
sl@0
   180
	TPtr8 data8Bit = dataBuf->Des();
sl@0
   181
	data8Bit.Copy(aData);
sl@0
   182
sl@0
   183
	HBufC8* expectedBuf = HBufC8::NewLC(aExpected.Length());
sl@0
   184
	TPtr8 expected8Bit = expectedBuf->Des();
sl@0
   185
	expected8Bit.Copy(aExpected);
sl@0
   186
sl@0
   187
	iTestHarness->StartTestL(_L("Test EscapeUtils EscapeEncode (8-bit)"));
sl@0
   188
sl@0
   189
	error = DoTestEscapeUtilsEscapeEncode<HBufC8>(data8Bit, expected8Bit, aEscapeMode);
sl@0
   190
sl@0
   191
	iTestHarness->EndTest(error);
sl@0
   192
sl@0
   193
	CleanupStack::PopAndDestroy(2, dataBuf);	// dataBuf, expectedBuf
sl@0
   194
	}
sl@0
   195
sl@0
   196
void CEscapeUtilsTest::TestEscapeUtilsEscapeDecodeL(const TDesC& aData, const TDesC& aExpected)
sl@0
   197
	{
sl@0
   198
	iTestHarness->StartTestL(_L("Test EscapeUtils EscapeDecode (16-bit)"));
sl@0
   199
sl@0
   200
	TInt error = DoTestEscapeUtilsEscapeDecode<HBufC16>(aData, aExpected);
sl@0
   201
sl@0
   202
	iTestHarness->EndTest(error);
sl@0
   203
sl@0
   204
	// Make 8-bit copy
sl@0
   205
	HBufC8* dataBuf = HBufC8::NewLC(aData.Length());
sl@0
   206
	TPtr8 data8Bit = dataBuf->Des();
sl@0
   207
	data8Bit.Copy(aData);
sl@0
   208
sl@0
   209
	HBufC8* expectedBuf = HBufC8::NewLC(aExpected.Length());
sl@0
   210
	TPtr8 expected8Bit = expectedBuf->Des();
sl@0
   211
	expected8Bit.Copy(aExpected);
sl@0
   212
sl@0
   213
	iTestHarness->StartTestL(_L("Test EscapeUtils EscapeDecode (8-bit)"));
sl@0
   214
sl@0
   215
	error = DoTestEscapeUtilsEscapeDecode<HBufC8>(data8Bit, expected8Bit);
sl@0
   216
sl@0
   217
	iTestHarness->EndTest(error);
sl@0
   218
sl@0
   219
	CleanupStack::PopAndDestroy(2, dataBuf);	// dataBuf, expectedBuf
sl@0
   220
	}
sl@0
   221
sl@0
   222
void CEscapeUtilsTest::TestEscapeUtilsUnicodeUtf8ConversionsL(const TDesC& aUnicode, const TDesC& aUtf8)
sl@0
   223
	{
sl@0
   224
	// Make 8-bit copy of utf8
sl@0
   225
	HBufC8* utf8Buf = HBufC8::NewLC(aUtf8.Length());
sl@0
   226
	utf8Buf->Des().Copy(aUtf8);
sl@0
   227
sl@0
   228
	// Escape decode
sl@0
   229
	HBufC8* unescapedUtf8Buf = EscapeUtils::EscapeDecodeL(*utf8Buf);
sl@0
   230
	CleanupStack::PushL(unescapedUtf8Buf);
sl@0
   231
	TPtr8 unescapedUtf8 = unescapedUtf8Buf->Des();
sl@0
   232
sl@0
   233
	iTestHarness->StartTestL(_L("Test EscapeUtils ConvertFromUnicodeToUtf8"));
sl@0
   234
sl@0
   235
	HBufC8* convertedUtf8 = NULL;
sl@0
   236
	TRAPD(error, convertedUtf8 = EscapeUtils::ConvertFromUnicodeToUtf8L(aUnicode));
sl@0
   237
	if( error == KErrNone )
sl@0
   238
		{
sl@0
   239
		// Check is expected
sl@0
   240
		if( convertedUtf8->Compare(unescapedUtf8) != 0 )
sl@0
   241
			{
sl@0
   242
			error = KErrNotFound;
sl@0
   243
			}
sl@0
   244
		delete convertedUtf8;
sl@0
   245
		}
sl@0
   246
	iTestHarness->EndTest(error);
sl@0
   247
sl@0
   248
	iTestHarness->StartTestL(_L("Test EscapeUtils ConvertToUnicodeFromUtf8"));
sl@0
   249
sl@0
   250
	HBufC16* convertedUnicode = NULL;
sl@0
   251
	TRAP(error, convertedUnicode = EscapeUtils::ConvertToUnicodeFromUtf8L(unescapedUtf8));
sl@0
   252
	if( error == KErrNone )
sl@0
   253
		{
sl@0
   254
		// Check is expected
sl@0
   255
		if( convertedUnicode->Compare(aUnicode) != 0 )
sl@0
   256
			{
sl@0
   257
			error = KErrNotFound;
sl@0
   258
			}
sl@0
   259
		delete convertedUnicode;
sl@0
   260
		}
sl@0
   261
	iTestHarness->EndTest(error);
sl@0
   262
sl@0
   263
	CleanupStack::PopAndDestroy(2, utf8Buf);	// utf8Buf, unescapedUtf8Buf
sl@0
   264
	}
sl@0
   265
sl@0
   266
void CEscapeUtilsTest::TestEscapeUtilsIsExcludedCharL(TChar aChar, TBool aIsExcluded)
sl@0
   267
	{
sl@0
   268
	iTestHarness->StartTestL(_L("Test EscapeUtils IsExcludedChar"));
sl@0
   269
sl@0
   270
	TBool excluded = EscapeUtils::IsExcludedChar(aChar);
sl@0
   271
sl@0
   272
	TInt error = KErrNone;
sl@0
   273
	if( (!excluded && aIsExcluded) | (excluded && !aIsExcluded) )
sl@0
   274
		{
sl@0
   275
		error = KErrNotFound;
sl@0
   276
		}
sl@0
   277
	iTestHarness->EndTest(error);
sl@0
   278
	}
sl@0
   279
sl@0
   280
void CEscapeUtilsTest::TestEscapeUtilsIsEscapeTripleL(const TDesC& aData, TBool aIsTriple, TInt aValue)
sl@0
   281
	{
sl@0
   282
	iTestHarness->StartTestL(_L("Test EscapeUtils IsEscapeTriple (16-Bit)"));
sl@0
   283
sl@0
   284
	TInt error = DoTestEscapeUtilsIsEscapeTriple(aData, aIsTriple, aValue);
sl@0
   285
sl@0
   286
	iTestHarness->EndTest(error);
sl@0
   287
sl@0
   288
	// Make 8-bit copy
sl@0
   289
	HBufC8* dataBuf = HBufC8::NewLC(aData.Length());
sl@0
   290
	TPtr8 data8Bit = dataBuf->Des();
sl@0
   291
	data8Bit.Copy(aData);
sl@0
   292
sl@0
   293
	iTestHarness->StartTestL(_L("Test EscapeUtils IsEscapeTriple (8-Bit)"));
sl@0
   294
sl@0
   295
	error = DoTestEscapeUtilsIsEscapeTriple(data8Bit, aIsTriple, aValue);
sl@0
   296
sl@0
   297
	iTestHarness->EndTest(error);
sl@0
   298
sl@0
   299
	CleanupStack::PopAndDestroy(dataBuf);	// dataBuf
sl@0
   300
	}
sl@0
   301
sl@0
   302
void CEscapeUtilsTest::TestEscapeUtilsBase64ConversionL(const TDesC& aData)
sl@0
   303
	{	
sl@0
   304
	iTestHarness->StartTestL(_L("Test EscapeUtils Base64 Conversion Check"));
sl@0
   305
	
sl@0
   306
	TInt error = KErrNotFound;
sl@0
   307
	HBufC8* dataBuf = HBufC8::NewMaxLC (aData.Length());
sl@0
   308
	TPtr8 dataPtr(dataBuf->Des());
sl@0
   309
	
sl@0
   310
	HBufC8* encodedBuf = HBufC8::NewMaxLC(aData.Length() * 2);
sl@0
   311
	TPtr8 encodedPtr(encodedBuf->Des());
sl@0
   312
sl@0
   313
	TBase64 codec;
sl@0
   314
	codec.Encode(dataPtr, encodedPtr);	
sl@0
   315
	
sl@0
   316
	HBufC8* decodedBuf = HBufC8::NewMaxLC(aData.Length());
sl@0
   317
	TPtr8 decodedPtr(decodedBuf->Des());
sl@0
   318
	
sl@0
   319
	codec.Decode(encodedPtr, decodedPtr);
sl@0
   320
	if(decodedPtr.Compare(dataPtr) == 0)
sl@0
   321
		{
sl@0
   322
			error = KErrNone;
sl@0
   323
		}
sl@0
   324
	iTestHarness->EndTest(error);
sl@0
   325
	
sl@0
   326
	CleanupStack::PopAndDestroy(decodedBuf);	// decodedBuf
sl@0
   327
	CleanupStack::PopAndDestroy(encodedBuf);	// encodedBuf
sl@0
   328
	CleanupStack::PopAndDestroy(dataBuf);		// dataBuf			
sl@0
   329
	}
sl@0
   330
	
sl@0
   331
//
sl@0
   332
//
sl@0
   333
//	Implementation of LOCAL functions
sl@0
   334
//
sl@0
   335
//
sl@0
   336
sl@0
   337
template<class HBufCType, class TDesCType>
sl@0
   338
LOCAL_C TInt DoTestEscapeUtilsEscapeEncode(const TDesCType& aData, const TDesCType& aExpected, EscapeUtils::TEscapeMode aEscapeMode)
sl@0
   339
	{
sl@0
   340
	// Do escaping
sl@0
   341
	HBufCType* escaped = NULL;
sl@0
   342
	TRAPD(error, escaped = EscapeUtils::EscapeEncodeL(aData, aEscapeMode));
sl@0
   343
	if( error != KErrNone )
sl@0
   344
		{
sl@0
   345
		return KErrNotFound;
sl@0
   346
		}
sl@0
   347
	// Check with expected
sl@0
   348
	if( escaped->Compare(aExpected) != 0 )
sl@0
   349
		{
sl@0
   350
		delete escaped;
sl@0
   351
		return KErrNotFound;
sl@0
   352
		}
sl@0
   353
	delete escaped;
sl@0
   354
	return KErrNone;
sl@0
   355
	}
sl@0
   356
sl@0
   357
template<class HBufCType, class TDesCType>
sl@0
   358
LOCAL_C TInt DoTestEscapeUtilsEscapeDecode(const TDesCType& aData, const TDesCType& aExpected)
sl@0
   359
	{
sl@0
   360
	// Do unescaping
sl@0
   361
	HBufCType* unescaped = NULL;
sl@0
   362
	TRAPD(error, unescaped = EscapeUtils::EscapeDecodeL(aData));
sl@0
   363
	if( error != KErrNone )
sl@0
   364
		{
sl@0
   365
		return KErrNotFound;
sl@0
   366
		}
sl@0
   367
	// Check with expected
sl@0
   368
	if( unescaped->Compare(aExpected) != 0 )
sl@0
   369
		{
sl@0
   370
		delete unescaped;
sl@0
   371
		return KErrNotFound;
sl@0
   372
		}
sl@0
   373
	delete unescaped;
sl@0
   374
	return KErrNone;
sl@0
   375
	}
sl@0
   376
sl@0
   377
template<class TDesCType>
sl@0
   378
LOCAL_C TInt DoTestEscapeUtilsIsEscapeTriple(const TDesCType& aData, TBool aIsTriple, TInt aValue)
sl@0
   379
	{
sl@0
   380
	// Check for the triple
sl@0
   381
	TInt value;
sl@0
   382
	TBool triple = EscapeUtils::IsEscapeTriple(aData, value);
sl@0
   383
	if( (!triple && aIsTriple) | (triple && !aIsTriple) )
sl@0
   384
		{
sl@0
   385
		return KErrNotFound;
sl@0
   386
		}
sl@0
   387
	if( triple && value != aValue )
sl@0
   388
		{
sl@0
   389
		return KErrNotFound;
sl@0
   390
		}
sl@0
   391
	return KErrNone;
sl@0
   392
	}