diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/watcherfw/test/src/t_watcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/watcherfw/test/src/t_watcher.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,181 @@ +// Copyright (c) 2000-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: +// t_watcher.cpp +// + +#include +#include +#include +#include "msvtestutils.h" +#include "cwatcher.h" + +_LIT(KTestFile, "c:\\TESTWATCHER"); +const TInt KWaitDelay = 1000000; +const TInt KWaitCount = 30; + +RTest test(_L("Watcher Test Harness")); +class CWatcherTestUtils; +CWatcherTestUtils* theUtils = NULL; + +//********************************** +// CWatcherTestUtils +//********************************** + +class CWatcherTestUtils : public CTestUtils + { +public: + static CWatcherTestUtils* NewL(RTest& aTest); + CWatcherTestUtils(RTest& aTest); + void Panic(TInt aPanic); + // +public: + void Start(const TDesC& aDes); + void Complete(); + // +private: + TInt iTestNum; + }; + +CWatcherTestUtils* CWatcherTestUtils::NewL(RTest& aTest) + { + CWatcherTestUtils* self = new(ELeave)CWatcherTestUtils(aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + return self; + } + +CWatcherTestUtils::CWatcherTestUtils(RTest& aTest) +: CTestUtils(aTest) + { + } + +void CWatcherTestUtils::Panic(TInt) + { + test(EFalse); + } + +void CWatcherTestUtils::Start(const TDesC& aDes) + { + if (iTestNum == 0) + test.Start(aDes); + else + test.Next(aDes); + + TestStart(++iTestNum, aDes); + } + +void CWatcherTestUtils::Complete() + { + TestFinish(iTestNum, KErrNone); + } + +LOCAL_C TBool WaitForTestFile() + { + TInt count = KWaitCount; + while(count--) + { + User::After(KWaitDelay); + if (BaflUtils::FileExists(theUtils->FileSession(), KTestFile)) + return ETrue; + } + return EFalse; + } + +void DoTestsL() + { + // Create waiter + CWatcherWait* wait = CWatcherWait::NewLC(); + + // Create the watcher + CWatcher* watcher = CWatcher::NewL(CActive::EPriorityStandard); + CleanupStack::PushL(watcher); + + theUtils->Start(_L("Watcher startup")); + theUtils->FileSession().Delete(KTestFile); + wait->Start(); + watcher->Start(wait->iStatus); + test(WaitForTestFile()); + theUtils->Complete(); + + theUtils->Start(_L("Watcher death")); + watcher->Cancel(); + CActiveScheduler::Start(); + test(wait->iStatus.Int() == KErrCancel); + theUtils->Complete(); + + theUtils->Start(_L("Watcher restart")); + test(theUtils->FileSession().Delete(KTestFile) == KErrNone); + wait->Start(); + watcher->Start(wait->iStatus); + test(WaitForTestFile()); + theUtils->Complete(); + + // Close the watcher + theUtils->Start(_L("Closing watchers")); + watcher->Cancel(); + CActiveScheduler::Start(); + test(wait->iStatus.Int() == KErrCancel); + theUtils->Complete(); + + CleanupStack::PopAndDestroy(2); // watcher, wait + } + +void SetupL() + { + CActiveScheduler::Install(new(ELeave)CActiveScheduler); + theUtils = CWatcherTestUtils::NewL(test); + } + +void Close(TInt aRet) + { + if (theUtils) + { + if (!aRet) + theUtils->TestHarnessCompleted(); + else + theUtils->TestHarnessFailed(aRet); + } + test(aRet == KErrNone); + + delete theUtils; + delete CActiveScheduler::Current(); + } + +void DoMainL() + { + SetupL(); + DoTestsL(); + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); + TRAPD(ret, DoMainL()); + Close(ret); + test.Close(); + delete cleanup; + __UHEAP_MARKEND; + return(KErrNone); + } + +EXPORT_C TInt WinsMain() + { +#if defined(__WINS__) + E32Main(); +#endif + return KErrNone; + } +