applayerpluginsandutils/bookmarksupport/test/tbookmark.cpp
changeset 0 b16258d2340f
equal deleted inserted replaced
-1:000000000000 0:b16258d2340f
       
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include <bookmarkdatabase.h>
       
    17 #include "testutils.h"
       
    18 #include "tbookmarktests.h"
       
    19 
       
    20 _LIT(KTitle, "Bookmark Dll Tests");
       
    21 
       
    22 LOCAL_D RTest gTest(KTitle());
       
    23 
       
    24 LOCAL_D CTrapCleanup* gTheTrapCleanup;
       
    25 LOCAL_D CTestWrapper* gTestWrapper;
       
    26 
       
    27 const TInt KTestCleanupStack=0x500;
       
    28 
       
    29 const TInt KGeneralDelay = 2*1000*1000;
       
    30 _LIT ( KUninstallDbFiles, "c:\\private\\10202BE9\\persists\\*.cre" );
       
    31 _LIT ( KRefreshTestFolder, "Refresh Test Folder" );
       
    32 
       
    33 LOCAL_C void DoDbRemoveL ()
       
    34 	{
       
    35 	gTestWrapper->Next(_L("*** Removing bookmark database files ***"));
       
    36 	RFs fs;
       
    37 	User::LeaveIfError ( fs.Connect () );		
       
    38 	CleanupClosePushL ( fs );
       
    39 	CFileMan* fileMan = CFileMan::NewL ( fs );
       
    40 	CleanupStack::PushL ( fileMan );
       
    41 	
       
    42 	// Ensure all files are deletable.
       
    43 	fileMan->Attribs ( KUninstallDbFiles, KEntryAttArchive, KEntryAttReadOnly, TTime(0), CFileMan::ERecurse );
       
    44 	
       
    45 	// Delete the files.
       
    46 	fileMan->Delete ( KUninstallDbFiles );
       
    47 	
       
    48 	// Time for uninstall.	
       
    49 	User::After ( KGeneralDelay );
       
    50 	
       
    51 	CleanupStack::PopAndDestroy ( 2 ); // fileMan, fs	
       
    52 	}
       
    53 
       
    54 LOCAL_C void TestRbkDatabaseFnsWithNoRepFilesL ()
       
    55 	{		
       
    56 	DoDbRemoveL ();
       
    57 
       
    58 	gTestWrapper->Next(_L("Testing bookmarks with no repository file present"));
       
    59 
       
    60 	RBkDatabase db;
       
    61 	db.OpenL ( Bookmark::EVisibilityManager );
       
    62 	CleanupClosePushL ( db );
       
    63 	TRAPD ( err, db.RefreshL () );
       
    64 	gTestWrapper->TEST ( err == KErrNone );
       
    65 	TRAP ( err, db.OpenRootL () );
       
    66 	gTestWrapper->TEST ( err == KErrNone );
       
    67 	TInt ret = 0;
       
    68 	TRAP ( err, ret = db.DeleteIconL ( 1 ) );
       
    69 	gTestWrapper->TEST ( err == KErrNone );
       
    70 	gTestWrapper->TEST ( ret == KErrNotFound );
       
    71 	TRAP ( err, db.OpenHomeL () );
       
    72 	gTestWrapper->TEST ( err == KErrNotFound );
       
    73 	const TUid KMyUid1 = {0x111222};
       
    74 	TRAP ( err, ret = db.DeregisterDatabasePropertyL (KMyUid1) );
       
    75 	gTestWrapper->TEST ( err == KErrNone );
       
    76 	gTestWrapper->TEST ( ret == KErrNotFound );
       
    77 	TRAP ( err, ret = db.DeregisterFolderPropertyL (KMyUid1) );
       
    78 	gTestWrapper->TEST ( err == KErrNone );
       
    79 	gTestWrapper->TEST ( ret == KErrNotFound );
       
    80 	TRAP ( err, ret = db.DeregisterBookmarkPropertyL (KMyUid1) );
       
    81 	gTestWrapper->TEST ( err == KErrNone );
       
    82 	gTestWrapper->TEST ( ret == KErrNotFound );
       
    83 	
       
    84 	const TInt KMaxTestLength  = 60;	
       
    85 	TInt intValue;
       
    86 	TReal retReal = 0.0;
       
    87 	HBufC* retDesC16 = HBufC::NewLC(KMaxTestLength);
       
    88 	TPtr retPtr16 = retDesC16->Des();
       
    89 	HBufC8* retDesC8 = HBufC8::NewLC(KMaxTestLength * 2);
       
    90 	TPtr8 retPtr8 = retDesC8->Des();
       
    91 
       
    92 	TRAP ( err, db.GetCustomPropertyL (KMyUid1, intValue) );
       
    93 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
    94 	
       
    95 	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retReal) );
       
    96 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
    97 
       
    98 	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retPtr16) );
       
    99 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   100 
       
   101 	TRAP ( err, db.GetCustomPropertyL (KMyUid1, retPtr8) );
       
   102 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   103 
       
   104 	TRAP ( err, db.SetCustomPropertyL (KMyUid1, intValue) );
       
   105 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   106 	
       
   107 	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retReal) );
       
   108 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   109 
       
   110 	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retPtr16) );
       
   111 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   112 
       
   113 	TRAP ( err, db.SetCustomPropertyL (KMyUid1, retPtr8) );
       
   114 	gTestWrapper->TEST ( ret == KErrNotFound );	
       
   115 	
       
   116 	CleanupStack::PopAndDestroy (3);	 // db, retDesC16, retDesC8
       
   117 	}
       
   118 
       
   119 LOCAL_C void DoRefreshTestL ()
       
   120 	{
       
   121 	DoDbRemoveL ();	
       
   122 	gTestWrapper->Next(_L("Testing the refreshing functionality of bookmarks"));	
       
   123 	
       
   124 	RBkDatabase db;
       
   125 	CleanupClosePushL ( db );
       
   126 	db.OpenL ();
       
   127 	
       
   128 	db.RefreshL ();
       
   129 	
       
   130 	RBkFolder root = db.OpenRootL ();
       
   131 	CleanupClosePushL ( root );
       
   132 	gTestWrapper->TEST ( root.Count() == 0 );
       
   133 	// Create a folder under root.
       
   134 	RBkFolder folder1 = db.CreateFolderL ( KRefreshTestFolder );
       
   135 	CleanupClosePushL ( folder1 );
       
   136 	db.CommitL ();
       
   137 	CleanupStack::PopAndDestroy (3); // db, root, folder1
       
   138 	
       
   139 	db.OpenL ();
       
   140 	CleanupClosePushL ( db );
       
   141 	
       
   142 	db.RefreshL ();
       
   143 	
       
   144 	TRAPD ( err, folder1 = db.OpenFolderL ( KRefreshTestFolder ) );
       
   145 	gTestWrapper->TEST ( err == KErrNone );
       
   146 
       
   147 	Bookmark::TItemId id = folder1.Id ();
       
   148 	folder1.Close ();
       
   149 	db.DeleteItemL ( id );
       
   150 	db.CommitL ();
       
   151 	CleanupStack::PopAndDestroy (); // db	
       
   152 	}
       
   153 
       
   154 LOCAL_C void DoTestsL()
       
   155 	{
       
   156 	TestRbkDatabaseFnsWithNoRepFilesL ();
       
   157 	DoRefreshTestL ();
       
   158 	DoFolderTestsL(gTestWrapper);
       
   159 	DoBookmarkTestsL(gTestWrapper);
       
   160 	DoNotifyTestsL(gTestWrapper);
       
   161 	DoDirtyTestsL(gTestWrapper);
       
   162 	}
       
   163 
       
   164 
       
   165 LOCAL_C void TestL()
       
   166 	{
       
   167 	gTestWrapper = CTestWrapper::NewLC(gTest);
       
   168 	gTestWrapper->Start(_L("@SYMTestCaseID IWS-APPPROTOCOLS-BOOKMARKS-TBOOKMARK-0001 test"));
       
   169 
       
   170 	TRAPD(ret,DoTestsL());
       
   171 	gTestWrapper->TESTE(ret==KErrNone, ret);
       
   172 
       
   173 	gTestWrapper->End();
       
   174 	CleanupStack::PopAndDestroy(gTestWrapper);
       
   175 	}
       
   176 
       
   177 LOCAL_C void setupCleanup()
       
   178 //
       
   179 // Initialise the cleanup stack.
       
   180 //
       
   181     {
       
   182 	gTheTrapCleanup=CTrapCleanup::New();
       
   183 	gTest(gTheTrapCleanup!=NULL);
       
   184 	TRAPD(r,\
       
   185 		{\
       
   186 		for (TInt i=KTestCleanupStack;i>0;i--)\
       
   187 			CleanupStack::PushL((TAny*)0);\
       
   188 		CleanupStack::Pop(KTestCleanupStack);\
       
   189 		});
       
   190 	gTest(r==KErrNone);
       
   191 	}
       
   192 
       
   193 
       
   194 GLDEF_C TInt E32Main()
       
   195     {
       
   196 	setupCleanup();
       
   197 	__UHEAP_MARK;
       
   198 	//
       
   199 
       
   200 	TRAPD(ret,TestL());
       
   201 	gTest(ret==KErrNone);
       
   202 	//
       
   203 
       
   204 	__UHEAP_MARKEND;
       
   205 	delete gTheTrapCleanup;
       
   206 	return KErrNone;
       
   207     }
       
   208