appfw/apparchitecture/tef/T_NotifStep.cpp
changeset 0 2e3d3ce01487
child 29 6a787171e1de
equal deleted inserted replaced
-1:000000000000 0:2e3d3ce01487
       
     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 // Checks for notifications when application list changes.\n
       
    15 // 
       
    16 // t_notifstep.cpp
       
    17 //
       
    18 
       
    19 /**
       
    20  @file t_notifstep.cpp
       
    21  @test
       
    22  @internalComponent - Internal Symbian test code
       
    23 */
       
    24 
       
    25 #include <f32file.h>
       
    26 #include <fbs.h>
       
    27 #include <apaid.h>
       
    28 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
       
    29 #include <apaidpartner.h>
       
    30 #include <apgicnflpartner.h>
       
    31 #endif //SYMBIAN_ENABLE_SPLIT_HEADERS
       
    32 #include <apgaplst.h>
       
    33 #include <apaflrec.h>
       
    34 #include <apgcli.h>
       
    35 #include <apacmdln.h>
       
    36 #include <apfrec.h>
       
    37 #include <datastor.h>
       
    38 #include <apgicnfl.h>
       
    39 #include <apasvst.h>
       
    40 #include <apgnotif.h>
       
    41 #include <e32test.h>
       
    42 
       
    43 #include "appfwk_test_utils.h"
       
    44 #include "T_NotifStep.h"
       
    45 
       
    46 _LIT(KImportAppsDir,"c:\\private\\10003a3f\\import\\apps\\");
       
    47 _LIT(KResourceAppsDir,"c:\\resource\\apps\\");
       
    48 
       
    49 _LIT(KForceRegAppSourcePath_Reg,"Z:\\ApparcTest\\testforceregistrationapp1_reg.rsc");
       
    50 _LIT(KForceRegAppSourcePath_Loc,"Z:\\ApparcTest\\testforceregistrationapp1_loc.rsc");
       
    51 
       
    52 _LIT(KForceRegAppTargetPath_Reg,"c:\\private\\10003a3f\\import\\apps\\testforceregistrationapp1_reg.rsc");
       
    53 _LIT(KForceRegAppTargetPath_Loc,"c:\\resource\\apps\\testforceregistrationapp1_loc.rsc");
       
    54 
       
    55 _LIT(KForceRegAppCaption,"TestForceRegistration");
       
    56 _LIT(KForceRegAppDefaultCaption,"testforceregistrationapp1");
       
    57 
       
    58 /**
       
    59  
       
    60   Overridden from virtual method MApaAppListServObserver::HandleAppListEvent().
       
    61   This method is used to receive notification for change in application list.\n
       
    62  
       
    63 */
       
    64 void CTestObserver::HandleAppListEvent(TInt /*aEvent*/)
       
    65 	{
       
    66 
       
    67 	iNotified++;
       
    68 	if (iNotifier)
       
    69 		iNotifier->Cancel();
       
    70 	CActiveScheduler::Stop();
       
    71 	}
       
    72 	
       
    73 /**
       
    74   Auxiliary Fn for Test Case ID T-NotifStep-TestAppNotificationL
       
    75  
       
    76   Copy a registration resource file in the path  "c:\private\10003a3f\import\apps" .
       
    77 */
       
    78 void CT_NotifStep::CreateAppL(const TDesC& aAppName)
       
    79 	{
       
    80 	TFileName appFullName;
       
    81 	TFileName appTargetName; 
       
    82 	CFileMan* fileManager = CFileMan::NewL(iFs);
       
    83 	CleanupStack::PushL(fileManager);	
       
    84 	appFullName.Format(_L("z:\\ApparcTest\\%S_reg.RSC"),&aAppName);
       
    85 	appTargetName.Format(_L("C:\\Private\\10003a3f\\Import\\apps\\%S_reg.Rsc"), &aAppName);
       
    86 	INFO_PRINTF2(_L("copying the file: %S"), &appTargetName);
       
    87 	TInt ret = fileManager->Copy (appFullName, appTargetName, CFileMan::ERecurse);
       
    88 	TEST(ret==KErrNone);
       
    89 	CleanupStack::PopAndDestroy(fileManager);
       
    90 	}
       
    91 
       
    92 /**
       
    93 	Auxiliary Fn for Test Case ID T-NotifStep-TestAppNotificationL
       
    94 	Delete a registration resource file from the path  "c:\private\10003a3f\import\apps" .
       
    95 */
       
    96 void CT_NotifStep::DeleteAppL(const TDesC& aAppName)
       
    97 	{
       
    98 	TFileName appFullName;
       
    99 	CFileMan* fileManager = CFileMan::NewL(iFs);
       
   100 	CleanupStack::PushL(fileManager);
       
   101 	appFullName.Format(_L("C:\\Private\\10003a3f\\Import\\apps\\%S_reg.Rsc"),&aAppName);
       
   102 		
       
   103 	INFO_PRINTF2(_L("Deleting the file: %S"), &appFullName);
       
   104 	TRequestStatus status;
       
   105 	TTime tempTime(0); // added tempTime to avoid asynch CFileMan::Attribs request completing with KErrArgument
       
   106 	TEST(fileManager->Attribs(appFullName,0,KEntryAttReadOnly, tempTime, CFileMan::ERecurse, status)==KErrNone);
       
   107 	User::WaitForRequest(status);
       
   108 	TEST(status.Int() == KErrNone);
       
   109 	TInt ret = fileManager->Delete(appFullName, CFileMan::ERecurse);
       
   110 	TEST(ret==KErrNone);
       
   111 	CleanupStack::PopAndDestroy(fileManager);
       
   112 	}
       
   113  
       
   114 /**
       
   115    @SYMTestCaseID T-NotifStep-TestAppNotificationL
       
   116   
       
   117    @SYMPREQ REQ1087, PCHY-5L3RDW
       
   118   
       
   119    @SYMTestCaseDesc Test whether notification is received from CApaAppListNotifier
       
   120    whenever application list changes. 
       
   121    
       
   122    @SYMTestPriority High 
       
   123   
       
   124    @SYMTestStatus Implemented
       
   125    
       
   126    @SYMTestActions The method creates an object of user-defined observer CTestObserver
       
   127    and creates a CApaAppListNotifier active object which is associated to the
       
   128    observer. It then starts the active scheduler and adds a new application or deletes
       
   129    an application from the application list. To ensure that notifications are received on
       
   130    change in application list HandleAppListEvent() method which is derived
       
   131    from interface class MApaAppListServObserver is observed.\n
       
   132    API Calls:\n	
       
   133    CApaAppListNotifier::NewL(MApaAppListServObserver* aObserver, TPriority aPriority)\n
       
   134    
       
   135    @SYMTestExpectedResults On deletion of the app the notification for change in
       
   136    the application list is received.
       
   137     
       
   138  */
       
   139 void CT_NotifStep::TestAppNotificationL()
       
   140 	{
       
   141 	// Force the applist to be updated 
       
   142 	//To ensure that server has time to count all applications in the system
       
   143 	RPointerArray<TDesC> dummy;
       
   144 	User::LeaveIfError(iSession.ForceRegistration(dummy));
       
   145 
       
   146 	TInt theAppCount = 0;
       
   147 	TInt theErr1 = iSession.AppCount(theAppCount);
       
   148 	TEST(theErr1==KErrNone);
       
   149 
       
   150 	INFO_PRINTF2(_L("The number of applications : %d"), theAppCount);
       
   151 		
       
   152 	CTestObserver* obs=new(ELeave) CTestObserver();
       
   153 	CleanupStack::PushL(obs);
       
   154 	CApaAppListNotifier* notif=CApaAppListNotifier::NewL(obs,CActive::EPriorityHigh);
       
   155 	CleanupStack::PushL(notif);
       
   156 	obs->iNotifier=notif;	
       
   157 	INFO_PRINTF1(_L("Creating and deleting apps for notification"));
       
   158 	CreateAppL(_L("AAA"));
       
   159 
       
   160 	CActiveScheduler::Start();
       
   161 	
       
   162 	TInt theAppCount1 = 0;
       
   163 	theErr1 = iSession.AppCount(theAppCount1);
       
   164 	TEST((theAppCount1 - 1) == theAppCount);
       
   165 	INFO_PRINTF2(_L("The number of applications : %d"), theAppCount1);
       
   166 	CleanupStack::PopAndDestroy(notif);
       
   167 	
       
   168 	notif = CApaAppListNotifier::NewL(obs,CActive::EPriorityHigh);
       
   169 	CleanupStack::PushL(notif);
       
   170 	obs->iNotifier = notif;
       
   171 	INFO_PRINTF1(_L("Deleting the application"));
       
   172 	DeleteAppL(_L("AAA")); 
       
   173 
       
   174 	CActiveScheduler::Start();
       
   175 	
       
   176 	CleanupStack::PopAndDestroy(notif);	
       
   177 	User::LeaveIfError(iSession.ForceRegistration(dummy));	
       
   178 	theErr1 = iSession.AppCount(theAppCount1);
       
   179 	TEST(theErr1==KErrNone);
       
   180 	TEST(theAppCount1 == theAppCount);
       
   181 	
       
   182 	INFO_PRINTF2(_L("The number of applications : %d"), theAppCount1);
       
   183 	TEST(obs->iNotified>0);
       
   184 	
       
   185 	INFO_PRINTF2(_L("Received %d notifications"),obs->iNotified);
       
   186 	CleanupStack::PopAndDestroy(obs);
       
   187 	}
       
   188 
       
   189 void CT_NotifStep::ModifyIconFileTimeStampL()
       
   190 	{
       
   191 	_LIT(KMbmIconFile, "c:\\resource\\apps\\tupgradeiconapp.mbm");
       
   192 	_LIT(KTestIconFile, "c:\\TestUpgradeIcon\\tupgradeiconapp.mbm");
       
   193 	_LIT(KTestIconFileTempPath, "c:\\TestUpgradeIcon\\");
       
   194 
       
   195 	// Create KMbmIconFileTempPath
       
   196 	TInt ret = iUtils.CreateDirectoryL(KTestIconFileTempPath);
       
   197 	TEST(ret == KErrNone || ret == KErrAlreadyExists);
       
   198 	INFO_PRINTF1(_L("Copy icon file from C: drive to temp path"));
       
   199 	ret = iUtils.CopyFileL(KMbmIconFile, KTestIconFileTempPath);
       
   200 	
       
   201 	INFO_PRINTF1(_L("Modify timestamp of the icon file"));
       
   202 	TTime modifiedTime(0);
       
   203 	modifiedTime.HomeTime();
       
   204  	ret = iFs.SetModified(KTestIconFile, modifiedTime);
       
   205  	TEST(ret==KErrNone);
       
   206  	ret = iUtils.SetReadOnly(KTestIconFile, 0);
       
   207 	TEST(ret==KErrNone);	
       
   208 	INFO_PRINTF2(_L("Replace the modified icon file in C: drive (%S)"), &KMbmIconFile);
       
   209  	ret = iUtils.CopyFileL(KTestIconFile, KMbmIconFile);
       
   210 	// wait 5 seconds to finish re-scan
       
   211 	User::After(5*1000000);
       
   212 	TEST(ret==KErrNone);
       
   213 	}
       
   214 
       
   215 /**
       
   216    @SYMTestCaseID	T-NotifStep-TTestIconFileNotificationL
       
   217   
       
   218    @SYMPREQ 		PDEF102804
       
   219   
       
   220    @SYMTestCaseDesc Test whether notification is received from CApaAppListNotifier   whenever the application icon file is changed
       
   221    
       
   222    @SYMTestPriority High 
       
   223   
       
   224    @SYMTestStatus 	Implemented
       
   225    
       
   226    @SYMTestActions 	Modify the application icon file in a temporary location. Move icon file to a location specified in the resource file.
       
   227    
       
   228    @SYMTestExpectedResults A notification is recieved when the updated icon file is replaced to a location specified in the resource file.
       
   229 */ 
       
   230 void CT_NotifStep::TestIconFileNotificationL()
       
   231 	{
       
   232 	// Force the applist to be updated 
       
   233 	//To ensure that server has time to count all applications in the system
       
   234 	RPointerArray<TDesC> dummy;
       
   235 	User::LeaveIfError(iSession.ForceRegistration(dummy));
       
   236 
       
   237 	// Create observer
       
   238 	CTestObserver* obs = new(ELeave) CTestObserver();
       
   239 	CleanupStack::PushL(obs);
       
   240 	CApaAppListNotifier* notif = CApaAppListNotifier::NewL(obs, CActive::EPriorityHigh);
       
   241 	CleanupStack::PushL(notif);
       
   242 	obs->iNotifier=notif;
       
   243 
       
   244 	// Change the timestamp of the icon file
       
   245 	INFO_PRINTF1(_L("Modifying the icon file...attempt to check it's notified"));
       
   246 	ModifyIconFileTimeStampL();
       
   247 	
       
   248 	CActiveScheduler::Start();
       
   249 	
       
   250 	CleanupStack::PopAndDestroy(notif);
       
   251 	// Test if notification is recieved.
       
   252 	TEST(obs->iNotified > 0);
       
   253 	if (obs->iNotified > 0)
       
   254 		{
       
   255 		INFO_PRINTF2(_L("Received %d notifications"),obs->iNotified);
       
   256 		}
       
   257 	
       
   258 	CleanupStack::PopAndDestroy(obs); //obs
       
   259 	}
       
   260 
       
   261 /*
       
   262  * TestForceRegistrationL copies a registration file and requests for force registration.
       
   263  * It checks whether default caption is assigned, as the localisable file
       
   264  * does not exist. Then it copies the localisable file and exits.  
       
   265  */
       
   266 void TestForceRegistrationL(CT_NotifStep *aNotifStep)
       
   267 	{
       
   268     	RApaLsSession ls;
       
   269     	User::LeaveIfError(ls.Connect());
       
   270     	CleanupClosePushL(ls);
       
   271     
       
   272     	//Copy the registration file to c:\private\10003a3f\import\apps
       
   273 	User::LeaveIfError((aNotifStep->iUtils).CopyFileL(KForceRegAppSourcePath_Reg, KForceRegAppTargetPath_Reg));
       
   274 	aNotifStep->INFO_PRINTF1(_L("Successfully copied testforceregistrationapp1_reg.rsc from Z:\\ApparcTest\\testforceregistrationapp1_reg.rsc"));
       
   275 
       
   276 	RPointerArray<TDesC> dummy;
       
   277 	User::LeaveIfError(ls.ForceRegistration(dummy));
       
   278     
       
   279     	TApaAppInfo info;
       
   280     	TUid appUid={0x102826E0};
       
   281     	aNotifStep->TEST(ls.GetAppInfo(info,appUid)==KErrNone);
       
   282     	aNotifStep->INFO_PRINTF2(_L("Caption of the application before copying localisable file: %S"), &info.iCaption);
       
   283     	//Test whether default captions are assigned as localisable file not exists.   
       
   284     	aNotifStep->TEST(info.iCaption.Compare(KForceRegAppDefaultCaption)==0);    
       
   285 
       
   286     	//Waits for some time as test thread gets chance to execute. As apparc does not notifiy
       
   287     	//applist change due to force registration to all the clients, the test thread still waits
       
   288     	//for applist change notification.
       
   289     	User::After(5000000); 
       
   290 
       
   291     	//Copy localisable file to c:\resource\apps
       
   292 	User::LeaveIfError((aNotifStep->iUtils).CopyFileL(KForceRegAppSourcePath_Loc, KForceRegAppTargetPath_Loc));
       
   293 	aNotifStep->INFO_PRINTF1(_L("Successfully copied testforceregistrationapp1_loc.rsc from Z:\\ApparcTest\\testforceregistrationapp1_loc.rsc"));
       
   294 
       
   295 	CleanupStack::PopAndDestroy();
       
   296 	}
       
   297 
       
   298 TInt ForceRegistrationThread(TAny* aPtr)
       
   299     	{
       
   300     	__UHEAP_MARK;
       
   301     	CTrapCleanup* trapCleanup = NULL;
       
   302 	trapCleanup = CTrapCleanup::New();
       
   303 	
       
   304     	CT_NotifStep *notifStep=(CT_NotifStep *) aPtr;
       
   305     	
       
   306     	TRAPD(errorCode, TestForceRegistrationL(notifStep));
       
   307     
       
   308     	delete trapCleanup;
       
   309     	__UHEAP_MARKEND;    
       
   310     	return(errorCode);
       
   311     	}
       
   312 
       
   313 //Deletes the file if it exists.
       
   314 TInt CT_NotifStep::DeleteFileL(RSmlTestUtils &aFs, const TDesC &aFileName)
       
   315     	{
       
   316     	TInt fileExists = EFalse;
       
   317     	TInt err;
       
   318     	aFs.IsFilePresent(aFileName, fileExists);
       
   319     	if (fileExists)
       
   320         	{
       
   321         	aFs.ChangeFilePermissionL(aFileName);
       
   322         	err=aFs.DeleteFileL(aFileName);
       
   323         	if(err==KErrNone)
       
   324             		INFO_PRINTF2(_L("Removed file %S"), &aFileName);
       
   325         	else
       
   326             		INFO_PRINTF2(_L("Failed to remove file %S"), &aFileName);
       
   327         	}
       
   328     	else
       
   329         	{
       
   330         		err=KErrNotFound;
       
   331         	}
       
   332 
       
   333     	return(err);
       
   334 	}
       
   335 
       
   336 /**
       
   337    @SYMTestCaseID           APPFWK-APPARC-0106
       
   338   
       
   339 
       
   340    @SYMDEF                  DEF141223
       
   341   
       
   342     @SYMTestCaseDesc         Tests apparc does not notifiy applist change, which occurred
       
   343                             due to force registration, to all the other clients who have not requested
       
   344                             force registration, before the installation is completed.
       
   345   
       
   346    @SYMTestPriority         High
       
   347   
       
   348    @SYMTestStatus           Implemented
       
   349    
       
   350    @SYMTestActions          1. The test registers with apparc for applist change notification.
       
   351                             2. Starts another thread, which copies a registration file and requests
       
   352                                force registration. Later copies the localisable file of the same
       
   353                                application.
       
   354                             3. Waits till the applist change event occurs or till 15 seconds
       
   355                             4. Tests the caption of the application is same as the caption specified in
       
   356                                localisable file. 
       
   357                              
       
   358    
       
   359    @SYMTestExpectedResults The retrieved application caption should be same as the caption specified in 
       
   360                            localisable file. 
       
   361  */
       
   362 void CT_NotifStep::TestForceRegistrationNotificationL()
       
   363     	{
       
   364     	//Share the handle with other threads in the process    
       
   365     	User::LeaveIfError(iUtils.ShareAuto()); 
       
   366     	User::LeaveIfError(Logger().ShareAuto());
       
   367     
       
   368     	INFO_PRINTF1(_L("Creating c:\\private\\10003a3f\\import\\apps\\ directory......."));    
       
   369 	TInt err = iUtils.CreateDirectoryL(KImportAppsDir);
       
   370 	TESTEL((err == KErrNone || err == KErrAlreadyExists), err);
       
   371 	INFO_PRINTF1(_L("c:\\private\\10003a3f\\import\\apps\\ is created successfully or already exists"));
       
   372 
       
   373     	INFO_PRINTF1(_L("Creating c:\\resource\\apps\\ directory......."));    
       
   374     	err = iUtils.CreateDirectoryL(KResourceAppsDir);
       
   375     	TESTEL((err == KErrNone || err == KErrAlreadyExists), err);
       
   376     	INFO_PRINTF1(_L("c:\\resource\\apps\\ is created successfully or already exists"));
       
   377     
       
   378     	INFO_PRINTF1(_L("Make sure that registraiton and localisable files does not exist before the test starts..."));    
       
   379     	DeleteFileL(iUtils, KForceRegAppTargetPath_Reg);
       
   380     	DeleteFileL(iUtils, KForceRegAppTargetPath_Loc);
       
   381         
       
   382     	INFO_PRINTF1(_L("Connecting to apparc server..."));    
       
   383     	RApaLsSession ls;
       
   384     	User::LeaveIfError(ls.Connect());
       
   385     	CleanupClosePushL(ls);
       
   386     
       
   387     	TRequestStatus status;
       
   388     	INFO_PRINTF1(_L("Registering with apparc server for applist change notification."));       
       
   389     	ls.SetNotify(EFalse, status); 
       
   390   
       
   391     	INFO_PRINTF1(_L("Creating ForceRegistrationThread............"));
       
   392     	_LIT(KForceRegThreadName,"ForceRegThread");
       
   393     	TBuf<0x100> threadName(KForceRegThreadName);
       
   394     	RThread thread;
       
   395     
       
   396     	User::LeaveIfError(thread.Create(threadName, ForceRegistrationThread, 0x1000, NULL, (TAny*) this));
       
   397     	CleanupClosePushL(thread);
       
   398 	TRequestStatus threadStatus;
       
   399 	thread.Logon(threadStatus);
       
   400 	
       
   401 	//Starts a thread which actually requests for force registration.
       
   402     	thread.Resume(); 
       
   403     
       
   404 	RTimer timer;
       
   405 	CleanupClosePushL(timer);
       
   406 	User::LeaveIfError(timer.CreateLocal());
       
   407 	TRequestStatus timerStatus;
       
   408 	timer.After(timerStatus,15 * 1000000);
       
   409 
       
   410     	//Wait till the applist change event is receivied or till 15 Seconds
       
   411     	User::WaitForRequest(status, timerStatus); 
       
   412 
       
   413     	//Test whether the applist change event is received
       
   414 	TEST(status != KRequestPending); 
       
   415     
       
   416 	TApaAppInfo info;
       
   417 	TUid appUid={0x102826E0};
       
   418 	TEST(ls.GetAppInfo(info,appUid)==KErrNone);
       
   419 	
       
   420 	//Checks the caption of the application is "TestForceRegistration". The caption will not be 
       
   421 	//"TestForceRegistration" if apparc server notifies all the clients about the applist change
       
   422 	//due to force registration, before installation is completed.
       
   423 	INFO_PRINTF2(_L("Caption of the application after the applist change notification is received: %S"), &info.iCaption);
       
   424     	TEST(info.iCaption.Compare(KForceRegAppCaption)==0);
       
   425 
       
   426 
       
   427     	//Wait till the the ForceRegistrationThread exits	
       
   428 	User::WaitForRequest(threadStatus);
       
   429 	
       
   430 	TInt theadExitCode=thread.ExitReason();
       
   431 	INFO_PRINTF2(_L("ForceRegistrationThread thread is exited with %d"), theadExitCode);
       
   432     	//Checks ForceRegistrationThread completed successfully.	
       
   433 	TEST(theadExitCode==KErrNone); 
       
   434 
       
   435     	//Delete the registration and localisation files
       
   436 	TEST(DeleteFileL(iUtils, KForceRegAppTargetPath_Reg)==KErrNone);
       
   437     	TEST(DeleteFileL(iUtils, KForceRegAppTargetPath_Loc)==KErrNone);
       
   438 
       
   439     	CleanupStack::PopAndDestroy(3,&ls);
       
   440     	}
       
   441 
       
   442 CT_NotifStep::~CT_NotifStep()
       
   443 /**
       
   444    Destructor
       
   445  */
       
   446 	{
       
   447 	delete iScheduler;
       
   448 	}
       
   449 
       
   450 CT_NotifStep::CT_NotifStep()
       
   451 /**
       
   452    Constructor
       
   453  */
       
   454 	{
       
   455 	// Call base class method to set up the human readable name for logging
       
   456 	SetTestStepName(KT_NotifStep);
       
   457 	}
       
   458 
       
   459 TVerdict CT_NotifStep::doTestStepL()
       
   460 /**
       
   461    @return - TVerdict code
       
   462    Override of base class virtual
       
   463  */
       
   464 	{
       
   465 	INFO_PRINTF1(_L("Testing Apparc...T_Notif"));
       
   466 
       
   467 	TInt ret = FbsStartup();
       
   468 	TEST(ret==KErrNone);
       
   469 	ret=RFbsSession::Connect();
       
   470 	TEST(ret==KErrNone);
       
   471 	// start an active scheduler
       
   472 	iScheduler=new(ELeave) CActiveScheduler();
       
   473 	CActiveScheduler::Install(iScheduler);
       
   474 
       
   475 	TEST(KErrNone == iFs.Connect());
       
   476 	TEST(KErrNone == iSession.Connect());
       
   477 	TEST(KErrNone == iUtils.Connect());
       
   478 
       
   479 	// run the testcode (inside an alloc heaven harness)	
       
   480 	__UHEAP_MARK;
       
   481 	iUtils.Connect();
       
   482 #if defined (__WINSCW__)
       
   483 	INFO_PRINTF1(_L("T-NotifStep-TTestIconFileNotificationL Test Started..."));
       
   484 	TRAP(ret,TestIconFileNotificationL());
       
   485 	TEST(ret==KErrNone);
       
   486 	INFO_PRINTF2(_L("TestIconFileNotificationL() finished with return code '%d'\n"), ret);
       
   487 #endif
       
   488 	INFO_PRINTF1(_L("T-NotifStep-TestAppNotificationL Test Started..."));
       
   489 	TRAP(ret,TestAppNotificationL());
       
   490 	TEST(ret==KErrNone);
       
   491 	INFO_PRINTF2(_L("TestAppNotificationL() finished with return code '%d'\n"), ret);
       
   492 
       
   493 	INFO_PRINTF1(_L("TestForceRegistrationNotificationL Test Started..."));
       
   494 	TRAP(ret, TestForceRegistrationNotificationL());
       
   495 	TEST(ret==KErrNone);	
       
   496 	INFO_PRINTF2(_L("TestForceRegistrationNotificationL() finished with return code '%d'\n"), ret);
       
   497 	iUtils.Close();	
       
   498 	__UHEAP_MARKEND;
       
   499 	
       
   500 	iUtils.Close();
       
   501 	iSession.Close();
       
   502 	iFs.Close();
       
   503 	RFbsSession::Disconnect();
       
   504 	INFO_PRINTF1(_L("T_Notif Completed."));
       
   505 	return TestStepResult();
       
   506 	}