mmtestenv/mmtestfwunittest/src/tsu_mmtsth11/TSU_MmTsth11.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:56:55 +0200
changeset 0 40261b775718
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// Copyright (c) 2002-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:
// This file contains the test steps for Unit Test Suite 11 : TestStep.cpp
// 
//

// EPOC includes
#include <e32base.h>

// Test system includes
#include <testframework.h>

// Specific includes for this test suite
#include "TSU_MmTsthStep11.h"
#include "TSU_MmTsthSuite11.h"

// Specific includes for these test steps
#include "TSU_MmTsth11.h"
#include "TestStepVirtualStub.h"
#include "TestSuiteVirtualStub.h"

// --------------------------------------------

// Unit Test Suite 11 : TestStep.cpp
// Depends on : none
// Requires : subclass implementing pure virtual DoTestStepL()

// Tests :-
//	RTestStep() constructor (thru stub)
//  test accessors
//	DoTestStepL
//	DoTestStepPreamble
//  DoTestStepPostamble
//	Load / unload config

// ---------------------
// RTestMmTsthU1101

RTestMmTsthU1101* RTestMmTsthU1101::NewL()
	{
	RTestMmTsthU1101* self = new(ELeave) RTestMmTsthU1101;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1101::RTestMmTsthU1101()
	{
	iTestStepName = _L("MM-TSTH-U-1101");
	}


// preamble
TVerdict RTestMmTsthU1101::OpenL()
	{
	// stub - purpose is that for this test we do not run the parent preamble
	// which initialises iStepStub
	return iTestStepResult = EPass;
	}

// postamble
void RTestMmTsthU1101::Close()
	{
	}

// do the test step
TVerdict RTestMmTsthU1101::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestStep - construct"));
	TVerdict currentVerdict = EPass;

	RTestStepVirtualStub* theStepStub = NULL;
	TRAPD(err, theStepStub = RTestStepVirtualStub::NewL());
	if(err != KErrNone)
		{
		ERR_PRINTF1(_L("RTestStepVirtualStub::NewL() left"));
		return iTestStepResult = EFail;
		}

	const TPtrC& theName = theStepStub->StepName();
	if(theName != KTestStepVirtualStubName)
		{
		ERR_PRINTF1(_L("RTestStepVirtualStub did not initialise correctly"));
		delete theStepStub;
		return iTestStepResult = EFail;
		}

	delete theStepStub;
	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ------------------------
// RTestMmTsthU1102
RTestMmTsthU1102* RTestMmTsthU1102::NewL()
	{
	RTestMmTsthU1102* self = new(ELeave) RTestMmTsthU1102;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1102::RTestMmTsthU1102()
	{
	iTestStepName = _L("MM-TSTH-U-1102");
	}

// do the test step
TVerdict RTestMmTsthU1102::DoTestStepL()
	{
	// RTestStepVirtualStub contains extra methods by which we can verify our accessors
	INFO_PRINTF1(_L("Unit test for TestStep - accessors"));

	TVerdict currentVerdict = EPass;

	// test accessor to set name - not part of RTestStep
	TBufC<KMaxLenTestStepName> KTestStepName = _L("TestStepName");
	iStepStub->TestSetStepName(KTestStepName);
	const TPtrC& theName = iStepStub->StepName();
	if(theName != KTestStepName)
		{
		ERR_PRINTF1(_L("RTestStep::StepName() failed"));
		return iTestStepResult = EFail;
		}

	TVerdict theResult = EInconclusive;
	iStepStub->SetResult(theResult);
	// test accessor to get result - not part of RTestStep
	if(theResult != iStepStub->TestGetResult())
		{
		ERR_PRINTF1(_L("RTestStep::SetResult() failed"));
		return iTestStepResult = EFail;
		}

	CTestSuiteVirtualStub* theSuite = new (ELeave) CTestSuiteVirtualStub;
	CleanupStack::PushL(theSuite);
	theSuite->ConstructL();

	iStepStub->SetSuite(theSuite);
	// test accessor to get suite - not part of RTestStep
	if(theSuite != iStepStub->TestGetSuite())
		{
		ERR_PRINTF1(_L("RTestStep::SetSuite() failed"));
		CleanupStack::PopAndDestroy(); // theSuite
		return iTestStepResult = EFail;
		}
	// cleanup
	CleanupStack::PopAndDestroy(); // theSuite

	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ---------------------
// RTestMmTsthU1103

RTestMmTsthU1103* RTestMmTsthU1103::NewL()
	{
	RTestMmTsthU1103* self = new(ELeave) RTestMmTsthU1103;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1103::RTestMmTsthU1103()
	{
	iTestStepName = _L("MM-TSTH-U-1103");
	}

// do the test step.
TVerdict RTestMmTsthU1103::DoTestStepL()
	{
	// RTestStepVirtualStub contains extra methods by which we can verify our accessors
	INFO_PRINTF1(_L("Unit test for TestStep - preamble"));

	TVerdict currentVerdict = EPass;

	iStepStub->OpenL();
	if(!iStepStub->PreambleRun())
		{
		ERR_PRINTF1(_L("RTestStep::OpenL() failed"));
		return iTestStepResult = EFail;
		}

	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ---------------------
// RTestMmTsthU1104

RTestMmTsthU1104* RTestMmTsthU1104::NewL()
	{
	RTestMmTsthU1104* self = new(ELeave) RTestMmTsthU1104;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1104::RTestMmTsthU1104()
	{
	iTestStepName = _L("MM-TSTH-U-1104");
	}

// do the test step
TVerdict RTestMmTsthU1104::DoTestStepL()
	{
	// RTestStepVirtualStub contains extra methods by which we can verify our accessors
	INFO_PRINTF1(_L("Unit test for TestStep - postamble"));

	TVerdict currentVerdict = EPass;

	iStepStub->Close();
	if(!iStepStub->PostambleRun())
		{
		ERR_PRINTF1(_L("RTestStep::Close() failed"));
		return iTestStepResult = EFail;
		}

	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ---------------------
// RTestMmTsthU1105
RTestMmTsthU1105* RTestMmTsthU1105::NewL()
	{
	RTestMmTsthU1105* self = new(ELeave) RTestMmTsthU1105;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1105::RTestMmTsthU1105()
	{
	iTestStepName = _L("MM-TSTH-U-1105");
	}

// do the test step
TVerdict RTestMmTsthU1105::DoTestStepL()
	{
	// RTestStepVirtualStub contains extra methods by which we can verify our accessors
	INFO_PRINTF1(_L("Unit test for TestStep - step"));

	TVerdict currentVerdict = EPass;

	iStepStub->DoTestStepL();
	if(!iStepStub->StepRun())
		{
		ERR_PRINTF1(_L("RTestStep::DoTestStepL() failed"));
		return iTestStepResult = EFail;
		}

	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ------------------------
// RTestMmTsthU1111
RTestMmTsthU1111* RTestMmTsthU1111::NewL()
	{
	RTestMmTsthU1111* self = new(ELeave) RTestMmTsthU1111;
	return self;
	}

// Each test step initialises its own name.
RTestMmTsthU1111::RTestMmTsthU1111()
	{
	iTestStepName = _L("MM-TSTH-U-1111");
	}

// do the test step
TVerdict RTestMmTsthU1111::DoTestStepL()
	{
	const TInt KTestBufSize = 64;

	// RTestStepVirtualStub contains extra methods by which we can verify our accessors
	INFO_PRINTF1(_L("Unit test for TestStep - load config"));

	TVerdict currentVerdict = EPass;

	TBufC<KTestBufSize> KConfigName = _L("TSU_MMTSTH11_config.ini");
	iStepStub->LoadConfig(KConfigName);

	// we get no return saying that the file hasn't loaded - 
	// therefore check something in the file we know is there : [SectionOne] keybool = true
	// because these functions are protected, we have to wrap them in iStepStub

	TBool aBoolResult;
	TBool returnValue = iStepStub->TestGetBoolFromConfig(_L("SectionOne"),_L("Keybool"), aBoolResult);
	if(!returnValue)
		{
		ERR_PRINTF1(_L("RTestStep::LoadConfig() failed"));
		iStepStub->UnloadConfig();
		return iTestStepResult = EFail;
		}

	iStepStub->UnloadConfig();
	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ------------------------