genericservices/httputils/Test/t_wspcodec/cwspdecodetest.cpp
changeset 31 ce057bb09d0b
parent 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/httputils/Test/t_wspcodec/cwspdecodetest.cpp	Fri Jun 04 16:20:51 2010 +0100
@@ -0,0 +1,751 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of test CWSPDecodeTest
+// 
+//
+
+#include "cwspdecodetest.h"
+#include <wspdummyconstants.h>
+
+
+
+CWSPDecodeTest* CWSPDecodeTest::NewLC(CIpuTestHarness* aTestHarness)
+	{
+	CWSPDecodeTest* self = new(ELeave)CWSPDecodeTest(aTestHarness);
+	CleanupStack::PushL(self);
+	return self;
+	}
+
+
+CWSPDecodeTest::CWSPDecodeTest(CIpuTestHarness* aTestHarness):
+	iTestHarness(aTestHarness)
+	{}
+
+CWSPDecodeTest::~CWSPDecodeTest()
+	{}
+
+void CWSPDecodeTest::DoTestsL()
+	{
+	VarTypesTestL();
+	LengthValsTestL();
+	StringTestL();
+	TokensTestL();
+	IntegersTestL();
+	LongIntTestL();
+	UintVarsTestL();
+	VersionTestL();
+	DateTestL();
+	SegmenterTestL();
+	}
+
+
+//* VarTypes */
+
+TBool CWSPDecodeTest::VarType(TPtrC8 aBuf, TWspPrimitiveDecoder::TWspHeaderType aShouldBeType)
+	{
+	TWspPrimitiveDecoder dec(aBuf);
+	TWspPrimitiveDecoder::TWspHeaderType type=dec.VarType();
+	
+	TBool bSuccess  = EFalse;
+	if (type == aShouldBeType)
+		bSuccess = ETrue;
+
+	TBuf8<25> typeStr;
+	switch (aShouldBeType)
+	{
+	case TWspPrimitiveDecoder::ENotSet:
+		typeStr.Copy(_L("ENotSet"));
+		break;
+	case TWspPrimitiveDecoder::ELengthVal:
+		typeStr.Copy(_L("ELengthVal"));
+		break;
+	case TWspPrimitiveDecoder::EQuotedString:
+		typeStr.Copy(_L("EQuotedString"));
+		break;	
+	case TWspPrimitiveDecoder::EString:
+		typeStr.Copy(_L("EString"));
+		break;
+	case TWspPrimitiveDecoder::E7BitVal:
+		typeStr.Copy(_L("E7BitVal"));
+		break;
+	}
+	return bSuccess;
+	}
+
+
+void CWSPDecodeTest::VarTypesTestL()
+	{
+	_LIT(KTestText, "WSP Decode: VarTypes");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestVarTypesL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+void CWSPDecodeTest::TestVarTypesL()
+	{
+	const TUint8 KToken[] = {0x81};
+	const TUint8 KString1[] = {'a', 'b', 'c', 0x00};
+	const TUint8 KString2[] = {0x33};
+	const TUint8 KLen0[] = {0x00};
+	const TUint8 KLen1[] = {0x01};
+	const TUint8 KLen2[] = {0x1F};
+		
+	TBuf8<255> buf;
+	buf.Copy(KToken, sizeof(KToken));
+	if (!VarType(buf, TWspPrimitiveDecoder::E7BitVal))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KString1, sizeof(KString1));
+	if (!VarType(buf, TWspPrimitiveDecoder::EString))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KString2, sizeof(KString2));
+	if (!VarType(buf, TWspPrimitiveDecoder::EString))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLen0, sizeof(KLen0));
+	if (!VarType(buf, TWspPrimitiveDecoder::ELengthVal))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLen1, sizeof(KLen1));
+	if (!VarType(buf, TWspPrimitiveDecoder::ELengthVal))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLen2, sizeof(KLen2));
+	if (!VarType(buf, TWspPrimitiveDecoder::ELengthVal))
+		User::Leave(KErrGeneral);
+	}
+
+
+
+
+//* LenVal */
+
+TBool CWSPDecodeTest::LenVal(TPtrC8 aBuf, TInt aShouldBeVal)
+	{
+	TBool success  = EFalse;
+	TWspPrimitiveDecoder dec(aBuf);	
+	TInt len;
+	success = dec.LengthVal(len);
+	if (success == KErrCorrupt)
+		return ETrue;
+
+	return len == aShouldBeVal && !(success < KErrNone);
+	}
+
+
+void CWSPDecodeTest::LengthValsTestL()
+	{
+	_LIT(KTestText, "WSP Decode: LengthVals");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestLengthValsL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+void CWSPDecodeTest::TestLengthValsL()
+	{
+	const TUint8 KLen0[] = {0x00};
+	const TUint8 KLen1[] = {0x01};
+	const TUint8 KLen26[] = {0x1A};
+	const TUint8 KLenUintVAR17680[] = {0x1F, 0x81,0x8A,0x10};
+	const TUint8 KLenUintVARCorrupt[] = {0x1F, 0x81,0x8A,0x80};
+		
+	
+	TBuf8<255> buf;
+	buf.Copy(KLen0, sizeof(KLen0));
+	if (!LenVal(buf, 0))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLen1, sizeof(KLen1));
+	if (!LenVal(buf, 1))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLen26, sizeof(KLen26));
+	if (!LenVal(buf, 0x1A))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLenUintVAR17680, sizeof(KLenUintVAR17680));
+	if (!LenVal(buf, 17680))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KLenUintVARCorrupt, sizeof(KLenUintVARCorrupt));
+	if (!LenVal(buf, -1))
+		User::Leave(KErrGeneral);
+
+	}
+
+
+
+//* String */
+
+TBool CWSPDecodeTest::String(TPtrC8 aBuf, TPtrC8 aShouldBe, TInt /*aErr*/)
+	{
+	TBool success  = EFalse;
+	TWspPrimitiveDecoder dec(aBuf);
+	
+	TPtrC8 str;
+	success = dec.String(str);
+	if (success < KErrNone)
+		return success;
+
+
+	if (str != aShouldBe)
+		success = EFalse;
+
+	// Copy to 16 bits
+	return success;
+	}
+
+
+
+void CWSPDecodeTest::StringTestL()
+	{
+	_LIT(KTestText, "WSP Decode: String");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestStringL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestStringL()
+	{
+	const TUint8 KStringHello[] = {'H','e','l','l','o',0x00};
+	const TUint8 KStringEmpty[] = {0x00};
+	const TUint8 KStringNotAString[] = {0x1A};
+	const TUint8 KStringCorruptNoZero[] = {'H','e','l','l','o'};
+	const TUint8 KStringbye[] = {'b','y','e',0x00};
+		
+	TBuf8<255> buf;
+	
+	buf.Copy(KStringHello, sizeof(KStringHello));
+	if (!String(buf, _L8("Hello")))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KStringEmpty, sizeof(KStringEmpty));
+	if (!String(buf, _L8(""),KErrCorrupt))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KStringNotAString, sizeof(KStringNotAString));
+	if (!String(buf, _L8(""), KErrCorrupt))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KStringCorruptNoZero, sizeof(KStringCorruptNoZero));
+	if (!String(buf, _L8(""), KErrCorrupt))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KStringbye, sizeof(KStringbye));
+	if (!String(buf, _L8("bye")))
+		User::Leave(KErrGeneral);
+	}
+
+//* Tokens */
+
+TBool CWSPDecodeTest::Token(TPtrC8 aBuf, TUint8 aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	
+	TUint8 val;
+	success = dec.Val7Bit(val);
+	if (success < KErrNone && success == aErr)
+		return ETrue;
+
+	return val == aShouldBe;
+	}
+
+void CWSPDecodeTest::TokensTestL()
+	{
+	_LIT(KTestText, "WSP Decode: Tokens");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestTokensL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestTokensL()
+	{
+	const TUint8 KToken0[] = {0x80};
+	const TUint8 KToken1[] = {0x81};
+	const TUint8 KToken1A[] = {0x9A};
+	const TUint8 KToken38[] = {0xB8};
+	const TUint8 KTokenCorruptLen[] = {0x01};
+	TBuf8<255> buf;
+	
+	buf.Copy(KToken0, sizeof(KToken0));
+	if (!Token(buf, 0))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KToken1, sizeof(KToken1));
+	if (!Token(buf, 1))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KToken1A, sizeof(KToken1A));
+	if (!Token(buf, 0x1A))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KToken38, sizeof(KToken38));
+	if (!Token(buf, 0x38))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KTokenCorruptLen, sizeof(KTokenCorruptLen));
+	if (!Token(buf, 1))
+		User::Leave(KErrGeneral);
+	}
+
+
+//* Integers */
+
+TBool CWSPDecodeTest::Integer(TPtrC8 aBuf, TUint32 aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	TUint32 val;
+	success = dec.Integer(val);
+	if (success < KErrNone && success == aErr)
+		return success;
+	return val == aShouldBe;
+	}
+
+
+
+void CWSPDecodeTest::IntegersTestL()
+	{
+	_LIT(KTestText, "WSP Decode: Integers");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestIntegersL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestIntegersL()
+	{
+	const TUint8 KInt0[] = {0x80};
+	const TUint8 KInt1[] = {0x81};
+	const TUint8 KIntA[] = {0x8A};
+	const TUint8 KInt38[] = {0xB8};
+	const TUint8 KIntLong4321[] = {0x02, 0x43,0x21};
+	const TUint8 KIntLongABCDEF[] = {0x03, 0xAB,0xCD,0xEF};
+	const TUint8 KIntCorrupt[] = {0x01};
+	TBuf8<255> buf;
+	
+	buf.Copy(KInt0, sizeof(KInt0));
+	if (!Integer(buf, 0))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KInt1, sizeof(KIntA));
+	if (!Integer(buf, 1))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntA, sizeof(KIntA));
+	if (!Integer(buf, 0x0A))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KInt38, sizeof(KInt38));
+	if (!Integer(buf, 0x38))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KIntLong4321, sizeof(KIntLong4321));
+	if (!Integer(buf, 0x4321))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntLongABCDEF, sizeof(KIntLongABCDEF));
+	if (!Integer(buf, 0xABCDEF))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntCorrupt, sizeof(KIntCorrupt));
+	if (!Integer(buf,0, KErrCorrupt))
+		User::Leave(KErrGeneral);
+	}
+
+//* LongInt */
+
+TBool CWSPDecodeTest::LongInt(TPtrC8 aBuf, TUint32 aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	
+	TUint32 val;
+	success = dec.LongInt(val);
+	if (success < KErrNone && success == aErr)
+		return ETrue;
+	return val == aShouldBe;
+	}
+
+
+
+void CWSPDecodeTest::LongIntTestL()
+	{
+	_LIT(KTestText, "WSP Decode: LongInt");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestLongIntL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+
+void CWSPDecodeTest::TestLongIntL()
+	{
+	const TUint8 KIntLong0[] = {0x01, 0x00};
+	const TUint8 KIntLong4321[] = {0x02, 0x43,0x21};
+	const TUint8 KIntLongABCDEF[] = {0x03, 0xAB,0xCD,0xEF};
+	const TUint8 KIntLongABCDEF112233[] = {0x06, 0xAB,0xCD,0xEF, 0x11,0x22,0x33};
+	const TUint8 KIntTooLong110009ABCDEF112233[] = {0x0A, 0x11,0x00, 0x09, 0xAB,0xCD,0xEF, 0x11,0x22,0x33};
+	const TUint8 KIntCorrupt[] = {0x01};
+	TBuf8<255> buf;
+	buf.Copy(KIntLong0, sizeof(KIntLong0));
+	if (!LongInt(buf, 0))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntLong4321, sizeof(KIntLong4321));
+	if (!LongInt(buf, 0x4321))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntLongABCDEF, sizeof(KIntLongABCDEF));
+	if (!LongInt(buf, 0xABCDEF))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntLongABCDEF112233, sizeof(KIntLongABCDEF112233));
+	if (!LongInt(buf, 0xEF112233))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KIntTooLong110009ABCDEF112233, sizeof(KIntTooLong110009ABCDEF112233));
+	if (!LongInt(buf, 0x09ABCDEF, KErrCorrupt))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntCorrupt, sizeof(KIntCorrupt));
+	if (!LongInt(buf, 0, KErrCorrupt))
+		User::Leave(KErrGeneral);
+	}
+
+
+
+//* UintVar */
+
+TBool CWSPDecodeTest::UintVar(TPtrC8 aBuf, TUint32 aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	TUint32 val;
+	success = dec.UintVar(val);
+	if (success < KErrNone && success == aErr)
+		return ETrue;
+	return val == aShouldBe;
+	}
+
+
+void CWSPDecodeTest::UintVarsTestL()
+	{
+	_LIT(KTestText, "WSP Decode: UintVars");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestUintVarsL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestUintVarsL()
+	{
+	const TUint8 KUint0[] = {0x00};
+	const TUint8 KUint1[] = {0x01};
+	const TUint8 KUintA[] = {0x80,0x0A};
+	const TUint8 KUintFA[] = {0x81,0x7A};
+	const TUint8 KLenUintVAR4510[] = {0x81, 0x8A, 0x10};
+	const TUint8 KLenUintVARCorrupt[] = {0x8F, 0x81,0x8A,0x80,0x88};
+	const TUint8 KIntLongACorrupt[] = {0xF3, 0xAB,0xCD,0xEF};
+		
+	
+	TBuf8<255> buf;
+	
+	buf.Copy(KUint0, sizeof(KUint0));
+	if (!UintVar(buf, 0))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KUint1, sizeof(KUint1));
+	if (!UintVar(buf, 1))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KUintA, sizeof(KUintA));
+	if (!UintVar(buf, 0x0A))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KUintFA, sizeof(KUintFA));
+	if (!UintVar(buf, 0xFA))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KLenUintVAR4510, sizeof(KLenUintVAR4510));
+	if (!UintVar(buf, 0x4510))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KLenUintVARCorrupt, sizeof(KLenUintVARCorrupt));
+	if (!UintVar(buf, 0, KErrCorrupt))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KIntLongACorrupt, sizeof(KIntLongACorrupt));
+	if (!UintVar(buf, 0, KErrCorrupt))
+		User::Leave(KErrGeneral);
+	}
+
+
+
+
+//* VersionL */
+
+TBool CWSPDecodeTest::VersionL(RStringPool aPool, TPtrC8 aBuf, TPtrC8 aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	TBool retVal = EFalse;
+	RStringF val;
+	success = dec.VersionL(aPool,val);
+	CleanupClosePushL(val);
+	if (success < KErrNone && success == aErr)
+		retVal = ETrue;
+	else
+		{
+		RStringF should = aPool.OpenFStringL(aShouldBe);
+		retVal = val == should;
+		should.Close();
+		}
+	CleanupStack::PopAndDestroy(&val);
+	return retVal;
+	}
+
+void CWSPDecodeTest::VersionTestL()
+	{
+	_LIT(KTestText, "WSP Decode: Version");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestVersionL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+void CWSPDecodeTest::TestVersionL()
+	{
+	RStringPool pool; 
+	pool.OpenL();
+	CleanupClosePushL(pool);
+	const TUint8 KVersion1[] = {0x9F};
+	const TUint8 KVersion11[] = {0x91};
+	const TUint8 KVersion610[] = {0xEA};
+	const TUint8 KVersion73[] = {0xF3};
+	const TUint8 KVersion00[] = {0x80};
+	const TUint8 KVersionStr[] = {'1','.','9','9',0x00};
+	TBuf8<255> buf;
+	
+	buf.Copy(KVersion1, sizeof(KVersion1));
+	if (!VersionL(pool, buf, _L8("1")))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KVersion11, sizeof(KVersion11));
+	if (!VersionL(pool, buf, _L8("1.1")))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KVersion610, sizeof(KVersion610));
+	if (!VersionL(pool, buf, _L8("6.10")))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KVersion73, sizeof(KVersion73));
+	if (!VersionL(pool, buf, _L8("7.3")))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KVersion00, sizeof(KVersion00));
+	if (!VersionL(pool, buf, _L8("0.0")))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KVersionStr, sizeof(KVersionStr));
+	if (!VersionL(pool, buf, _L8("1.99")))
+		User::Leave(KErrGeneral);
+
+	CleanupStack::PopAndDestroy(&pool);
+	}
+
+
+//* Date */
+
+TBool CWSPDecodeTest::Date(TPtrC8 aBuf, TTime aShouldBe, TInt aErr)
+	{
+	TInt success;
+	TWspPrimitiveDecoder dec(aBuf);
+	TDateTime val;
+	success = dec.Date(val);
+	if (success < KErrNone && success == aErr)
+		return ETrue;
+
+	TTime time(val);
+	return time == aShouldBe;
+	}
+
+
+void CWSPDecodeTest::DateTestL()
+	{
+	_LIT(KTestText, "WSP Decode: Date");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestDateL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestDateL()
+	{
+	// 1 long, value 0
+	const TUint8 KDate0[] = {0x01, 0x00};
+	const TUint8 KDateAprl132001[] = {0x04,0x3A,0xD6,0x41,0x80};
+	const TUint8 KDateDec132003[] = {0x04,0x3F,0xE2,0x8D,0x84};
+	TBuf8<255> buf;
+	TDateTime dt(1970,EJanuary,0,0,0,0,0);
+	TTime time1(dt);
+	buf.Copy(KDate0, sizeof(KDate0));
+	if (!Date(buf, time1))
+		User::Leave(KErrGeneral);
+
+	TTime time2(dt);
+	time2 += TTimeIntervalSeconds(0x3AD64180);
+	buf.Copy(KDateAprl132001, sizeof(KDateAprl132001));
+	if (!Date(buf, time2))
+		User::Leave(KErrGeneral);
+
+	TTime time3(dt);
+	time3 += TTimeIntervalSeconds(0x3FE28D84);
+	buf.Copy(KDateDec132003, sizeof(KDateDec132003));
+	if (!Date(buf, time3))
+		User::Leave(KErrGeneral);
+	}
+
+
+TInt CWSPDecodeTest::SegmenterCommonL(RStringPool aPool, TPtrC8 aHdr)
+	{
+	TInt err;
+	TWspField fld;
+	
+	// Pre-condition to create WSP header segment: Open the string pool 
+	// with the string table. Else program will raise a panic stringtable:4 
+	// ( EStringTableNotFound )
+	aPool.OpenL ( WSPDummy::Table );
+	TWspHeaderSegmenter segger(aPool, WSPDummy::Table, aHdr);
+
+	while ((err = segger.NextL(fld)) == KErrNone)
+		{
+		fld.iHdrName.Close();
+		}
+	return err;
+	}
+
+TBool CWSPDecodeTest::SegmenterL(RStringPool aPool, TPtrC8 aHdr)
+	{
+	TInt err = SegmenterCommonL(aPool,aHdr);
+	if (err != KErrNotFound)
+		return EFalse;
+	return ETrue;
+	}
+
+TBool CWSPDecodeTest::SegmenterExpectCorruptL(RStringPool aPool, TPtrC8 aHdr)
+	{
+	TInt err = SegmenterCommonL(aPool,aHdr);
+	if (err != KErrCorrupt)
+		return EFalse;
+	return ETrue;
+	}
+
+void CWSPDecodeTest::SegmenterTestL()
+	{
+	_LIT(KTestText, "WSP Decode: Segmenter");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestSegmenterL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+void CWSPDecodeTest::TestSegmenterL()
+	{
+	TBuf8<255> buf;
+	RStringPool pool;
+	pool.OpenL();
+	CleanupClosePushL(pool);
+
+	// Test Headers
+	const TUint8 KAcceptAppVndWMLC[] = {0x80, 0x94};
+	const TUint8 KAcceptLanEngQ07[] = {0x82, 0x02, 0x99, 0x47};
+	const TUint8 KAcceptLanENSV[] = {0x82, 0x02, 0x83, 0xF0};
+	const TUint8 KDateThu23Apr1998134127GMT[] = {0x92, 0x04, 0x35, 0x3f, 0x45, 0x11};
+	const TUint8 KContentRangeBytes0499[] = {0x90, 0x03, 0x00, 0x88, 0x01};
+	const TUint8 KAcceptRangeNewRangeUnit[] = {0x84, 'n','e','w','-','r','a','n','g','e','-','u','n','i','t',0x00};
+	const TUint8 KXNewHdrFoo[] = {'X','-','n','e','w','-','H','e','a','d','e','r',0x00,'F','o','o',0x00};
+	const TUint8 KTwo[] = {0x80, 0x94, 0x81, 0x93};
+
+	const TUint8 KCorrupt1[] = {0x82};
+	buf.Copy(KCorrupt1, sizeof(KCorrupt1));
+	if (!SegmenterExpectCorruptL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	const TUint8 KCorrupt2[] = {0x82, 0x02};
+	buf.Copy(KCorrupt2, sizeof(KCorrupt2));
+	if (!SegmenterExpectCorruptL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KAcceptAppVndWMLC, sizeof(KAcceptAppVndWMLC));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KAcceptLanEngQ07, sizeof(KAcceptLanEngQ07));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KAcceptLanENSV, sizeof(KAcceptLanENSV));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KDateThu23Apr1998134127GMT, sizeof(KDateThu23Apr1998134127GMT));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KContentRangeBytes0499, sizeof(KContentRangeBytes0499));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KAcceptRangeNewRangeUnit, sizeof(KAcceptRangeNewRangeUnit));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+	
+	buf.Copy(KXNewHdrFoo, sizeof(KXNewHdrFoo));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	buf.Copy(KTwo, sizeof(KTwo));
+	if (!SegmenterL(pool, buf))
+		User::Leave(KErrGeneral);
+
+	CleanupStack::PopAndDestroy(&pool);
+	}
+
+/*
+
+void CWSPDecodeTest::XXXTestL()
+	{
+	_LIT(KTestText, "WSP Decode: XXX");
+	iTestHarness->StartTestL(KTestText);
+	TRAPD(error, TestXXXL());
+	iTestHarness->EndTest(error);
+	User::LeaveIfError(error);
+	}
+
+
+*/