diff -r 000000000000 -r 08ec8eefde2f persistentstorage/dbms/tdbms/t_dbclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/dbms/tdbms/t_dbclient.cpp Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,324 @@ +// Copyright (c) 1998-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: +// + +#include +#include +#include + +LOCAL_D CTrapCleanup* TheTrapCleanup; + +LOCAL_D RTest test(_L("t_dbclient")); + +LOCAL_D const TPtrC KColName(_S("A_column_name")); +LOCAL_D TDbColName VarName(_S("Column_A")); + +const TInt KTestCleanupStack=0x20; +const TInt KLeaveError=-4000; +const TInt KColCount=26; + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0586 +@SYMTestCaseDesc Tests for TDbCol class +@SYMTestPriority Medium +@SYMTestActions Tests for column name and type after creating them. +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestTDbCol() + { + test.Start(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0586 Testing TDbCol ")); + TDbCol c1(KColName,EDbColText8); + test(c1.iName==KColName); + test(c1.iType==EDbColText8); + test(c1.iMaxLength==KDbDefaultTextColLength); + test(c1.iAttributes==0); + TDbCol c2(KColName,EDbColText8,1234); + test(c2.iName==KColName); + test(c2.iType==EDbColText8); + test(c2.iMaxLength==1234); + test(c2.iAttributes==0); + TDbCol c3(KColName,EDbColBit); + test(c3.iName==KColName); + test(c3.iType==EDbColBit); + test(c3.iMaxLength==KDbUndefinedLength); + test(c3.iAttributes==0); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0587 +@SYMTestCaseDesc CDbColSet class test +@SYMTestPriority Medium +@SYMTestActions Tests for creation of a CDbColSet column set object + Tests for adding and removing columns to the column set +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestCDbColSetL() + { + TInt r; + test.Start(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0587 ctor and dtor ")); + CDbColSet* c=CDbColSet::NewL(); // assume it will succeed + test(c!=NULL); + test (c->Count()==0); + delete c; + __UHEAP_CHECK(0); +#if defined(_DEBUG) + __UHEAP_FAILNEXT(1); + TRAP(r,c=CDbColSet::NewL()); + test(r!=KErrNone); + __UHEAP_CHECK(0); +#endif + c=CDbColSet::NewLC(); + test(c!=NULL); + CleanupStack::PopAndDestroy(); + __UHEAP_CHECK(0); + c=CDbColSet::NewL(); + TDbCol col(KColName,EDbColText,20); + c->AddL(col); + delete c; + __UHEAP_CHECK(0); + TRAP(r,c=CDbColSet::NewLC();c->AddL(col);User::Leave(KLeaveError);); + test(r==KLeaveError); + __UHEAP_CHECK(0); +// + test.Next(_L("Add columns")); + c=CDbColSet::NewLC(); + TInt ii; + for (ii=1;ii<=KColCount;ii++) + { + VarName[7]=(TUint8)('A'-1+ii); + test(c->Col(VarName)==NULL); + TDbCol column(VarName,EDbColInt32); + c->AddL(column); + test(c->Count()==ii); + test(c->ColNo(VarName)!=KDbNullColNo); + test(c->Col(VarName)!=NULL); + } + test.Next(_L("Check columns: operator[] and ColNo()")); + for (ii=1;ii<=KColCount;ii++) + { + const TDbCol& col=(*c)[ii]; + test(c->ColNo(col.iName)==ii); + } + test.Next(_L("Remove columns")); + for (ii=1;ii<=KColCount;ii+=2) + { + VarName[7]=(TUint8)('A'-1+ii); + c->Remove(VarName); + } + test(c->Count()==13); + test.Next(_L("Clear")); + c->Clear(); + test(c->Count()==0); + CleanupStack::PopAndDestroy(); + __UHEAP_CHECK(0); + test.End(); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0588 +@SYMTestCaseDesc Tests for TDbColSetIter class +@SYMTestPriority Medium +@SYMTestActions Tests for iterate over the contents of a column set +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestTDbColSetIterL() + { + test.Next(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0588 Testing TDbColSetIter ")); + CDbColSet* c=CDbColSet::NewLC(); + TInt ii; + for (ii=0;iiAddL(TDbCol(VarName,EDbColInt32)); + } + TDbColSetIter iter1(*c); + TDbColSetIter iter2(iter1); + ii=0; + for (;;) + { + test(iter1.Col()==++ii); + test(iter1.operator->()==&iter1.operator*()); + test(&*iter1++==&*iter2); + if (!iter1) + break; + test(&*iter1==&*++iter2); + } + test(!++iter2); + test(ii==KColCount); + CleanupStack::PopAndDestroy(); + __UHEAP_CHECK(0); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0589 +@SYMTestCaseDesc Tests for TDbCol,CDbColSet,TDbColSetIter classes +@SYMTestPriority Medium +@SYMTestActions Executes the tests of TDbCol,CDbColSet,TDbColSetIter +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestColSetL() + { + test.Next(_L("@SYMTestCaseID:SYSLIB-DBMS-CT-0589 ")); + TestTDbCol(); + test.Next(_L("Testing CDbColSet")); + TestCDbColSetL(); + TestTDbColSetIterL(); + test.End(); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0590 +@SYMTestCaseDesc Tests for TDbKeyCol class +@SYMTestPriority Medium +@SYMTestActions Attempts to test for attributes of the key column together. +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestTDbKeyCol() + { + test.Next(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0590 Testing TDbKeyCol ")); + TDbKeyCol c1(KColName); + test(c1.iName==KColName); + test(c1.iOrder==TDbKeyCol::EAsc); + TDbKeyCol c2(KColName,TDbKeyCol::EDesc); + test(c2.iName==KColName); + test(c2.iOrder==TDbKeyCol::EDesc); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0591 +@SYMTestCaseDesc Tests the CDbKey class +@SYMTestPriority Medium +@SYMTestActions Tests for the new CDbKey creation using NewL and NewLC functions +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestCDbKeyL() + { + TInt r; + test.Start(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0591 ctor and dtor ")); + CDbKey* k=CDbKey::NewL(); // assume it will succeed + test(k!=NULL); + delete k; + __UHEAP_CHECK(0); +#if defined(_DEBUG) + __UHEAP_FAILNEXT(1); + TRAP(r,k=CDbKey::NewL()); + test(r!=KErrNone); + __UHEAP_CHECK(0); +#endif + k=CDbKey::NewLC(); + test(k!=NULL); + CleanupStack::PopAndDestroy(); + __UHEAP_CHECK(0); + k=CDbKey::NewL(); + k->AddL(VarName); + delete k; + __UHEAP_CHECK(0); + TRAP(r,k=CDbKey::NewLC();k->AddL(KColName);User::Leave(KLeaveError);); + test(r==KLeaveError); + __UHEAP_CHECK(0); +// + test.Next(_L("Add key columns")); + k=CDbKey::NewLC(); + TInt ii; + for (ii=1;ii<=KColCount;++ii) + { + VarName[7]=(TUint8)('A'-1+ii); + k->AddL(VarName); + test(k->Count()==ii); + test((*k)[ii-1].iName==VarName); + } + test.Next(_L("Remove key columns")); + for (ii=1;ii<=KColCount;ii+=2) + { + VarName[7]=TUint8('A'-1+ii); + k->Remove(VarName); + } + test(k->Count()==KColCount/2); + test.Next(_L("Clear")); + k->Clear(); + test(k->Count()==0); + test.Next(_L("Unique flag")); + test(!k->IsUnique()); + k->MakeUnique(); + test(k->IsUnique()); + k->MakeUnique(); + test(k->IsUnique()); + CleanupStack::PopAndDestroy(); + __UHEAP_CHECK(0); + test.End(); + } + +/** +@SYMTestCaseID SYSLIB-DBMS-CT-0592 +@SYMTestCaseDesc Tests the TDbKeyCol,CDbKey classes +@SYMTestPriority Medium +@SYMTestActions Executes the TDbKeyCol,CDbKey tests +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +LOCAL_C void TestKeyL() + { + test.Start(_L(" @SYMTestCaseID:SYSLIB-DBMS-CT-0592 ")); + TestTDbKeyCol(); + test.Next(_L("Testing CDbKey")); + TestCDbKeyL(); + test.End(); + } + + +LOCAL_C void setupCleanup() +// +// Initialise the cleanup stack. +// + { + TheTrapCleanup=CTrapCleanup::New(); + test(TheTrapCleanup!=NULL); + TRAPD(r,\ + {\ + for (TInt i=KTestCleanupStack;i>0;i--)\ + CleanupStack::PushL((TAny*)0);\ + CleanupStack::Pop(KTestCleanupStack);\ + }); + test(r==KErrNone); + } + +GLDEF_C TInt E32Main() +// +// Test Client-side objects +// + { + test.Title(); + setupCleanup(); + __UHEAP_MARK; +// + test.Start(_L("Test the Column Set")); + TRAPD(r,TestColSetL();) + test(r==KErrNone); + __UHEAP_CHECK(0); + test.Next(_L("Test the Key")); + TRAP(r,TestKeyL();) + test(r==KErrNone); + test.End(); +// + __UHEAP_MARKEND; + delete TheTrapCleanup; + test.Close(); + return 0; + }