testdev/ite/test/com.nokia.testfw.cmdtool.test/test.resource/unittest/standard/testThread/src/testThread.cpp
author Johnson Ma <johnson.ma@nokia.com>
Tue, 30 Mar 2010 14:39:29 +0800
changeset 1 96906a986c3b
permissions -rw-r--r--
contribute ITE to symbian foundation

/*
============================================================================
 Name		: testThread.cpp
 Author	  : Yue Zhang
 Copyright   : Test Product Team, Symbian
 Description : Exe source file
============================================================================
*/

//  Include Files  

#include "testThread.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h>			// Console
#include "child.h"


//  Constants

_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");

//  Global Variables

LOCAL_D CConsoleBase* console;  // write all messages to this

/*
TInt threadFunc(TAny*)
	{
	for(TInt i=0;i<10;++i)
		{
		User::InfoPrint(_L("Thread..."));
		User::After(4000000);
		}
	return 0;
	}
*/

//  Local Functions
LOCAL_C void MainL()
	{
	//
	// add your program code here, example code below
	//
	MParent* a = new (ELeave)CChild();
	static_cast<CChild*>(a)->Add();
	delete a;
	a = NULL;
	console->Write(_L("Hello, world!\n"));
	
	//RThread thd;
	//User::LeaveIfError(thd.Create(_L("MyThread"), threadFunc, KDefaultStackSize,NULL, NULL));
	//thd.Resume();
	}

LOCAL_C void DoStartL()
	{
	// Create active scheduler (to run active objects)
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
	CleanupStack::PushL(scheduler);
	CActiveScheduler::Install(scheduler);
	
	MainL();

	// Delete active scheduler
	CleanupStack::PopAndDestroy(scheduler);
	}


//  Global Functions

GLDEF_C TInt E32Main()
	{
	// Create cleanup stack
	__UHEAP_MARK;
	CTrapCleanup* cleanup = CTrapCleanup::New();

	// Create output console
	TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)));
	if (createError)
		return createError;

	// Run application code inside TRAP harness, wait keypress when terminated
	TRAPD(mainError, DoStartL());
	if (mainError)
		console->Printf(KTextFailed, mainError);
	console->Printf(KTextPressAnyKey);
	console->Getch();
	
	delete console;
	delete cleanup;
	__UHEAP_MARKEND;
	return KErrNone;
	}