diff -r 000000000000 -r 1f04cf54edd8 symhelp/helpmodel/tsrc/tcontext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symhelp/helpmodel/tsrc/tcontext.cpp Tue Jan 26 15:15:23 2010 +0200 @@ -0,0 +1,182 @@ +// Copyright (c) 2003-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: +// Test Context module +// +// + +#pragma message(__FILE__ "(1) : NOTE: Requires TContext.dat in the help directory") + +// System includes +#include +#include +#include + +// User includes +#include "hlpmodel.h" + +// Globals +static RFs TheFs; +static RTest TheTest(_L("TCONTEXT - Test context sensitive searching in help model")); +static CTrapCleanup* TheTrapCleanup; +static CActiveScheduler* TheScheduler; + +// Constants +const TInt KTestCleanupStack=0x20; + + +class CHelpTester : public CBase, public MHlpModelObserver + { +public: + CHelpTester(); + ~CHelpTester(); + void ConstructL(); + +public: + void Test1L(); + +public: // from MHlpModelObserver + void HandleModelEventL(TInt aEvent); + +private: + TInt iLastResponse; + CHlpModel* iModel; + }; + + +CHelpTester::CHelpTester() + { + } + +CHelpTester::~CHelpTester() + { + delete iModel; + } + +void CHelpTester::ConstructL() + { + iModel = CHlpModel::NewL(TheFs, this); + } + +/** +@SYMTestCaseID PIM-TCONTEXT-0001 +*/ +void CHelpTester::Test1L() + { + TheTest.Next(_L("@SYMTestCaseID PIM-TCONTEXT-0001 Test 1: Test category searching")); + + iModel->OpenL(); + + // Create a context that we know exists + TCoeContextName contextName(_L("A_Remove_dialog")); + TUid contextUid = {268450396}; + TCoeHelpContext context(contextUid, contextName); + + // Request a search on the context + iModel->ContextSearchL(context); + + // Check that the response is "Found" + TheTest(iLastResponse == ETopicAvailable); + + // Now get the topic text + CHlpTopic* topic = CHlpTopic::NewLC(); + TRAPD(error, iModel->LoadTopicL(topic)); + TheTest(error == KErrNone); + CleanupStack::PopAndDestroy(); // topic + + // Create a context that we know doesn't exists + contextName = _L("SomeSymbianTopic"); + contextUid.iUid = 123456789; + TCoeHelpContext missingContext(contextUid, contextName); + + // Request a search on the context + iModel->ContextSearchL(missingContext); + + // Check that the response is "Found" + TheTest(iLastResponse == ETopicNotFound); + + iModel->CloseL(); + } + +void CHelpTester::HandleModelEventL(TInt aEvent) + { + // Just store the last event reported by the model so that we + // can test against it in the actual test. + iLastResponse = aEvent; + } + + + + + + +static void DoTestL() + { + CHelpTester* tester = new(ELeave) CHelpTester(); + CleanupStack::PushL(tester); + tester->ConstructL(); + tester->Test1L(); + CleanupStack::PopAndDestroy(); + } + +static void setupFileServerAndSchedulerL() +// +// Initialise the cleanup stack. +// + { + TheTest(TheFs.Connect() == KErrNone); + TheScheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(TheScheduler); + } + + +static void setupCleanup() +// +// Initialise the cleanup stack. +// + { + TheTrapCleanup = CTrapCleanup::New(); + TheTest(TheTrapCleanup!=NULL); + TRAPD(r,\ + {\ + for (TInt i=KTestCleanupStack;i>0;i--)\ + CleanupStack::PushL((TAny*)0);\ + CleanupStack::Pop(KTestCleanupStack);\ + }); + TheTest(r==KErrNone); + } + +GLDEF_C TInt E32Main() +// +// Test Help Model API +// + { + __UHEAP_MARK; + + TheTest.Title(); + setupCleanup(); + + TRAPD(r, + setupFileServerAndSchedulerL(); + DoTestL(); + ); + TheTest(r==KErrNone); + + delete TheScheduler; + delete TheTrapCleanup; + TheFs.Close(); + TheTest.Close(); + + __UHEAP_MARKEND; + return KErrNone; + }