os/ossrv/genericservices/httputils/Test/t_uriparser/CTextUtilsTest.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 "CTextUtilsTest.h"
sl@0
    17
sl@0
    18
#include <uriutilscommon.h>
sl@0
    19
#include <inetprottextutils.h>
sl@0
    20
sl@0
    21
#include "TextUtilsTestCommon.h"
sl@0
    22
#include "TextUtilsTests.h"
sl@0
    23
sl@0
    24
CTextUtilsTest* CTextUtilsTest::NewLC(CIpuTestHarness* aTestHarness)
sl@0
    25
	{
sl@0
    26
	CTextUtilsTest* self = new (ELeave) CTextUtilsTest(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
CTextUtilsTest* CTextUtilsTest::NewL(CIpuTestHarness* aTestHarness)
sl@0
    33
	{
sl@0
    34
	CTextUtilsTest* self = CTextUtilsTest::NewLC(aTestHarness);
sl@0
    35
	CleanupStack::Pop(self);
sl@0
    36
	return self;
sl@0
    37
	}
sl@0
    38
sl@0
    39
CTextUtilsTest::CTextUtilsTest(CIpuTestHarness* aTestHarness)
sl@0
    40
: iTestHarness(aTestHarness)
sl@0
    41
	{
sl@0
    42
	}
sl@0
    43
sl@0
    44
void CTextUtilsTest::ConstructL()
sl@0
    45
	{
sl@0
    46
	}
sl@0
    47
sl@0
    48
CTextUtilsTest::~CTextUtilsTest()
sl@0
    49
	{
sl@0
    50
	}
sl@0
    51
sl@0
    52
void CTextUtilsTest::DoTestsL()
sl@0
    53
	{
sl@0
    54
sl@0
    55
	TestTextUtilsRemoveL(KRemove0_base, KRemove0_left, KRemove0_left_consumed,
sl@0
    56
						KRemove0_right, KRemove0_right_consumed,
sl@0
    57
						KRemove0_both, KRemove0_both_consumed);
sl@0
    58
sl@0
    59
	TestTextUtilsDesToIntConversionL(KDecRep0, KNumericValue0, KIsValid0);
sl@0
    60
	TestTextUtilsDesToIntConversionL(KDecRep1, KNumericValue1, KIsValid1);
sl@0
    61
	TestTextUtilsDesToIntConversionL(KDecRep2, KNumericValue2, KIsValid2);
sl@0
    62
	TestTextUtilsDesToIntConversionL(KDecRep3, KNumericValue3, KIsValid3);
sl@0
    63
	
sl@0
    64
	TestTextUtilsIntToDesConversionL(KNumericValue0, KDecRep0);
sl@0
    65
	TestTextUtilsIntToDesConversionL(KNumericValue1, KDecRep1);
sl@0
    66
sl@0
    67
	_LIT(KWhiteSpace," \t");
sl@0
    68
	TestTextUtilsDesToHexConversionL(KWhiteSpace, 0, EFalse);
sl@0
    69
sl@0
    70
	TestTextUtilsDesToHexConversionL(KHexRep0, KNumericValue0, KIsValid0);
sl@0
    71
	TestTextUtilsDesToHexConversionL(KHexRep1, KNumericValue1, KIsValid1);
sl@0
    72
	TestTextUtilsDesToHexConversionL(KHexRep2, KNumericValue2, KIsValid2);
sl@0
    73
	TestTextUtilsDesToHexConversionL(KHexRep3, KNumericValue3, KIsValid3);
sl@0
    74
sl@0
    75
	TestTextUtilsHexToDesConversionL(KNumericValue0, KHexRep0);
sl@0
    76
	TestTextUtilsHexToDesConversionL(KNumericValue1, KHexRep1);
sl@0
    77
sl@0
    78
	TestTextUtilsExtractQuotedStringL(KQuotedBuffer0, KQuotedString0, KQuotedRemainder0, KExpectedError0);
sl@0
    79
	TestTextUtilsExtractQuotedStringL(KQuotedBuffer1, KQuotedString1, KQuotedRemainder1, KExpectedError1);
sl@0
    80
	TestTextUtilsExtractQuotedStringL(KQuotedBuffer2, KQuotedString2, KQuotedRemainder2, KExpectedError2);
sl@0
    81
	TestTextUtilsExtractQuotedStringL(KQuotedBuffer3, KQuotedString3, KQuotedRemainder3, KExpectedError3);
sl@0
    82
sl@0
    83
	TestTextUtilsExtractTokenFromListL(
sl@0
    84
									  KListBuffer0,
sl@0
    85
									  KListToken0_0,
sl@0
    86
									  KListToken0_1,
sl@0
    87
									  KListToken0_2,
sl@0
    88
									  KListRemainder0,
sl@0
    89
									  KListSeparator0
sl@0
    90
									  );
sl@0
    91
sl@0
    92
	TestTextUtilsExtractTokenFromListL(
sl@0
    93
									  KListBuffer1,
sl@0
    94
									  KListToken1_0,
sl@0
    95
									  KListToken1_1,
sl@0
    96
									  KListToken1_2,
sl@0
    97
									  KListRemainder1,
sl@0
    98
									  KListSeparator1
sl@0
    99
									  );
sl@0
   100
sl@0
   101
	TestTextUtilsExtractTokenFromListL(
sl@0
   102
									  KListBuffer2,
sl@0
   103
									  KListToken2_0,
sl@0
   104
									  KListToken2_1,
sl@0
   105
									  KListToken2_2,
sl@0
   106
									  KListRemainder2,
sl@0
   107
									  KListSeparator2
sl@0
   108
									  );
sl@0
   109
sl@0
   110
	TestTextUtilsExtractTokenFromListL(
sl@0
   111
									  KListBuffer3,
sl@0
   112
									  KListToken3_0,
sl@0
   113
									  KListToken3_1,
sl@0
   114
									  KListToken3_2,
sl@0
   115
									  KListRemainder3,
sl@0
   116
									  KListSeparator3
sl@0
   117
									  );
sl@0
   118
	}
sl@0
   119
sl@0
   120
void CTextUtilsTest::TestTextUtilsRemoveL(const TDesC& aBase, 
sl@0
   121
										  const TDesC& aRemoveLeft, TInt aConsumedLeft,
sl@0
   122
										  const TDesC& aRemoveRight, TInt aConsumedRight,
sl@0
   123
										  const TDesC& aRemoveBoth, TInt aConsumedBoth)
sl@0
   124
	{
sl@0
   125
	iTestHarness->StartTestL(_L("Test TextUtils Remove (16-bit)"));
sl@0
   126
sl@0
   127
	TInt error = DoTestTextUtilsRemove<TPtrC16>(aBase, aRemoveLeft, aConsumedLeft,
sl@0
   128
												aRemoveRight, aConsumedRight,
sl@0
   129
												aRemoveBoth, aConsumedBoth);
sl@0
   130
sl@0
   131
	iTestHarness->EndTest(error);
sl@0
   132
sl@0
   133
	// Make 8-bit copy
sl@0
   134
	HBufC8* baseBuf = HBufC8::NewLC(aBase.Length());
sl@0
   135
	TPtr8 base8Bit = baseBuf->Des();
sl@0
   136
	base8Bit.Copy(aBase);
sl@0
   137
sl@0
   138
	HBufC8* removeLeftBuf = HBufC8::NewLC(aRemoveLeft.Length());
sl@0
   139
	TPtr8 removeLeft8Bit = removeLeftBuf->Des();
sl@0
   140
	removeLeft8Bit.Copy(aRemoveLeft);
sl@0
   141
sl@0
   142
	HBufC8* removeRightBuf = HBufC8::NewLC(aRemoveRight.Length());
sl@0
   143
	TPtr8 removeRight8Bit = removeRightBuf->Des();
sl@0
   144
	removeRight8Bit.Copy(aRemoveRight);
sl@0
   145
sl@0
   146
	HBufC8* removeBothBuf = HBufC8::NewLC(aRemoveBoth.Length());
sl@0
   147
	TPtr8 removeBoth8Bit = removeBothBuf->Des();
sl@0
   148
	removeBoth8Bit.Copy(aRemoveBoth);
sl@0
   149
sl@0
   150
	iTestHarness->StartTestL(_L("Test TextUtils Remove (8-bit)"));
sl@0
   151
sl@0
   152
	error = DoTestTextUtilsRemove<TPtrC8>(base8Bit, removeLeft8Bit, aConsumedLeft,
sl@0
   153
											removeRight8Bit, aConsumedRight,
sl@0
   154
											removeBoth8Bit, aConsumedBoth);
sl@0
   155
sl@0
   156
	iTestHarness->EndTest(error);
sl@0
   157
sl@0
   158
	CleanupStack::PopAndDestroy(4, baseBuf);	// baseBuf, removeLeftBuf, removeRightBuf, removeBothBuf
sl@0
   159
	}
sl@0
   160
sl@0
   161
void CTextUtilsTest::TestTextUtilsDesToIntConversionL(const TDesC& aDes, TInt aInt, TBool aValid)
sl@0
   162
	{
sl@0
   163
	iTestHarness->StartTestL(_L("Test TextUtils ConvertDescriptorToInt (16-bit)"));
sl@0
   164
sl@0
   165
	TInt error = DoTestTextUtilsDesToIntConversion(aDes, aInt, aValid);
sl@0
   166
sl@0
   167
	iTestHarness->EndTest(error);
sl@0
   168
sl@0
   169
	// Make 8-bit copy
sl@0
   170
	HBufC8* desBuf = HBufC8::NewLC(aDes.Length());
sl@0
   171
	TPtr8 des8Bit = desBuf->Des();
sl@0
   172
	des8Bit.Copy(aDes);
sl@0
   173
	
sl@0
   174
	iTestHarness->StartTestL(_L("Test TextUtils ConvertDescriptorToInt (8-bit)"));
sl@0
   175
sl@0
   176
	error = DoTestTextUtilsDesToIntConversion(des8Bit, aInt, aValid);
sl@0
   177
sl@0
   178
	iTestHarness->EndTest(error);
sl@0
   179
sl@0
   180
	CleanupStack::PopAndDestroy(desBuf);	// desBuf
sl@0
   181
	}
sl@0
   182
sl@0
   183
void CTextUtilsTest::TestTextUtilsIntToDesConversionL(TInt aInt, const TDesC& aDes)
sl@0
   184
	{
sl@0
   185
	iTestHarness->StartTestL(_L("Test TextUtils ConvertIntToDescriptor (16-bit)"));
sl@0
   186
sl@0
   187
	TInt error = DoTestTextUtilsIntToDesConversion<HBufC16>(aInt, aDes);
sl@0
   188
sl@0
   189
	iTestHarness->EndTest(error);
sl@0
   190
sl@0
   191
	// Make 8-bit copy
sl@0
   192
	HBufC8* desBuf = HBufC8::NewLC(aDes.Length());
sl@0
   193
	TPtr8 des8Bit = desBuf->Des();
sl@0
   194
	des8Bit.Copy(aDes);
sl@0
   195
	
sl@0
   196
	iTestHarness->StartTestL(_L("Test TextUtils ConvertIntToDescriptor (8-bit)"));
sl@0
   197
sl@0
   198
	error = DoTestTextUtilsIntToDesConversion<HBufC8>(aInt, des8Bit);
sl@0
   199
sl@0
   200
	iTestHarness->EndTest(error);
sl@0
   201
sl@0
   202
	CleanupStack::PopAndDestroy(desBuf);	// desBuf
sl@0
   203
	}
sl@0
   204
sl@0
   205
sl@0
   206
sl@0
   207
void CTextUtilsTest::TestTextUtilsDesToHexConversionL(const TDesC& aDes, TInt aHexNumber, TBool aValid)
sl@0
   208
	{
sl@0
   209
	iTestHarness->StartTestL(_L("Test TextUtils ConvertDescriptorToHex (16-bit)"));
sl@0
   210
sl@0
   211
	TInt error = DoTestTextUtilsDesToHexConversion(aDes, aHexNumber, aValid);
sl@0
   212
	iTestHarness->EndTest(error);
sl@0
   213
sl@0
   214
	// Test 8 bit version
sl@0
   215
	TestTextUtilsDesToHexConversion8L(aDes, aHexNumber, aValid);
sl@0
   216
	}
sl@0
   217
	
sl@0
   218
sl@0
   219
void CTextUtilsTest::TestTextUtilsDesToHexConversion8L(const TDesC& aDes, TInt aHexNumber, TBool aValid)
sl@0
   220
	{
sl@0
   221
	HBufC8* desBuf = HBufC8::NewLC(aDes.Length());
sl@0
   222
	TPtr8 des8Bit = desBuf->Des();
sl@0
   223
	des8Bit.Copy(aDes);
sl@0
   224
	
sl@0
   225
	iTestHarness->StartTestL(_L("Test TextUtils ConvertDescriptorToHex (8-bit)"));
sl@0
   226
sl@0
   227
	TInt error = DoTestTextUtilsDesToHexConversion(des8Bit, aHexNumber, aValid);
sl@0
   228
sl@0
   229
	iTestHarness->EndTest(error);
sl@0
   230
sl@0
   231
	CleanupStack::PopAndDestroy(desBuf);	// desBuf
sl@0
   232
	}
sl@0
   233
	
sl@0
   234
sl@0
   235
sl@0
   236
void CTextUtilsTest::TestTextUtilsHexToDesConversionL(TInt aHex, const TDesC& aDes)
sl@0
   237
	{
sl@0
   238
	iTestHarness->StartTestL(_L("Test TextUtils ConvertHexToDescriptor (16-bit)"));
sl@0
   239
sl@0
   240
	TInt error = DoTestTextUtilsHexToDesConversion<HBufC16>(aHex, aDes);
sl@0
   241
sl@0
   242
	iTestHarness->EndTest(error);
sl@0
   243
sl@0
   244
	// Make 8-bit copy
sl@0
   245
	HBufC8* desBuf = HBufC8::NewLC(aDes.Length());
sl@0
   246
	TPtr8 des8Bit = desBuf->Des();
sl@0
   247
	des8Bit.Copy(aDes);
sl@0
   248
	
sl@0
   249
	iTestHarness->StartTestL(_L("Test TextUtils ConvertHexToDescriptor (8-bit)"));
sl@0
   250
sl@0
   251
	error = DoTestTextUtilsHexToDesConversion<HBufC8>(aHex, des8Bit);
sl@0
   252
sl@0
   253
	iTestHarness->EndTest(error);
sl@0
   254
sl@0
   255
	CleanupStack::PopAndDestroy(desBuf);	// desBuf
sl@0
   256
	}
sl@0
   257
sl@0
   258
void CTextUtilsTest::TestTextUtilsExtractQuotedStringL(
sl@0
   259
													  const TDesC&	aBuffer, 
sl@0
   260
													  const TDesC&	aString, 
sl@0
   261
													  const TDesC&	aRemainder,
sl@0
   262
													  TInt			aExpectedError
sl@0
   263
													  )
sl@0
   264
	{
sl@0
   265
	iTestHarness->StartTestL(_L("Test TextUtils ExtractQuotedStringL (16-bit)"));
sl@0
   266
sl@0
   267
	TInt error = DoTestExtractQuotedStringL<TPtrC>(aBuffer, aString, aRemainder, aExpectedError);
sl@0
   268
sl@0
   269
	iTestHarness->EndTest(error);
sl@0
   270
sl@0
   271
	// Make 8-bit copy
sl@0
   272
	HBufC8* buffer = HBufC8::NewLC(aBuffer.Length());
sl@0
   273
	buffer->Des().Copy(aBuffer);
sl@0
   274
sl@0
   275
	HBufC8* string = HBufC8::NewLC(aString.Length());
sl@0
   276
	string->Des().Copy(aString);
sl@0
   277
sl@0
   278
	HBufC8* remainder = HBufC8::NewLC(aRemainder.Length());
sl@0
   279
	remainder->Des().Copy(aRemainder);
sl@0
   280
sl@0
   281
	iTestHarness->StartTestL(_L("Test TextUtils ExtractQuotedStringL (8-bit)"));
sl@0
   282
sl@0
   283
	error = DoTestExtractQuotedStringL<TPtrC8>(*buffer, *string, *remainder, aExpectedError);
sl@0
   284
sl@0
   285
	iTestHarness->EndTest(error);
sl@0
   286
sl@0
   287
	CleanupStack::PopAndDestroy(3, buffer);
sl@0
   288
	}
sl@0
   289
sl@0
   290
void CTextUtilsTest::TestTextUtilsExtractTokenFromListL(
sl@0
   291
													   const TDesC& aBuffer,
sl@0
   292
													   const TDesC& aToken0,
sl@0
   293
													   const TDesC& aToken1,
sl@0
   294
													   const TDesC& aToken2,
sl@0
   295
													   const TDesC& aRemainder,
sl@0
   296
													   const TDesC& aSeparator
sl@0
   297
													   )
sl@0
   298
	{
sl@0
   299
	iTestHarness->StartTestL(_L("Test TextUtils ExtractTokenFromList, multiple separator (16-bit)"));
sl@0
   300
sl@0
   301
	TInt error = DoExtractTokenFromListMultipleSeparator<TPtrC>(aBuffer, aToken0, aToken1, aToken2, aRemainder, aSeparator);
sl@0
   302
sl@0
   303
	iTestHarness->EndTest(error);
sl@0
   304
sl@0
   305
	// Make 8-bit copy
sl@0
   306
	HBufC8* buffer = HBufC8::NewLC(aBuffer.Length());
sl@0
   307
	buffer->Des().Copy(aBuffer);
sl@0
   308
sl@0
   309
	HBufC8* token0 = HBufC8::NewLC(aToken0.Length());
sl@0
   310
	token0->Des().Copy(aToken0);
sl@0
   311
sl@0
   312
	HBufC8* token1 = HBufC8::NewLC(aToken1.Length());
sl@0
   313
	token1->Des().Copy(aToken1);
sl@0
   314
sl@0
   315
	HBufC8* token2 = HBufC8::NewLC(aToken2.Length());
sl@0
   316
	token2->Des().Copy(aToken2);
sl@0
   317
sl@0
   318
	HBufC8* remainder = HBufC8::NewLC(aRemainder.Length());
sl@0
   319
	remainder->Des().Copy(aRemainder);
sl@0
   320
sl@0
   321
	HBufC8* separator = HBufC8::NewLC(aSeparator.Length());
sl@0
   322
	separator->Des().Copy(aSeparator);
sl@0
   323
sl@0
   324
	iTestHarness->StartTestL(_L("Test TextUtils ExtractTokenFromList, multiple separator (8-bit)"));
sl@0
   325
sl@0
   326
	error = DoExtractTokenFromListMultipleSeparator<TPtrC8>(*buffer, *token0, *token1, *token2, *remainder, *separator);
sl@0
   327
sl@0
   328
	iTestHarness->EndTest(error);
sl@0
   329
sl@0
   330
	CleanupStack::PopAndDestroy(6, buffer);
sl@0
   331
	}
sl@0
   332
sl@0
   333
void CTextUtilsTest::TestTextUtilsExtractTokenFromListL(
sl@0
   334
													   const TDesC& aBuffer,
sl@0
   335
													   const TDesC& aToken0,
sl@0
   336
													   const TDesC& aToken1,
sl@0
   337
													   const TDesC& aToken2,
sl@0
   338
													   const TDesC& aRemainder,
sl@0
   339
													   TChar		aSeparator
sl@0
   340
													   )
sl@0
   341
	{
sl@0
   342
	iTestHarness->StartTestL(_L("Test TextUtils ExtractTokenFromList, single separator (16-bit)"));
sl@0
   343
sl@0
   344
	TInt error = DoExtractTokenFromListSingleSeparator<TPtrC>(aBuffer, aToken0, aToken1, aToken2, aRemainder, aSeparator);
sl@0
   345
sl@0
   346
	iTestHarness->EndTest(error);
sl@0
   347
sl@0
   348
	// Make 8-bit copy
sl@0
   349
	HBufC8* buffer = HBufC8::NewLC(aBuffer.Length());
sl@0
   350
	buffer->Des().Copy(aBuffer);
sl@0
   351
sl@0
   352
	HBufC8* token0 = HBufC8::NewLC(aToken0.Length());
sl@0
   353
	token0->Des().Copy(aToken0);
sl@0
   354
sl@0
   355
	HBufC8* token1 = HBufC8::NewLC(aToken1.Length());
sl@0
   356
	token1->Des().Copy(aToken1);
sl@0
   357
sl@0
   358
	HBufC8* token2 = HBufC8::NewLC(aToken2.Length());
sl@0
   359
	token2->Des().Copy(aToken2);
sl@0
   360
sl@0
   361
	HBufC8* remainder = HBufC8::NewLC(aRemainder.Length());
sl@0
   362
	remainder->Des().Copy(aRemainder);
sl@0
   363
sl@0
   364
	iTestHarness->StartTestL(_L("Test TextUtils ExtractTokenFromList, single separator (8-bit)"));
sl@0
   365
sl@0
   366
	error = DoExtractTokenFromListSingleSeparator<TPtrC8>(*buffer, *token0, *token1, *token2, *remainder, aSeparator);
sl@0
   367
sl@0
   368
	iTestHarness->EndTest(error);
sl@0
   369
sl@0
   370
	CleanupStack::PopAndDestroy(5, buffer);
sl@0
   371
	}
sl@0
   372
sl@0
   373
/*
sl@0
   374
 *	Local methods
sl@0
   375
 */
sl@0
   376
sl@0
   377
template<class TPtrCType, class TDesCType>
sl@0
   378
LOCAL_C TInt DoTestTextUtilsRemove(const TDesCType& aBase, 
sl@0
   379
								   const TDesCType& aRemoveLeft, TInt aConsumedLeft,
sl@0
   380
								   const TDesCType& aRemoveRight, TInt aConsumedRight,
sl@0
   381
								   const TDesCType& aRemoveBoth, TInt aConsumedBoth)
sl@0
   382
	{
sl@0
   383
	// Do remove left...
sl@0
   384
	TPtrCType data = aBase;
sl@0
   385
	TInt consumed = InetProtTextUtils::RemoveWhiteSpace(data, InetProtTextUtils::ERemoveLeft);
sl@0
   386
	// Check...
sl@0
   387
	if( data.Compare(aRemoveLeft) != 0 || consumed != aConsumedLeft )
sl@0
   388
		{
sl@0
   389
		return KErrNotFound;
sl@0
   390
		}
sl@0
   391
	// Do remove right...
sl@0
   392
	data.Set(aBase);
sl@0
   393
	consumed = InetProtTextUtils::RemoveWhiteSpace(data, InetProtTextUtils::ERemoveRight);
sl@0
   394
	// Check...
sl@0
   395
	if( data.Compare(aRemoveRight) != 0 || consumed != aConsumedRight )
sl@0
   396
		{
sl@0
   397
		return KErrNotFound;
sl@0
   398
		}
sl@0
   399
	// Do remove both...
sl@0
   400
	data.Set(aBase);
sl@0
   401
	consumed = InetProtTextUtils::RemoveWhiteSpace(data, InetProtTextUtils::ERemoveBoth);
sl@0
   402
	// Check...
sl@0
   403
	if( data.Compare(aRemoveBoth) != 0 || consumed != aConsumedBoth )
sl@0
   404
		{
sl@0
   405
		return KErrNotFound;
sl@0
   406
		}
sl@0
   407
	return KErrNone;
sl@0
   408
	}
sl@0
   409
sl@0
   410
template<class TDesCType>
sl@0
   411
LOCAL_C TInt DoTestTextUtilsDesToIntConversion(const TDesCType& aDes, TInt aInt, TBool aValid)
sl@0
   412
	{
sl@0
   413
	TInt theInt;
sl@0
   414
	TInt error = InetProtTextUtils::ConvertDescriptorToInt(aDes, theInt);
sl@0
   415
	if( (error < KErrNone && aValid) || (error >= KErrNone && !aValid) )
sl@0
   416
		{
sl@0
   417
		return KErrNotFound;
sl@0
   418
		}
sl@0
   419
	if( aValid && theInt != aInt )
sl@0
   420
		{
sl@0
   421
		return KErrNotFound;
sl@0
   422
		}
sl@0
   423
	return KErrNone;
sl@0
   424
	}
sl@0
   425
sl@0
   426
template<class HBufCType, class TDesCType>
sl@0
   427
LOCAL_C TInt DoTestTextUtilsIntToDesConversion(TInt aInt, const TDesCType& aDes)
sl@0
   428
	{
sl@0
   429
	HBufCType* theDes = NULL;
sl@0
   430
	TRAPD(error, InetProtTextUtils::ConvertIntToDescriptorL(aInt, theDes));
sl@0
   431
	if( error != KErrNone )
sl@0
   432
		{
sl@0
   433
		return KErrNotFound;
sl@0
   434
		}
sl@0
   435
	if( theDes->CompareF(aDes) != 0 )
sl@0
   436
		{
sl@0
   437
		delete theDes;
sl@0
   438
		return KErrNotFound;
sl@0
   439
		}
sl@0
   440
	delete theDes;
sl@0
   441
	return KErrNone;
sl@0
   442
	}
sl@0
   443
sl@0
   444
template<class TDesCType>
sl@0
   445
LOCAL_C TInt DoTestTextUtilsDesToHexConversion(const TDesCType& aDes, TInt aHex, TBool aValid)
sl@0
   446
	{
sl@0
   447
	TInt theHex;
sl@0
   448
	TInt error = InetProtTextUtils::ConvertDescriptorToHex(aDes, theHex);
sl@0
   449
	if( (error < KErrNone && aValid) || (error >= KErrNone && !aValid) )
sl@0
   450
		{
sl@0
   451
		return KErrNotFound;
sl@0
   452
		}
sl@0
   453
	if( aValid && theHex != aHex )
sl@0
   454
		{
sl@0
   455
		return KErrNotFound;
sl@0
   456
		}
sl@0
   457
	return KErrNone;
sl@0
   458
	}
sl@0
   459
sl@0
   460
template<class HBufCType, class TDesCType>
sl@0
   461
LOCAL_C TInt DoTestTextUtilsHexToDesConversion(TInt aHex, const TDesCType& aDes)
sl@0
   462
	{
sl@0
   463
	HBufCType* theDes = NULL;
sl@0
   464
	TRAPD(error, InetProtTextUtils::ConvertHexToDescriptorL(aHex, theDes));
sl@0
   465
	if( error != KErrNone )
sl@0
   466
		{
sl@0
   467
		return KErrNotFound;
sl@0
   468
		}
sl@0
   469
	if( theDes->CompareF(aDes) != 0 )
sl@0
   470
		{
sl@0
   471
		delete theDes;
sl@0
   472
		return KErrNotFound;
sl@0
   473
		}
sl@0
   474
	delete theDes;
sl@0
   475
	return KErrNone;
sl@0
   476
	}
sl@0
   477
sl@0
   478
template<class TPtrCType, class TDesCType>
sl@0
   479
LOCAL_C TInt DoTestExtractQuotedStringL(const TDesCType& aBuffer, const TDesCType& aString, const TDesCType& aRemainder, TInt aExpectedError)
sl@0
   480
	{
sl@0
   481
	TPtrCType buffer(aBuffer);
sl@0
   482
	TPtrCType string;
sl@0
   483
	TRAPD( error, InetProtTextUtils::ExtractQuotedStringL(buffer, string) );
sl@0
   484
sl@0
   485
	if( error == KErrNone && aExpectedError == KErrNone)
sl@0
   486
		{
sl@0
   487
		if( aString.Compare(string) == 0 && aRemainder.Compare(buffer) == 0 )
sl@0
   488
			{
sl@0
   489
			// Passed
sl@0
   490
			return KErrNone;
sl@0
   491
			}
sl@0
   492
		else
sl@0
   493
			{
sl@0
   494
			// Failed
sl@0
   495
			return KErrNotFound;
sl@0
   496
			}
sl@0
   497
		}
sl@0
   498
	else if( error == aExpectedError )
sl@0
   499
		{
sl@0
   500
		// Got expected error - passed
sl@0
   501
		return KErrNone;
sl@0
   502
		}
sl@0
   503
	else
sl@0
   504
		{
sl@0
   505
		// Failed
sl@0
   506
		return KErrNotFound;
sl@0
   507
		}
sl@0
   508
	}
sl@0
   509
sl@0
   510
template<class TPtrCType, class TDesCType>
sl@0
   511
LOCAL_C TInt DoExtractTokenFromListMultipleSeparator(
sl@0
   512
												const TDesCType& aBuffer,
sl@0
   513
												const TDesCType& aToken0,
sl@0
   514
												const TDesCType& aToken1,
sl@0
   515
												const TDesCType& aToken2,
sl@0
   516
												const TDesCType& aRemainder,
sl@0
   517
												const TDesCType& aSeparator
sl@0
   518
												)
sl@0
   519
	{
sl@0
   520
	// get the first token...
sl@0
   521
	TPtrCType buffer = aBuffer;
sl@0
   522
	TPtrCType token;
sl@0
   523
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   524
sl@0
   525
	// Is it correct?
sl@0
   526
	if( token.Compare(aToken0) != 0 )
sl@0
   527
		{
sl@0
   528
		// Failed
sl@0
   529
		return KErrNotFound;
sl@0
   530
		}
sl@0
   531
	// get the second token
sl@0
   532
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   533
sl@0
   534
	// Is it correct?
sl@0
   535
	if( token.Compare(aToken1) != 0 )
sl@0
   536
		{
sl@0
   537
		// Failed
sl@0
   538
		return KErrNotFound;
sl@0
   539
		}
sl@0
   540
	// get the third token
sl@0
   541
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   542
sl@0
   543
	// Is it correct?
sl@0
   544
	if( token.Compare(aToken2) != 0 )
sl@0
   545
		{
sl@0
   546
		// Failed
sl@0
   547
		return KErrNotFound;
sl@0
   548
		}
sl@0
   549
	// Check that the remainder is correct
sl@0
   550
	if( buffer.Compare(aRemainder) != 0 )
sl@0
   551
		{
sl@0
   552
		// Failed
sl@0
   553
		return KErrNotFound;
sl@0
   554
		}
sl@0
   555
	return KErrNone;
sl@0
   556
	}
sl@0
   557
sl@0
   558
template<class TPtrCType, class TDesCType>
sl@0
   559
LOCAL_C TInt DoExtractTokenFromListSingleSeparator(
sl@0
   560
												const TDesCType& aBuffer,
sl@0
   561
												const TDesCType& aToken0,
sl@0
   562
												const TDesCType& aToken1,
sl@0
   563
												const TDesCType& aToken2,
sl@0
   564
												const TDesCType& aRemainder,
sl@0
   565
												TChar			 aSeparator
sl@0
   566
												)
sl@0
   567
	{
sl@0
   568
	// get the first token...
sl@0
   569
	TPtrCType buffer = aBuffer;
sl@0
   570
	TPtrCType token;
sl@0
   571
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   572
sl@0
   573
	// Is it correct?
sl@0
   574
	if( token.Compare(aToken0) != 0 )
sl@0
   575
		{
sl@0
   576
		// Failed
sl@0
   577
		return KErrNotFound;
sl@0
   578
		}
sl@0
   579
	// get the second token
sl@0
   580
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   581
sl@0
   582
	// Is it correct?
sl@0
   583
	if( token.Compare(aToken1) != 0 )
sl@0
   584
		{
sl@0
   585
		// Failed
sl@0
   586
		return KErrNotFound;
sl@0
   587
		}
sl@0
   588
	// get the third token
sl@0
   589
	InetProtTextUtils::ExtractNextTokenFromList(buffer, token, aSeparator);
sl@0
   590
sl@0
   591
	// Is it correct?
sl@0
   592
	if( token.Compare(aToken2) != 0 )
sl@0
   593
		{
sl@0
   594
		// Failed
sl@0
   595
		return KErrNotFound;
sl@0
   596
		}
sl@0
   597
	// Check that the remainder is correct
sl@0
   598
	if( buffer.Compare(aRemainder) != 0 )
sl@0
   599
		{
sl@0
   600
		// Failed
sl@0
   601
		return KErrNotFound;
sl@0
   602
		}
sl@0
   603
	return KErrNone;
sl@0
   604
	}