applayerpluginsandutils/bookmarksupport/test/tbookmark.cpp
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/test/tbookmark.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,208 @@
+// Copyright (c) 2005-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 <bookmarkdatabase.h>
+#include "testutils.h"
+#include "tbookmarktests.h"
+
+_LIT(KTitle, "Bookmark Dll Tests");
+
+LOCAL_D RTest gTest(KTitle());
+
+LOCAL_D CTrapCleanup* gTheTrapCleanup;
+LOCAL_D CTestWrapper* gTestWrapper;
+
+const TInt KTestCleanupStack=0x500;
+
+const TInt KGeneralDelay = 2*1000*1000;
+_LIT ( KUninstallDbFiles, "c:\\private\\10202BE9\\persists\\*.cre" );
+_LIT ( KRefreshTestFolder, "Refresh Test Folder" );
+
+LOCAL_C void DoDbRemoveL ()
+	{
+	gTestWrapper->Next(_L("*** Removing bookmark database files ***"));
+	RFs fs;
+	User::LeaveIfError ( fs.Connect () );		
+	CleanupClosePushL ( fs );
+	CFileMan* fileMan = CFileMan::NewL ( fs );
+	CleanupStack::PushL ( fileMan );
+	
+	// Ensure all files are deletable.
+	fileMan->Attribs ( KUninstallDbFiles, KEntryAttArchive, KEntryAttReadOnly, TTime(0), CFileMan::ERecurse );
+	
+	// Delete the files.
+	fileMan->Delete ( KUninstallDbFiles );
+	
+	// Time for uninstall.	
+	User::After ( KGeneralDelay );
+	
+	CleanupStack::PopAndDestroy ( 2 ); // fileMan, fs	
+	}
+
+LOCAL_C void TestRbkDatabaseFnsWithNoRepFilesL ()
+	{		
+	DoDbRemoveL ();
+
+	gTestWrapper->Next(_L("Testing bookmarks with no repository file present"));
+
+	RBkDatabase db;
+	db.OpenL ( Bookmark::EVisibilityManager );
+	CleanupClosePushL ( db );
+	TRAPD ( err, db.RefreshL () );
+	gTestWrapper->TEST ( err == KErrNone );
+	TRAP ( err, db.OpenRootL () );
+	gTestWrapper->TEST ( err == KErrNone );
+	TInt ret = 0;
+	TRAP ( err, ret = db.DeleteIconL ( 1 ) );
+	gTestWrapper->TEST ( err == KErrNone );
+	gTestWrapper->TEST ( ret == KErrNotFound );
+	TRAP ( err, db.OpenHomeL () );
+	gTestWrapper->TEST ( err == KErrNotFound );
+	const TUid KMyUid1 = {0x111222};
+	TRAP ( err, ret = db.DeregisterDatabasePropertyL (KMyUid1) );
+	gTestWrapper->TEST ( err == KErrNone );
+	gTestWrapper->TEST ( ret == KErrNotFound );
+	TRAP ( err, ret = db.DeregisterFolderPropertyL (KMyUid1) );
+	gTestWrapper->TEST ( err == KErrNone );
+	gTestWrapper->TEST ( ret == KErrNotFound );
+	TRAP ( err, ret = db.DeregisterBookmarkPropertyL (KMyUid1) );
+	gTestWrapper->TEST ( err == KErrNone );
+	gTestWrapper->TEST ( ret == KErrNotFound );
+	
+	const TInt KMaxTestLength  = 60;	
+	TInt intValue;
+	TReal retReal = 0.0;
+	HBufC* retDesC16 = HBufC::NewLC(KMaxTestLength);
+	TPtr retPtr16 = retDesC16->Des();
+	HBufC8* retDesC8 = HBufC8::NewLC(KMaxTestLength * 2);
+	TPtr8 retPtr8 = retDesC8->Des();
+
+	TRAP ( err, db.GetCustomPropertyL (KMyUid1, intValue) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+	
+	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retReal) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+
+	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retPtr16) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+
+	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retPtr8) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+
+	TRAP ( err, db.SetCustomPropertyL (KMyUid1, intValue) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+	
+	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retReal) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+
+	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retPtr16) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+
+	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retPtr8) );
+	gTestWrapper->TEST ( ret == KErrNotFound );	
+	
+	CleanupStack::PopAndDestroy (3);	 // db, retDesC16, retDesC8
+	}
+
+LOCAL_C void DoRefreshTestL ()
+	{
+	DoDbRemoveL ();	
+	gTestWrapper->Next(_L("Testing the refreshing functionality of bookmarks"));	
+	
+	RBkDatabase db;
+	CleanupClosePushL ( db );
+	db.OpenL ();
+	
+	db.RefreshL ();
+	
+	RBkFolder root = db.OpenRootL ();
+	CleanupClosePushL ( root );
+	gTestWrapper->TEST ( root.Count() == 0 );
+	// Create a folder under root.
+	RBkFolder folder1 = db.CreateFolderL ( KRefreshTestFolder );
+	CleanupClosePushL ( folder1 );
+	db.CommitL ();
+	CleanupStack::PopAndDestroy (3); // db, root, folder1
+	
+	db.OpenL ();
+	CleanupClosePushL ( db );
+	
+	db.RefreshL ();
+	
+	TRAPD ( err, folder1 = db.OpenFolderL ( KRefreshTestFolder ) );
+	gTestWrapper->TEST ( err == KErrNone );
+
+	Bookmark::TItemId id = folder1.Id ();
+	folder1.Close ();
+	db.DeleteItemL ( id );
+	db.CommitL ();
+	CleanupStack::PopAndDestroy (); // db	
+	}
+
+LOCAL_C void DoTestsL()
+	{
+	TestRbkDatabaseFnsWithNoRepFilesL ();
+	DoRefreshTestL ();
+	DoFolderTestsL(gTestWrapper);
+	DoBookmarkTestsL(gTestWrapper);
+	DoNotifyTestsL(gTestWrapper);
+	DoDirtyTestsL(gTestWrapper);
+	}
+
+
+LOCAL_C void TestL()
+	{
+	gTestWrapper = CTestWrapper::NewLC(gTest);
+	gTestWrapper->Start(_L("@SYMTestCaseID IWS-APPPROTOCOLS-BOOKMARKS-TBOOKMARK-0001 test"));
+
+	TRAPD(ret,DoTestsL());
+	gTestWrapper->TESTE(ret==KErrNone, ret);
+
+	gTestWrapper->End();
+	CleanupStack::PopAndDestroy(gTestWrapper);
+	}
+
+LOCAL_C void setupCleanup()
+//
+// Initialise the cleanup stack.
+//
+    {
+	gTheTrapCleanup=CTrapCleanup::New();
+	gTest(gTheTrapCleanup!=NULL);
+	TRAPD(r,\
+		{\
+		for (TInt i=KTestCleanupStack;i>0;i--)\
+			CleanupStack::PushL((TAny*)0);\
+		CleanupStack::Pop(KTestCleanupStack);\
+		});
+	gTest(r==KErrNone);
+	}
+
+
+GLDEF_C TInt E32Main()
+    {
+	setupCleanup();
+	__UHEAP_MARK;
+	//
+
+	TRAPD(ret,TestL());
+	gTest(ret==KErrNone);
+	//
+
+	__UHEAP_MARKEND;
+	delete gTheTrapCleanup;
+	return KErrNone;
+    }
+