lowlevellibsandfws/apputils/tsrc/T_DESCA.CPP
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lowlevellibsandfws/apputils/tsrc/T_DESCA.CPP	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,277 @@
+// Copyright (c) 1997-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:
+// Started by DWW, April 1996
+// Tests descriptor arrays
+// 
+//
+
+#include <e32test.h>
+#include <badesca.h>
+
+LOCAL_D RTest test(_L("T_DESCA"));
+
+class TestDesca
+	{
+public:
+	void MainTestL(CDesCArray* aDescA);
+	void ComparisonTest(CDesCArray* aDescA1,CDesCArray* aDescA2);
+	void FoldTestL(CDesCArray* aDescA);
+	void MixableTestL();
+	void DoMixableTest(MDesCArray* aDescA);
+	void InSequenceTestL(CDesCArray* aDescA);
+    };
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0408
+@SYMTestCaseDesc        Tests for folded and non-folded find
+@SYMTestPriority        Medium
+@SYMTestActions         Tests by appending few descriptors and find the position for the target.
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::FoldTestL(CDesCArray* aDescA)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0408 Test folded and non-folded find "));
+	TPtrC target=_L("abcdefg");
+	aDescA->AppendL(target);
+	aDescA->AppendL(_L("aBcDeFg"));
+	aDescA->InsertL(0,_L("ABCDEFG"));
+	test(aDescA->Count()==3);
+	TInt pos=(-1);
+    aDescA->Find(target,pos);
+    test(pos==0);
+    aDescA->Find(target,pos,ECmpNormal);
+    test(pos==1);
+	test.Next(_L("Test reset"));
+	aDescA->Reset();
+	test(!aDescA->Count());
+	}
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0409
+@SYMTestCaseDesc        CDesCArray class functionality test
+@SYMTestPriority        Medium
+@SYMTestActions         Add month names to the descriptor array and tests with the find.
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::MainTestL(CDesCArray* aDescA)
+	{
+    TMonthName name;
+    test.Next(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0409 Add 12 month names "));
+    for (TInt ii=0; ii<12; ii++)
+        {
+        name.Set((TMonth)ii);
+        aDescA->AppendL(name);
+        }
+    test.Next(_L("Check 12 names exist"));
+    test(aDescA->Count()==12);
+    test.Next(_L("Print the 12 names"));
+    for (TInt jj=0; jj<12; jj++)
+        test.Printf((*aDescA)[jj]);
+    test.Printf(_L("\r\n"));
+    test.Next(_L("Find"));
+    for (TInt kk=3; kk<12; kk+=3)
+        {
+        name.Set((TMonth)kk);
+        TInt pos=0;
+        aDescA->Find(name,pos);
+        test(pos==kk);
+        }
+    test.Next(_L("Delete"));
+    aDescA->Delete(2);
+    aDescA->Delete(4);
+    aDescA->Delete(6);
+    test(aDescA->Count()==9);
+    test((*aDescA)[6]==name);
+    test.Next(_L("Sort"));
+    aDescA->Sort();
+    test(aDescA->Count()==9);
+    for (TInt ll=0; ll<9; ll++)
+        test.Printf((*aDescA)[ll]);
+    test.Printf(_L("\r\n"));
+	test.End();
+    }
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0410
+@SYMTestCaseDesc        Comparision of two CDesCArray objects test
+@SYMTestPriority        Medium
+@SYMTestActions         Check if two descriptor arrays are equal.
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::ComparisonTest(CDesCArray* aDescA1,CDesCArray* aDescA2)
+	{
+	test.Start(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0410 Test comparisons "));
+    TInt count=aDescA1->Count();
+    test(aDescA2->Count()==count);
+    for (TInt ii=0; ii<count; ii++)
+        test((*aDescA1)[ii]==(*aDescA2)[ii]);
+    test.End();
+    }
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0411
+@SYMTestCaseDesc        MDesCArray class functionality test
+@SYMTestPriority        Medium
+@SYMTestActions         Checks for the existence of 12 names
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::DoMixableTest(MDesCArray* aDescA)
+	{
+    test.Next(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0411 Check 12 names exist "));
+    test(aDescA->MdcaCount()==12);
+    test.Next(_L("Print the 12 names"));
+    for (TInt jj=0; jj<12; jj++)
+        test.Printf(aDescA->MdcaPoint(jj));
+    test.Printf(_L("\r\n"));
+	delete(aDescA);
+    }
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0412
+@SYMTestCaseDesc        Tests for CDesCArray sequences
+@SYMTestPriority        Medium
+@SYMTestActions         Checks for the sequence of the literals.
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::InSequenceTestL(CDesCArray* aDescA)
+	{
+    test.Next(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0412 In Sequence Tests "));
+	aDescA->Reset();
+	TPtrC hello(_S("Hello"));
+	TPtrC bye(_S("Bye"));
+	TPtrC world(_S("World"));
+	TPtrC middle(_S("middle"));
+	TPtrC extra(_S("extra"));
+	TBuf<32> buffer;
+	TInt pos;
+	aDescA->AppendL(hello);
+	aDescA->AppendL(bye);
+	aDescA->AppendL(world);
+	aDescA->AppendL(middle);
+    test(aDescA->MdcaPoint(0)==hello);
+    test(aDescA->MdcaPoint(2)==world);
+	//
+	aDescA->Sort(ECmpFolded);
+	buffer=aDescA->MdcaPoint(2);
+    test(buffer==middle);
+	test(aDescA->Find(middle,pos,ECmpFolded)==KErrNone);
+	test(pos==2);
+	test(aDescA->FindIsq(middle,pos,ECmpFolded)==KErrNone);
+	test(pos==2);
+	test(aDescA->FindIsq(middle,pos,ECmpNormal)==KErrNone); // !! should this fail for non-sorted array??
+//	test(pos==??);
+	pos=aDescA->InsertIsqL(extra,ECmpFolded);
+	test(pos==1);
+	TRAP(pos,aDescA->InsertIsqL(extra,ECmpFolded));
+	test(pos==KErrAlreadyExists);
+	pos=aDescA->InsertIsqAllowDuplicatesL(extra,ECmpFolded);
+	test(pos==2);
+	aDescA->Delete(pos--);
+	aDescA->Delete(pos);
+	test(aDescA->MdcaCount()==4);
+	//
+	//	Different sort order because of case
+	aDescA->Sort(ECmpNormal);
+	buffer=aDescA->MdcaPoint(2);
+    test(buffer==world);
+	test(aDescA->Find(world,pos,ECmpNormal)==KErrNone);
+	test(pos==2);
+	test(aDescA->FindIsq(world,pos,ECmpNormal)==KErrNone);
+	test(pos==2);
+    }
+
+class CMonthNameArray : public CArrayFixFlat<TMonthName>, public MDesCArray
+	{
+public:
+	CMonthNameArray() :CArrayFixFlat<TMonthName>(4) { }
+private:
+	TInt MdcaCount() const { return(Count()); }
+	TPtrC MdcaPoint(TInt aIndex) const { return((*this)[aIndex]); }
+	};
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0413
+@SYMTestCaseDesc        Tests for mixability
+@SYMTestPriority        Medium
+@SYMTestActions         Tests the mix of setting and appending of month names to the descriptor array
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void TestDesca::MixableTestL()
+	{
+	test.Start(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0413 Test mixability "));
+	CMonthNameArray* array=new(ELeave) CMonthNameArray;
+    TMonthName name;
+    test.Next(_L("Add 12 month names"));
+    for (TInt ii=0; ii<12; ii++)
+        {
+        name.Set((TMonth)ii);
+        array->AppendL(name);
+        }
+	DoMixableTest(array);
+	test.End();
+	}
+
+/**
+@SYMTestCaseID          SYSLIB-BAFL-CT-0414
+@SYMTestCaseDesc        Descriptor arrays tests
+@SYMTestPriority        Medium
+@SYMTestActions         Executes all the CDesCArray tests
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ                 REQ0000
+*/
+void DoTestsL()
+    {
+	TestDesca t;
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-BAFL-CT-0414 Test CDesCArrayFlat "));
+    CDesCArrayFlat* descFlatArray=new(ELeave) CDesCArrayFlat(4);
+	TRAPD(errCode, t.FoldTestL(descFlatArray));
+	test(errCode==KErrNone);
+	TRAP(errCode, t.MainTestL(descFlatArray));
+	test(errCode==KErrNone);
+	test.Start(_L("Test CDesCArraySeg"));
+    CDesCArraySeg* descSegArray=new(ELeave) CDesCArraySeg(3);
+	TRAP(errCode, t.FoldTestL(descSegArray));
+	test(errCode==KErrNone);
+	TRAP(errCode, t.MainTestL(descSegArray));
+	test(errCode==KErrNone);
+    t.ComparisonTest(descFlatArray,descSegArray);
+	TRAP(errCode, t.InSequenceTestL(descSegArray));
+	test(errCode==KErrNone);
+	TRAP(errCode, t.InSequenceTestL(descFlatArray));
+	test(errCode==KErrNone);
+    delete(descFlatArray);
+    delete(descSegArray);
+	t.MixableTestL();
+    }
+
+GLDEF_C TInt E32Main()
+	{
+    __UHEAP_MARK;
+    CTrapCleanup *cleanup=CTrapCleanup::New();
+	test.Title();
+	test.Start(_L(" Testing descriptor arrays "));
+    TRAPD(err,DoTestsL());
+    test(err==KErrNone);
+	test.End();
+    test.Close();
+    delete cleanup;
+    __UHEAP_MARKEND;
+	return(0);
+    }