testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/tefunit/src/ctestsuite.cpp
changeset 2 8bb370ba6d1d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/tefunit/src/ctestsuite.cpp	Fri Apr 09 10:46:28 2010 +0800
@@ -0,0 +1,171 @@
+/*
+* 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 CTestSuite.cpp
+*/
+
+#include "tefunit.h"
+
+CTestSuite::CTestSuite(const TTestName& aName)
+/**
+ * Constructor
+ *
+ * @param aName - Test suite name
+ */
+	: CTestBase(aName)
+	{
+	}
+
+CTestSuite::CTestSuite(CTestSuite &rhs)
+/**
+ * Constructor
+ *
+ * @param rhs - Test suite to copy
+ */
+	: CTestBase(rhs.iName)
+	{
+	iTests=rhs.iTests;
+	}
+
+void CTestSuite::ConstructL()
+/**
+ * ConstructL
+ */
+	{
+	}
+
+CTestSuite* CTestSuite::NewL()
+/**
+ * NewL
+ *
+ * @return - Instance of CTestSuite
+ */
+	{
+	return NewL(_L("TEFUnit"));
+	}
+
+CTestSuite* CTestSuite::NewL(const TTestName& aName)
+/**
+ * NewL
+ *
+ * @param aName - Name of the test suite
+ * @return - Instance of CTestSuite
+ */
+	{
+	CTestSuite* lTestSuite = new (ELeave) CTestSuite(aName);
+	CleanupStack::PushL(lTestSuite);
+	lTestSuite->ConstructL();
+	CleanupStack::Pop();
+	return lTestSuite;
+	}
+
+CTestSuite::~CTestSuite()
+/**
+ * Destructor
+ */
+	{
+	for(TInt lIndex = 0; lIndex < iTests.Count(); lIndex++)
+		{
+		delete iTests[lIndex];
+		iTests[lIndex] = NULL;
+		}
+	iTests.Close();
+	}
+
+void CTestSuite::AddL(CTestBase* aTest)
+/**
+ * AddL
+ *
+ * @param aTest - Test to add to the suite
+ */
+	{
+	User::LeaveIfError(	iTests.Append(aTest) );
+	}
+
+void CTestSuite::RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger)
+/**
+ * RunL
+ *
+ * @param aConfig - Config to use within the test case
+ * @param aLogger - Logger to use within the test case
+ */
+	{
+	// Log that the runner is currently in this suite
+	CTEFLogger::LogTraverse( iName, aLogger );
+	for(TInt lIndex = 0; lIndex < iTests.Count(); lIndex++)
+		{
+		TRAPD(err,iTests[lIndex]->RunL(aConfig, aLogger));
+		if(err != KErrTEFUnitPass)
+			{
+			iError=err;
+			}
+		}
+	if(iError != KErrTEFUnitPass)
+		{
+		User::Leave(iError);
+		}
+	}
+
+void CTestSuite::AcceptL(MVisitor &aVisitor)
+/**
+ * AcceptL
+ *
+ * @param aVisitor - Visitor (runner) to accept
+ */
+	{
+	aVisitor.VisitL(this);
+	}
+
+TInt CTestSuite::Count()
+/**
+ * Count
+ *
+ * @return - Number of tests cases/sub-suites
+ */
+	{
+	return iTests.Count();
+	}
+
+TTestName CTestSuite::NameL( TInt anIndex )
+/**
+ * NameL
+ *
+ * @param anIndex - Index of name to retrieve
+ * @return - Test name
+ */
+	{
+	return TestL(anIndex)->Name();
+	}
+
+CTestBase*	CTestSuite::TestL( TInt anIndex )
+/**
+ * TestL
+ *
+ * @param anIndex - Index of test to retrieve
+ * @return - Test case/suite
+ */
+	{
+	if( anIndex>=iTests.Count() )
+		{
+		User::Leave(KErrTEFUnitFail);
+		}
+
+	return iTests[anIndex];
+	}