symhelp/helpmodel/tsrc/tcontext.cpp
changeset 0 1f04cf54edd8
--- /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;
+    }