mmtestenv/mmtestfwunittest/src/tsu_mmtsth12/TSU_MmTsth12.cpp
author Dario Sestito <darios@symbian.org>
Tue, 20 Jul 2010 11:22:23 +0100
branchECAM_2
changeset 35 ca251dbe8e03
parent 0 40261b775718
permissions -rw-r--r--
Created ECAM_2 branch to host ISB development on ECAM stage 2

// 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 12 : TestSuite.cpp
// 
//

// EPOC includes
#include <e32base.h>

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

// Specific includes for this test suite
#include "TSU_MmTsthStep12.h"
#include "TSU_MmTsthSuite12.h"

// Specific includes for these test steps
#include "TSU_MmTsth12.h"

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

// Unit Test Suite 12 : TestSuite.cpp
// Depends on : TestStep

// Tests :-
// 1 ConstructL / InitialiseL
// 2 AddTestStepL
// 3 DoTestStep
// 11 Log - not tested explicitly (if things are logging, it's working!)
// 12 LogExtra - not tested explicitly
// 21 GetVersion
// 22 accessors

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

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

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

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

// do the test step
TVerdict RTestMmTsthU1201::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestSuite - ConstructL / InitialiseL"));

	TVerdict currentVerdict = EPass;

	CTestSuiteVirtualStub* theSuiteStub = new (ELeave) CTestSuiteVirtualStub;
	CleanupStack::PushL(theSuiteStub);
	TRAPD(err, theSuiteStub->ConstructL());
	if(err != KErrNone)
		{
		ERR_PRINTF1(_L("CTestSuiteVirtualStub::ConstructL() left"));
		CleanupStack::PopAndDestroy(theSuiteStub);
		return iTestStepResult = EFail;
		}
	iSuiteStub = theSuiteStub;

	// NB ensure the suite can log - set its logger to ours
	iSuiteStub->SetLogSystem(iSuite->LogSystem());

	// ConstructL calls InitialiseL.
	// the suite should be called TestSuiteVirtualStub and contain one step, TestStepVirtualStub
	// we can't access this direct but we can run DoTestStep() on it,
	// and any error code other than ETestSuiteError is a pass
	
	TVerdict stepVerdict = iSuiteStub->DoTestStep(_L("TestStepVirtualStub"), KNullDesC, KNullDesC);
	if(stepVerdict == ETestSuiteError)
	{
		ERR_PRINTF1(_L("RTestSuiteVirtualStub::InitialiseL() did not setup test step"));
		CleanupStack::PopAndDestroy(theSuiteStub);
		return iTestStepResult = EFail;
	}

	CleanupStack::PopAndDestroy(theSuiteStub);
	iSuiteStub = NULL;

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

// ------------------------
// RTestMmTsthU1202

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

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

// do the test step
TVerdict RTestMmTsthU1202::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestSuite - AddTestStepL"));

	TVerdict currentVerdict = EPass;

	TRAPD(err, iSuiteStub->AddTestStepL(RTestStepVirtualStub2::NewL()));
	if(err != KErrNone)
		{
		ERR_PRINTF1(_L("RTestSuiteVirtualStub::AddTestStepL() left"));
		return iTestStepResult = EFail;
		}

	// find the step we just added
	TVerdict stepVerdict = iSuiteStub->DoTestStep(_L("TestStepVirtualStub2"), KNullDesC, KNullDesC);
	if(stepVerdict == ETestSuiteError)
		{
		ERR_PRINTF1(_L("RTestSuiteVirtualStub::AddTestStepL() failed"));
		return iTestStepResult = EFail;
		}

	// no pop / delete - the SUITE owns the step, we don't.
	return iTestStepResult = currentVerdict; // should be EPass if we've got here
	}

// ------------------------
// RTestMmTsthU1203

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

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

// do the test step
TVerdict RTestMmTsthU1203::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestSuite - DoTestStepL"));

	TVerdict currentVerdict = EPass;

	// do the step. this time we're testing for PASS only
	TVerdict stepVerdict = iSuiteStub->DoTestStep(_L("TestStepVirtualStub"), KNullDesC, KNullDesC);
	if(stepVerdict != EPass)
		{
		ERR_PRINTF1(_L("RTestSuiteVirtualStub::DoTestStepL() failed"));
		return iTestStepResult = EFail;
		}

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

// ------------------------
// RTestMmTsthU1221

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

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

// do the test step
TVerdict RTestMmTsthU1221::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestSuite - GetVersion"));

	TVerdict currentVerdict = EPass;

	// get the version, compare it against our known value
	_LIT(KTestVersion,"CTestSuiteVirtualStub Version");
	TPtrC version = iSuiteStub->GetVersion();
	if(version != KTestVersion)
		{
		ERR_PRINTF1(_L("RTestSuiteVirtualStub::GetVersion() failed"));
		return iTestStepResult = EFail;
		}

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

// ------------------------
// RTestMmTsthU1222

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

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

// do the test step.
TVerdict RTestMmTsthU1222::DoTestStepL()
	{
	INFO_PRINTF1(_L("Unit test for TestSuite - accessors"));

	TVerdict currentVerdict = EPass;

	iSuiteStub->SetSeverity(ESevrInfo);
	TInt theSev = iSuiteStub->Severity();
	if(theSev != ESevrInfo)
		{
		ERR_PRINTF1(_L("CTestSuite::SetSeverity() failed"));
		return iTestStepResult = EFail;
		}

	iSuiteStub->SetStepStatus(EStepStatusFinished);
	TTestStepStatus theStepStatus = iSuiteStub->StepStatus();
	if(theStepStatus != EStepStatusFinished)
		{
		ERR_PRINTF1(_L("CTestSuite::SetStepStatus() failed"));
		return iTestStepResult = EFail;
		}

	CLog* theLog = CLog::NewL();
	iSuiteStub->SetLogSystem(theLog);
	CLog* theLogSystem = iSuiteStub->LogSystem();
	if(theLog != theLogSystem)
		{
		ERR_PRINTF1(_L("CTestSuite::SetLogSystem() failed"));
		delete theLog;
		return iTestStepResult = EFail;
		}

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