featuremgmt/featuremgr/test/rtest/src/t_fmgrbursim.cpp
branchRCL_3
changeset 6 5ffdb8f2067f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/featuremgmt/featuremgr/test/rtest/src/t_fmgrbursim.cpp	Sat Feb 20 00:33:55 2010 +0200
@@ -0,0 +1,164 @@
+// Copyright (c) 2010 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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent
+*/
+
+#include "t_fmgrbursim.h"
+#include "t_fmgrburdefs.h"
+
+CFeatMgrBURSim* CFeatMgrBURSim::NewLC()
+	{
+	CFeatMgrBURSim* newInstance = new (ELeave) CFeatMgrBURSim();
+	CleanupStack::PushL( newInstance );
+	newInstance->ConstructL();
+	return newInstance;	
+	}
+
+void CFeatMgrBURSim::ConstructL()
+	{
+	iBackupClient = CBaBackupSessionWrapper::NewL();
+	}
+
+CFeatMgrBURSim::CFeatMgrBURSim()
+	{
+	}
+
+CFeatMgrBURSim::~CFeatMgrBURSim()
+	{
+	delete iBackupClient;	
+	}
+
+// BUR simulation functions
+
+/** 
+ * Use the babackup API to "start" a backup.  
+ * Ultimate effect is to cause the correct case statement inside 
+ * ChangeFileLockL to be called.
+ */
+void CFeatMgrBURSim::Simulate_StartBackupL()
+	{
+	iBackupClient->CloseFileL( KEfmBackupFileName, MBackupObserver::EReleaseLockReadOnly );		
+
+	// Set BUR property to trigger 
+	TInt ret = RProperty::Set(KTestUid , conn::KUidBackupRestoreKey, conn::EBackupBase|conn::EBURBackupPartial);
+	if (ret != KErrNone && ret != KErrNotFound)
+		{
+		User::Leave(ret);
+		}
+	
+	// allow observers to be notified
+	User::After(100000);
+	}
+
+
+/** 
+ * Use the babackup API to "end" a backup.  
+ * Ultimate effect is to cause the correct case statement inside 
+ * ChangeFileLockL to be called. 
+ */
+void CFeatMgrBURSim::Simulate_EndBackupL( TBool /* aNormal */ )
+	{
+	iBackupClient->CloseFileL( KEfmBackupFileName, MBackupObserver::ETakeLock );
+
+	// allow observers to be notified
+	User::After(100000);
+	}
+
+// Restore type
+
+/** 
+ * Use the babackup API to "start" a restore.  
+ * Ultimate effect is to cause the correct case statement inside 
+ * ChangeFileLockL to be called.
+ */
+void CFeatMgrBURSim::Simulate_StartRestoreL()
+	{
+	iBackupClient->CloseFileL( KEfmBackupFileName, MBackupObserver::EReleaseLockNoAccess );
+
+	// Set BUR property to trigger 
+	TInt ret = RProperty::Set(KTestUid , conn::KUidBackupRestoreKey, conn::EBackupBase|conn::EBURRestorePartial);
+	if (ret != KErrNone && ret != KErrNotFound)
+		{
+		User::Leave(ret);
+		}
+
+	// allow observers to be notified
+	User::After(100000);
+	}
+
+
+/** 
+ * Use the babackup API to "end" a restore.  
+ * Ultimate effect is to cause the correct case statement inside 
+ * ChangeFileLockL to be called.
+ */
+void CFeatMgrBURSim::Simulate_EndRestoreL( TBool /* aNormal */ )
+	{
+	iBackupClient->CloseFileL( KEfmBackupFileName, MBackupObserver::ETakeLock );		
+	
+	// allow observers to be notified
+	User::After(100000);
+	}
+
+
+// Undefined type
+
+
+// Edge cases
+
+void CFeatMgrBURSim::Simulate_StartUndefinedL()
+	{
+	// Use the babackup API to "start" (neither a backup or restore explicitly).  
+	// Ultimate effect is to cause the correct case statement inside 
+	// CFeatMgrFeatureRegistry::HandleBackupOperationEventL
+	// to be called.
+	User::Leave( KErrNotSupported );
+	}
+
+
+void CFeatMgrBURSim::Simulate_EndUndefinedL( TBool /* aNormal */ )
+	{
+	// Use the babackup API to "end" (neither a backup or restore explicitly).  
+	// Ultimate effect is to cause the correct case statement inside 
+	// CFeatMgrFeatureRegistry::HandleBackupOperationEventL
+	// to be called.
+	User::Leave( KErrNotSupported );
+	}
+
+/** 
+ * CheckRegFileL
+ * Open the babackup file to confirm that the file is present
+ * this leaves if the KErrNotFound is returned
+ */
+void CFeatMgrBURSim::Simulate_CheckRegFileL()
+	{
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	RFile file;
+	TInt err = file.Open(fs, KRegistrationFile, EFileRead);
+	
+	if( err != KErrNone )
+		{
+		User::Leave(err);
+		}
+
+	file.Close();
+	CleanupStack::PopAndDestroy(&fs);
+	}