applayerpluginsandutils/bookmarksupport/test/t_cbookmarkbase.cpp
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/test/t_cbookmarkbase.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,109 @@
+// 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 "bkmrk.h"
+#include "bkmrkfolder.h"
+#include "bkmrkdb.h"
+#include "testutils.h"
+
+LOCAL_D CTestWrapper* gTestWrapper;
+
+_LIT(KFilename, "t_cbookmarkbase.cpp");
+
+_LIT(KTxtNewFolder, "New Folder 1");
+
+_LIT(KTxtItem1, "Bookmark Item 1");
+
+const Bookmark::TItemId KItemId = 0x00000123;
+
+LOCAL_D void GeneralTestsL()
+	{
+	CBookmarkDb* db = CBookmarkDb::NewL(Bookmark::EVisibilityManager, NULL);
+	CleanupStack::PushL(db);
+	CBookmark& bookmark = db->CreateBookmarkL(db->RootL());
+
+	gTestWrapper->Next(_L("[CBookmarkBase tests] id"));
+	gTestWrapper->TEST(bookmark.Id() != KItemId);
+	bookmark.SetId(KItemId);
+	gTestWrapper->TEST(bookmark.Id() == KItemId);
+
+	gTestWrapper->Next(_L("[CBookmarkBase tests] reference counting"));
+	gTestWrapper->TEST(bookmark.RefCount() == 0);
+	bookmark.IncRefCount();
+	gTestWrapper->TEST(bookmark.RefCount() == 1);
+	bookmark.DecRefCount();
+	gTestWrapper->TEST(bookmark.RefCount() == 0);
+	bookmark.IncRefCount();
+	bookmark.IncRefCount();
+	bookmark.IncRefCount();
+	gTestWrapper->TEST(bookmark.RefCount() == 3);
+	bookmark.DecRefCount();
+	bookmark.DecRefCount();
+	bookmark.DecRefCount();
+	gTestWrapper->TEST(bookmark.RefCount() == 0);
+	
+	gTestWrapper->Next(_L("[CBookmarkBase tests] parent"));
+	CBookmarkFolder& folder = db->CreateFolderL(KTxtNewFolder, db->RootL());
+	gTestWrapper->TEST(bookmark.Parent()->Id() == db->RootL().Id());
+	bookmark.SetParentL(folder);
+	gTestWrapper->TEST(bookmark.Parent()->Id() == folder.Id());
+	bookmark.SetParentL(db->RootL());
+	gTestWrapper->TEST(bookmark.Parent()->Id() == db->RootL().Id());
+
+	gTestWrapper->Next(_L("[CBookmarkBase tests] title"));
+	bookmark.SetTitleL(KTxtItem1);
+	gTestWrapper->TEST(bookmark.Title().Compare(KTxtItem1) == 0);
+
+	gTestWrapper->Next(_L("[CBookmarkBase tests] public and writable"));
+	gTestWrapper->TEST(bookmark.IsPublic());
+	
+	TInt err = KErrNone;
+	gTestWrapper->TEST(bookmark.IsPublic());
+	
+	gTestWrapper->TEST(bookmark.IsWritable());
+	bookmark.SetWritableL(EFalse);
+	gTestWrapper->TEST(!bookmark.IsWritable());
+	// test that write operations work as application is WriteDeviceData
+	TRAP(err, bookmark.SetTitleL(KTxtItem1));
+	gTestWrapper->TEST(err == KErrNone);
+	TRAP(err, bookmark.SetPublicL(ETrue));
+	gTestWrapper->TEST(err == KErrNone);
+	bookmark.SetWritableL(ETrue);
+	
+	gTestWrapper->Next(_L("[CBookmarkBase tests] handle"));
+	gTestWrapper->TEST(bookmark.RefCount() == 0);
+	RBkFolder root = db->RootL().OpenFolder();
+	CleanupClosePushL(root);
+	RBkNode handle = root.OpenItemL(0);
+	CleanupClosePushL(handle);
+	
+	gTestWrapper->TEST(bookmark.RefCount() == 1);
+	gTestWrapper->TEST(handle.Type() == bookmark.Type());
+	gTestWrapper->TEST(handle.Title() == bookmark.Title());
+	
+	CleanupStack::PopAndDestroy(&handle);
+	CleanupStack::PopAndDestroy(&root);
+
+	CleanupStack::PopAndDestroy(db);
+	}
+
+void DoCBookmarkBaseUnitL(CTestWrapper* aTest)
+	{
+	gTestWrapper = aTest;
+	gTestWrapper->SetFile(KFilename);
+	gTestWrapper->Next(_L("*** CBookmarkBase tests ***"));
+
+	GeneralTestsL();
+	}