kerneltest/e32test/domainmgr/t_domain_manual.cpp
changeset 279 957c583b417b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/domainmgr/t_domain_manual.cpp	Mon Oct 04 12:03:52 2010 +0100
@@ -0,0 +1,125 @@
+// 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 the License "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:
+// e32test/domainmgr/t_domain_manual.cpp
+//
+// Overview:
+// Domain Manager Manual test cases
+//
+
+#define __E32TEST_EXTENSION__
+
+#include <e32test.h>
+#include <e32ldr_private.h>
+
+#include "t_domain.h"
+
+
+RTest test(_L(" T_DOMAIN_MANUAL "));
+
+
+class CDmShutdownTest : public MDmTest
+	{
+public:
+	virtual ~CDmShutdownTest()
+		{
+		iManager.Close();
+		}
+	void Perform();
+	void Release();
+	TInt TransitionNotification(MDmDomainMember&)
+		{
+		test(0);
+		return KErrNone;
+		}
+	void TransitionRequestComplete()
+		{}
+private:
+	RDmDomainManager iManager;
+	};
+
+
+void CDmShutdownTest::Perform()
+	{
+	test.Next(_L("CDmShutdownTest"));
+
+	// 1. Set up test hierarchy/domain & join it
+	const TInt r = iManager.Connect();
+	test_KErrNone(r);
+
+	// 2. Call the Shutdown API
+	iManager.SystemShutdown();
+
+	test(0);	// Never reaches here!
+	}
+
+
+void CDmShutdownTest::Release()
+	{
+	delete this;
+	}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// --- Main() ---
+
+GLDEF_C TInt E32Main()
+	{
+	CTrapCleanup* trapHandler = CTrapCleanup::New();
+	test(trapHandler != NULL);
+
+	CActiveScheduler* scheduler = new CActiveScheduler();
+	test(scheduler != NULL);
+	CActiveScheduler::Install(scheduler);
+
+	// Turn off evil lazy dll unloading
+	RLoader l;
+	test(l.Connect() == KErrNone);
+	test(l.CancelLazyDllUnload()== KErrNone);
+	l.Close();
+
+	test.Title();
+
+	test.Start(_L("Test starting..."));
+
+	// Remember the number of open handles. Just for a sanity check
+	TInt start_thc, start_phc;
+	RThread().HandleCount(start_phc, start_thc);
+
+	MDmTest* tests[] =
+		{
+		// Always the last manual test as it shuts down the board/emulator
+		new CDmShutdownTest(),
+		};
+
+	for (unsigned int i = 0; i < sizeof(tests)/sizeof(*tests); ++i)
+		{
+		test(tests[i] != NULL);
+		tests[i]->Perform();
+		tests[i]->Release();
+		}
+
+	test.End();
+
+	// Sanity check for open handles and for pending requests
+	TInt end_thc, end_phc;
+	RThread().HandleCount(end_phc, end_thc);
+	test(start_thc == end_thc);
+	test(start_phc == end_phc);
+	test(RThread().RequestCount() >= 0);
+
+	delete scheduler;
+	delete trapHandler;
+
+	return KErrNone;
+	}