kerneltest/e32test/buffer/t_bflat.cpp
changeset 0 a41df078684a
child 43 c1f20ce4abcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/buffer/t_bflat.cpp	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,173 @@
+// Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "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:
+// e32test\buffer\t_bflat.cpp
+// Overview:
+// Test all aspects of the CBufFlat class.
+// API Information:
+// CBufFlat.
+// Details:
+// - Test all the operations of the class and see if methods are implemented -- 
+// including NewL, Reset, Size, Set Reserve, InsertL, Delete, Ptr, Read, Write and Compress.
+// - Test CBufFlat constructor is as expected.
+// - Insert data into the flat storage dynamic buffer and verify that InsertL method
+// is as expected.
+// - Delete all data in buffer using Reset() method  and check size is zero.
+// - Test Ptr, Free, Size, Backptr and SetReserveL methods work as expected.
+// - Insert data into the buffer, delete some data from the beginning, middle, end and
+// check for data is as expected. 
+// - Verify the data in the buffer before and after Compress and Read methods is as expected.
+// Platforms/Drives/Compatibility:
+// All 
+// Assumptions/Requirement/Pre-requisites:
+// Failures and causes:
+// Base Port information:
+// 
+//
+
+#include <e32test.h>
+
+LOCAL_D RTest test(_L("T_BFLAT"));
+
+class TestCBufFlat
+	{
+public:
+	void Test1();  // Tests all operations of the class.
+	void Test2();	// Test public methods of class.
+	};
+
+class TestCBufSeg
+	{
+public:
+	void Test1(); 	// Test all operations of the class.
+	};
+
+GLDEF_C void TestCBufFlat::Test1()
+//
+// Tests all operations of the class.
+//
+	{
+	TText* tp;
+	test.Start(_L("Test all operations of CBufFlat"));
+	CBufFlat* bf=(CBufFlat*)CBufFlat::NewL(100);
+	bf->Reset();
+	bf->Size();
+	bf->SetReserveL(50); // Panics if 50 < iSize
+	bf->InsertL(0,TPtrC8((TText8*)"Hello World"));
+	bf->Delete(0,5);
+	tp=(TText*)bf->Ptr(3).Ptr();
+	tp=(TText*)bf->BackPtr(3).Ptr();
+	bf->Read(2,tp,2);
+	bf->Write(2,tp,2);
+	bf->Compress();
+	test.End();
+	}
+
+GLDEF_C void TestCBufFlat::Test2()
+//
+// Test all the methods of the class
+//
+	{
+
+	test.Start(_L("Test constructor of CBufFlat"));
+	CBufFlat* bf1=(CBufFlat*)CBufFlat::NewL(20);
+	test(bf1->Size()==0);
+	test(bf1->Ptr(0).Length()==0);
+
+	test.Next(_L("Insert, Reset, Ptr, Free, Size"));
+	TBuf8<0x40> tb1=(TText8*)"Hello World";
+	TBuf8<0x40> tb2=(TText8*)"This string is greater than twenty characters long";
+	TBuf8<0x40> tb3;
+	bf1->InsertL(0,tb1); // Insert - no expand
+	test(bf1->Ptr(0)==tb1);
+	test(bf1->Size()==tb1.Size());
+	test(bf1->Ptr(0).Length()==tb1.Size());
+	bf1->InsertL(bf1->Size(),tb2); // Insert and expand
+	test(bf1->Size()==(tb1.Size()+tb2.Size()));
+	test(bf1->Ptr(0).Left(tb1.Length())==tb1);
+	test(bf1->Ptr(tb1.Length())==tb2);
+	bf1->InsertL(bf1->Size(),tb3);	// Insert a null string
+	test(bf1->Size()==(tb1.Size()+tb2.Size()));
+	test(bf1->Ptr(0).Left(tb1.Length())==tb1);
+	test(bf1->Ptr(tb1.Length())==tb2);
+	bf1->Reset(); // Reset
+	test(bf1->Size()==0);
+	bf1->InsertL(0,tb1); // Insert into a string
+	bf1->InsertL(5,tb1);
+	bf1->Delete(16,bf1->Size()-16);
+	test(bf1->Ptr(0)==TPtrC8((TText8*)"HelloHello World"));
+//
+	test.Next(_L("SetReserve"));
+	bf1->SetReserveL(50); // SetReserve > 0
+	test(bf1->Size()==16);
+	test(bf1->Ptr(0).Length()==16);
+	bf1->Reset();
+	bf1->SetReserveL(0); // SetReserve = 0
+	test(bf1->Size()==0);
+	test(bf1->Ptr(0).Length()==0);
+//
+	test.Next(_L("Delete, BackPtr"));
+	bf1->InsertL(0,tb1);
+	bf1->Delete(6,1); // Delete Middle
+	test(bf1->Ptr(0)==TPtrC8((TText8*)"Hello orld"));
+	test(bf1->Size()==10);
+	bf1->Delete(9,1); // Delete End
+	test(bf1->Ptr(bf1->Size()).Length()==0);
+	bf1->InsertL(bf1->Size(),tb3);
+	test(bf1->Ptr(0)==TPtrC8((TText8*)"Hello orl"));
+	bf1->Delete(0,2); // Delete Start / BackPtr
+	test(bf1->BackPtr(5)==TPtrC8((TText8*)"llo o"));
+	test(bf1->Size()==7);
+//
+	test.Next(_L("Write, Compress"));
+	bf1->Write(1,tb1,5);
+	test(bf1->Ptr(0)==TPtrC8((TText8*)"lHellol"));
+	test(bf1->Size()==7);
+	bf1->Compress(); // Compress
+	test(bf1->Size()==7);
+
+	test.Next(_L("Read"));
+	bf1->Read(4,tb1,bf1->Size()-4);
+	test(tb1.Size()==3);
+	test(tb1==TPtrC8((TText8*)"lol"));
+//
+	test.End();
+	}
+
+LOCAL_C void test_CBufFlat()
+//
+// Test the BufFlat class.
+//
+	{
+	TestCBufFlat b;
+
+	test.Start(_L("All operations"));
+	b.Test1();
+	test.Next(_L("All methods"));
+	b.Test2();
+//
+	test.End();
+	}
+
+GLDEF_C TInt E32Main()
+//
+// Test the ADT Varray types.
+//
+	{
+	test.Title();
+	test.Start(_L("class CBufFlat"));
+	test_CBufFlat();
+	test.End();
+	return(0);
+	}
+