// 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 <s32file.h>
#include "T_SysStartApparcStep.h"
#include "tssaac/tssaac.h"
_LIT(KApparcPanicFile,"c:\\T_SSAAC_PanicResultFile.txt");
const TChar KDelimChar = '=';
/**
The expected results are hard coded from the test specification.
*/
//Test case 1
const TInt KExpectedStartApp1LRes1 = KErrNone;
const TInt KExpectedStartApp1LRes2 = KErrNotFound;
//Test case 99
const TInt KExpectedLocalisedCaptionLRes1 = 0;
const TInt KExpectedLocalisedCaptionLRes2 = 0;
/**
Read the results of the individual tests. The test number is determined by
reading the configuration file z:\\apparctest\\TestCaseConfig.txt and then one
of two functions is called, one which handles tests which panic and one which
handles tests which don't.
Non-paniccing test results are read from file c:\\SysStartApparc_TestStartApp1L.txt
The order in which these results are written in CSysStartApparcTestCase::WriteResultFileL()
MUST match the order in which they are read and tested in CheckApparcResultsL()
The expected results are hard coded from the test specification.(see above)
Paniccing test results are read from file c:\\T_SSAAC_PanicResultFile.txt
The result is a '1 or 0' to represent a PASS or a FAIL The actual pass critria
are found in file sysstart_apparc_checkEpocWind.bat where the test is performed and
the T_SSAAC_PanicResultFile file created with the appropriate result
*/
/**
Read the results of the individual tests that do not panic. Currently, there is
only one test that does not panic. Results are read in from file SysStartApparc_TestStartApp1L.txt
and compared with the expected results
*/
void CT_SysStartApparcStep::CheckApparcResultsL()
{
RFs fs;
User::LeaveIfError(fs.Connect());
CleanupClosePushL(fs);
RFileReadStream reader;
User::LeaveIfError(reader.Open(fs, KSsaacResultFile, EFileRead));
CleanupClosePushL(reader);
TBuf8<64> myDes;
TInt ret = 0;
// Read 16 bits - StartApp1LRes1
reader.ReadL(myDes, KDelimChar);
ret = reader.ReadInt16L();
if(iTestcase == 1)
{
INFO_PRINTF3(_L("Test StartApp1LRes1 Count - Expected: %d, Actual: %d"), KExpectedStartApp1LRes1, ret);
TEST(ret==KExpectedStartApp1LRes1);
}
else
{ // test case is 99
INFO_PRINTF3(_L("Test LocalisedCaptionLRes1 Count - Expected: %d, Actual: %d"), KExpectedLocalisedCaptionLRes1, ret);
TEST(ret==KExpectedLocalisedCaptionLRes1);
}
// Read 16 bits - StartApp1LRes2
reader.ReadL(myDes, KDelimChar);
ret = reader.ReadInt16L();
if(iTestcase == 1)
{
INFO_PRINTF3(_L("Test StartApp1LRes2 Count - Expected: %d, Actual: %d"), KExpectedStartApp1LRes2, ret);
TEST(ret==KExpectedStartApp1LRes2);
}
else // test cass is 99
{
INFO_PRINTF3(_L("Test LocalisedCaptionLRes2 Count - Expected: %d, Actual: %d"), KExpectedLocalisedCaptionLRes2, ret);
TEST(ret==KExpectedLocalisedCaptionLRes2);
}
// clean-up
CleanupStack::PopAndDestroy(2, &fs);
}
/**
Read the results of the individual tests that panic. After a panic, the
batch file sysstartapparc_checkEpocWind.bat searched the EpocWind.out file
for lines of text that verify that a panic has occurred with the correct
KERN-EXEC number and then writes the result to a text file (pass=1, fail=0)
for processing here.
*/
void CT_SysStartApparcStep::CheckApparcPanicResultsL()
{
RFs fs;
User::LeaveIfError(fs.Connect());
INFO_PRINTF1(_L("File server connected"));
CleanupClosePushL(fs);
RFileReadStream reader;
User::LeaveIfError(reader.Open(fs, KApparcPanicFile, EFileRead));
CleanupClosePushL(reader);
TBuf8<64> myDes;
TInt expected = 1; //a PASS
//File containd a test name and a test result, Move past the test name
reader.ReadL(myDes, KDelimChar);
//Read the test result
reader.ReadL(myDes, KDelimChar);
// Read 16 bits - StartApp1LRes1
TChar result(reader.ReadUint8L());
TInt ret = result.GetNumericValue();
INFO_PRINTF3(_L("Test StartApp1LRes1 Count - Expected: %d, Actual: %d"), KTestResultPass, ret);
TEST(ret==expected);
// clean-up
CleanupStack::PopAndDestroy(2, &fs);
}
/**
Destructor
*/
CT_SysStartApparcStep::~CT_SysStartApparcStep()
{
}
/**
Constructor
*/
CT_SysStartApparcStep::CT_SysStartApparcStep()
{
// Call base class method to set up the human readable name for logging
SetTestStepName(KT_SysStartApparcStep);
}
/**
Override of base class virtual.
@return - TVerdict code
*/
TVerdict CT_SysStartApparcStep::doTestStepL()
{
INFO_PRINTF1(_L("Test T_SysStartApparcStep: Started"));
__UHEAP_MARK;
TInt ret=KErrGeneral;
iTestcase=ReadConfigFileL();
//Test case 1 and 99 are the only tests that do not panic
if( (iTestcase==1) || (iTestcase==29) )
{
TRAP(ret, CheckApparcResultsL());
}
else
{
TRAP(ret, CheckApparcPanicResultsL());
}
INFO_PRINTF2(_L("CheckApparcResultsL ends with code %d"), ret);
TEST(ret==KErrNone);
__UHEAP_MARKEND;
INFO_PRINTF1(_L("Test T_SysStartApparcStep: Finished"));
return TestStepResult();
}
/**
Reads the input config file and returns the test case number
Defined in sysstart_apparc_run.bat
@return TInt - the test case number
*/
TInt CT_SysStartApparcStep::ReadConfigFileL()
{
RFs fs;
User::LeaveIfError(fs.Connect());
CleanupClosePushL(fs);
RFileReadStream reader;
User::LeaveIfError(reader.Open(fs, KApparcConfigFile, EFileRead));
CleanupClosePushL(reader);
TBuf8<255> aDes;
reader.ReadL(aDes, KDelimChar);
//Read in a two character representation of a number and convert to an integer
TChar result1(reader.ReadInt8L());
TChar result0(reader.ReadInt8L());
TInt aTestCase = result1.GetNumericValue()*10 + result0.GetNumericValue();
// clean-up
CleanupStack::PopAndDestroy(2, &fs);
return aTestCase;
}