appfw/apparchitecture/tef/T_WindowChainingStep.CPP
changeset 0 2e3d3ce01487
child 19 924385140d98
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appfw/apparchitecture/tef/T_WindowChainingStep.CPP	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,132 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+#include <apgcli.h>
+#include "T_WindowChainingStep.h"
+#include "TWindowChaining.h"
+#include <apacmdln.h>
+
+/**
+   @SYMTestCaseID TODO
+  
+   @SYMPREQ DEFECT 053778 - Window Chaining
+  
+   @SYMTestCaseDesc
+   Stuff
+  
+   @SYMTestPriority High
+  
+   @SYMTestStatus Implemented
+  
+   @SYMTestActions
+   1. Create a child ui application (t_winchainlaunch.exe)
+   2. From t_winchainlaunch.exe, connect a child application (t_winchainchild.exe) with
+      a specific ordinal
+   3. Send message to child application from launching application
+   4. When message is received by child application, check they share the same ordinal
+   5. Child application reports back to launch application the result of the test
+   6. Launch application quits with the test result as an exit code
+  
+   @SYMTestExpectedResults
+   Window group ordinals should be the same.  
+   t_winchainlaunch.exe should exit with KTWindowChainingTestPassed.
+  
+ */
+void CT_WindowChainingStep::TestWindowChainingL()
+	{
+
+	TThreadId appThreadId(0U);
+
+	RApaLsSession ls;
+	CleanupClosePushL(ls);
+	TInt ret = ls.Connect();
+	TEST(ret == KErrNone);
+	
+	CApaCommandLine* cmdLine=CApaCommandLine::NewLC();
+    
+	cmdLine->SetExecutableNameL(KWinChainChildAppFileName);
+	cmdLine->SetCommandL(EApaCommandOpen);
+
+	// start document, causing GuiBaseChildApp.exe to be launched
+	INFO_PRINTF1(_L("Launching Child Application"));
+
+	// start child application
+	ret = ls.StartApp(*cmdLine, appThreadId);
+	TEST(ret == KErrNone);
+	User::LeaveIfError(ret);
+	CleanupStack::PopAndDestroy(2);  // ls and cmdLine
+	
+	RThread appThread;
+	User::LeaveIfError(appThread.Open(appThreadId));
+	
+	TRequestStatus logonRequestStatus;
+	appThread.Logon(logonRequestStatus);
+
+	// wait for t_windowchainLaunch.exe to terminate
+	INFO_PRINTF1(_L("Waiting for application to terminate..."));
+	User::WaitForRequest(logonRequestStatus);
+
+	const TExitType exitType = appThread.ExitType();
+	const TInt exitReason = appThread.ExitReason();
+	TExitCategoryName categoryName = appThread.ExitCategory();
+	appThread.Close();
+
+	TBuf<50> msg;
+	if (exitType == EExitPanic)
+		{
+		_LIT(KAppPanicInfo, "Application panic: %S %d");
+		msg.Format(KAppPanicInfo, &categoryName, exitReason);
+		}
+	else
+		{
+		_LIT(KAppExitInfo, "Application exited with code %d");
+		msg.Format(KAppExitInfo, exitReason);
+		}
+	INFO_PRINTF1(msg);
+
+	TEST(logonRequestStatus == KTWindowChainingTestPassed);
+	TEST(exitType == EExitKill);
+	TEST(exitReason == KTWindowChainingTestPassed);
+	
+	if (exitReason == KTWindowChainingTestPassed)
+		SetTestStepResult(EPass);
+	else
+		SetTestStepResult(EFail);
+	}
+	
+TVerdict CT_WindowChainingStep::doTestStepL()
+{
+	__UHEAP_MARK;
+		
+	INFO_PRINTF1(_L("Test Started"));
+
+	// run the test
+	TRAPD(err, TestWindowChainingL());
+	INFO_PRINTF2(_L("  test completes with %d"), err);
+	TEST(err == KErrNone);
+
+	INFO_PRINTF1(_L("Test Finished"));
+		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+}
+
+