--- /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 <e32test.h>
+#include <f32file.h>
+#include <coehelp.h>
+
+// 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;
+ }