sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: // All rights reserved.
sl@0: // This component and the accompanying materials are made available
sl@0: // under the terms of the License "Eclipse Public License v1.0"
sl@0: // which accompanies this distribution, and is available
sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: //
sl@0: // Initial Contributors:
sl@0: // Nokia Corporation - initial contribution.
sl@0: //
sl@0: // Contributors:
sl@0: //
sl@0: // Description:
sl@0: // e32test\emul\t_guiconfig.cpp
sl@0: // Overview:
sl@0: // Test the kernel-side emulator GUI configuration API.
sl@0: // API Information:
sl@0: // RBusLogicalChannel, DLogicalChannel, WinsGui::CurrentConfiguration.
sl@0: // Details:
sl@0: // - Test retrieving the current emulator GUI configuration.
sl@0: // The following emulator configuration (.ini) files can be used with
sl@0: // this test to setup multiple configurations. Switch from one
sl@0: // configuration to the next by clicking in the upper left corner of
sl@0: // the emulator window, then run the test with a different configuration
sl@0: // selected.
sl@0: // >>> \epoc32\data\epoc.ini <<<
sl@0: // configuration c0.ini
sl@0: // configuration c1.ini
sl@0: // configuration c2.ini
sl@0: // configuration c3.ini
sl@0: // >>> \epoc32\data\c0.ini <<<
sl@0: // OnActivation 0 EKeyScreenDimension0
sl@0: // EmulatorControl NextConfig rect 1,1 30,30
sl@0: // windowtitle ZERO
sl@0: // >>> \epoc32\data\c1.ini <<<
sl@0: // OnActivation 0 EKeyScreenDimension1
sl@0: // EmulatorControl NextConfig rect 1,1 30,30
sl@0: // windowtitle ONE
sl@0: // >>> \epoc32\data\c2.ini <<<
sl@0: // OnActivation 0 EKeyScreenDimension2
sl@0: // EmulatorControl NextConfig rect 1,1 30,30
sl@0: // windowtitle TWO
sl@0: // >>> \epoc32\data\c3.ini <<<
sl@0: // OnActivation 0 EKeyScreenDimension3
sl@0: // EmulatorControl NextConfig rect 1,1 30,30
sl@0: // windowtitle THREE
sl@0: // Platforms/Drives/Compatibility:
sl@0: // Only available on the emulator.
sl@0: // Assumptions/Requirement/Pre-requisites:
sl@0: // Failures and causes:
sl@0: // Base Port information:
sl@0: // 
sl@0: //
sl@0: 
sl@0: #include <e32test.h>
sl@0: #include <e32def.h>
sl@0: #include <e32def_private.h>
sl@0: #include "d_guiconfig.h"
sl@0: 
sl@0: _LIT(KLddFileName, "d_guiconfig.ldd");
sl@0: 
sl@0: GLDEF_D RGuiConfigTest ldd;
sl@0: GLDEF_D RTest test(_L("Emulator GUI configuration"));
sl@0: 
sl@0: void DoTest(const TDesC& aLddFileName)
sl@0: 	{
sl@0: 	TInt r;
sl@0:     test.Start(_L("Loading LDD"));
sl@0: 
sl@0: 	__KHEAP_MARK;
sl@0: 
sl@0: 	r=User::LoadLogicalDevice(aLddFileName);
sl@0: 	test.Printf(_L("Returned %d\n"), r);
sl@0:     test(r==KErrNone);
sl@0: 
sl@0: 	test.Next(_L("Opening device driver"));
sl@0: 	test(ldd.Open()==KErrNone);
sl@0: 
sl@0: 	test.Next(_L("Test retrieving current GUI configuration"));
sl@0: 	test.Printf(_L("Current emulator configuration is: %d"), ldd.GetConfig());
sl@0: 
sl@0: 	test.Next(_L("Test generating key event"));
sl@0: 	test(ldd.GenerateKeyEvent()==KErrNone);
sl@0: 
sl@0: 	TRequestStatus status;
sl@0: 	test.Console()->Read(status);
sl@0: 	User::WaitForRequest(status);
sl@0: 
sl@0: 	if (test.Console()->KeyCode() == EKeyScreenDimension0)
sl@0: 		{
sl@0: 		test.Printf(_L("EKeyScreenDimension0 (0x%04x)\r\n"), test.Console()->KeyCode());
sl@0: 		// wait for the key-up code
sl@0: 		test.Console()->Read(status);
sl@0: 		User::WaitForRequest(status);
sl@0: 
sl@0: 		test(test.Console()->KeyCode() == EKeyScreenDimension0);
sl@0: 		}
sl@0: 	else if (test.Console()->KeyCode()==EKeyScreenDimension1)
sl@0: 		{
sl@0: 		test.Printf(_L("EKeyScreenDimension1 (0x%04x)\r\n"), test.Console()->KeyCode());
sl@0: 		// wait for the key-up code
sl@0: 		test.Console()->Read(status);
sl@0: 		User::WaitForRequest(status);
sl@0: 
sl@0: 		test(test.Console()->KeyCode() == EKeyScreenDimension1);
sl@0: 		}
sl@0: 	else if (test.Console()->KeyCode() == EKeyScreenDimension2)
sl@0: 		{
sl@0: 		test.Printf(_L("EKeyScreenDimension2 (0x%04x)\r\n"), test.Console()->KeyCode());
sl@0: 		// wait for the key-up code
sl@0: 		test.Console()->Read(status);
sl@0: 		User::WaitForRequest(status);
sl@0: 
sl@0: 		test(test.Console()->KeyCode() == EKeyScreenDimension2);
sl@0: 		}
sl@0: 	else if (test.Console()->KeyCode() == EKeyScreenDimension3)
sl@0: 		{
sl@0: 		test.Printf(_L("EKeyScreenDimension3 (0x%04x)\r\n"), test.Console()->KeyCode());
sl@0: 		// wait for the key-up code
sl@0: 		test.Console()->Read(status);
sl@0: 		User::WaitForRequest(status);
sl@0: 
sl@0: 		test(test.Console()->KeyCode() == EKeyScreenDimension3);
sl@0: 		}
sl@0: 	else
sl@0: 		{
sl@0: 		test.Printf(_L("Key: %5d (0x%04x)\r\n"),test.Console()->KeyCode(),test.Console()->KeyCode());
sl@0: 		test(EFalse);
sl@0: 		}
sl@0: 
sl@0: 	test.Next(_L("Close"));
sl@0: 	ldd.Close();
sl@0: 
sl@0: 	test.Next(_L("Unload"));
sl@0: 	r = RGuiConfigTest::Unload();
sl@0: 	test(r==KErrNone);
sl@0: 
sl@0: 	test.End();
sl@0: 	}
sl@0: 
sl@0: GLDEF_C TInt E32Main()
sl@0: //
sl@0: // Test LDD static data
sl@0: //
sl@0:     {
sl@0: 	test.Title();
sl@0: 	test.Start(_L("Test emulator GUI configuration API"));
sl@0: 
sl@0: 	DoTest(KLddFileName);
sl@0: 
sl@0: 	test.End();
sl@0: 	return(KErrNone);
sl@0:     }
sl@0: