sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent sl@0: */ sl@0: sl@0: #include sl@0: #include "t_wservintegstepbase.h" sl@0: #include "t_wservconsts.h" sl@0: sl@0: /** sl@0: CT_WServIntegStep constructor. sl@0: @return N/A sl@0: @pre None sl@0: @post CT_WServIntegStep 1st stage constructor sl@0: */ sl@0: CT_WServIntegStep::CT_WServIntegStep() sl@0: { sl@0: SetTestStepName(KT_WServIntegStep); sl@0: } sl@0: sl@0: CT_WServIntegStep::~CT_WServIntegStep() sl@0: { sl@0: iFs.Close(); sl@0: } sl@0: sl@0: /** sl@0: Starts test step sl@0: @internalComponent sl@0: @return TVerdict pass / fail sl@0: @pre N/A sl@0: @post N/A sl@0: */ sl@0: enum TVerdict CT_WServIntegStep::doTestStepL() sl@0: { sl@0: __UHEAP_MARK; sl@0: sl@0: ERR_PRINTF1(_L("Executing Base class")); sl@0: sl@0: __UHEAP_MARKEND; sl@0: sl@0: return TestStepResult(); sl@0: } sl@0: sl@0: void CT_WServIntegStep::WaitForTestL(const TDesC& aFileName, const TInt& aMaxTimeSeconds) sl@0: { sl@0: RFile myFile; sl@0: TInt err = KErrNotFound; sl@0: sl@0: TInt endTimer = aMaxTimeSeconds*1000000; // convert to milli secs sl@0: TInt myTimer = 0; sl@0: sl@0: err = myFile.Open(iFs,aFileName,EFileRead); sl@0: sl@0: while (err != KErrNone && myTimer < endTimer) sl@0: { sl@0: myTimer += 500000; sl@0: User::After(500000); sl@0: err = myFile.Open(iFs,aFileName,EFileRead); sl@0: } sl@0: sl@0: sl@0: if (err != KErrNotFound) sl@0: { sl@0: myFile.Close(); sl@0: iFileList.AppendL(&aFileName); sl@0: } sl@0: } sl@0: sl@0: void CT_WServIntegStep::GetConfigDataL(const TDesC& aData, const TDesC& aName) sl@0: { sl@0: TBool moreData=ETrue; sl@0: TInt index=0; sl@0: TBuf tempStore; sl@0: TPtrC data; sl@0: TPtrC name; sl@0: sl@0: // populate config data with that contained in [default] section sl@0: while ( moreData ) sl@0: { sl@0: tempStore.Format(aData, ++index); sl@0: moreData=GetStringFromConfig(KDefaultSectionName(), tempStore, data); sl@0: if ( moreData ) sl@0: { sl@0: tempStore.Format(aName, index); sl@0: moreData=GetStringFromConfig(KDefaultSectionName(), tempStore, name); sl@0: sl@0: if ( moreData ) sl@0: { sl@0: iWServConfigData.AddDataL(name, data); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("data %S has no name"), &data); sl@0: SetTestStepResult(EFail); sl@0: } sl@0: } sl@0: } sl@0: sl@0: // update config data with that contained in the config section sl@0: // appropriate to the test case being executed sl@0: moreData=ETrue; sl@0: index = 0; sl@0: while ( moreData ) sl@0: { sl@0: tempStore.Format(aData, ++index); sl@0: moreData=GetStringFromConfig(ConfigSection(), tempStore, data); sl@0: if ( moreData ) sl@0: { sl@0: tempStore.Format(aName, index); sl@0: moreData=GetStringFromConfig(ConfigSection(), tempStore, name); sl@0: sl@0: if ( moreData ) sl@0: { sl@0: TRAPD(err,iWServConfigData.AddDataL(name, data)); sl@0: if (err==KErrAlreadyExists) sl@0: { sl@0: iWServConfigData.ReplaceData(name, data); sl@0: } sl@0: else sl@0: { sl@0: if (err != KErrNone) sl@0: { sl@0: User::Leave(err); sl@0: } sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("data %S has no name"), &data); sl@0: SetTestStepResult(EFail); sl@0: } sl@0: } sl@0: } sl@0: } sl@0: sl@0: void CT_WServIntegStep::PrintConfigDataL(const TDesC& aFileName) sl@0: { sl@0: RFileWriteStream writer; sl@0: writer.PushL(); // writer on cleanup stack sl@0: TInt err = iFs.MkDirAll(aFileName); sl@0: TEST(err==KErrNone||err==KErrAlreadyExists); sl@0: INFO_PRINTF2(_L("Create Config File: %S"), &aFileName); sl@0: User::LeaveIfError(writer.Replace(iFs, aFileName, EFileStreamText|EFileWrite)); sl@0: writer.CommitL(); sl@0: CleanupStack::PopAndDestroy(&writer); // writer sl@0: sl@0: CIniData* myData=CIniData::NewL(aFileName); sl@0: CleanupStack::PushL(myData); sl@0: sl@0: for (TInt index=0;indexAddValue(KDefaultSectionName, name, data); sl@0: INFO_PRINTF3(_L("AddValue - Expected: %d, Actual: %d"), KErrNone, err); sl@0: TEST(err==KErrNone); sl@0: } sl@0: sl@0: myData->WriteToFileL(); sl@0: iFileList.AppendL(&aFileName); sl@0: CleanupStack::PopAndDestroy(myData); sl@0: } sl@0: sl@0: void CT_WServIntegStep::CheckResultsL(const TDesC& aData, const TDesC& aName,const TDesC& aFileName) sl@0: { sl@0: GetConfigDataL(aData,aName); sl@0: sl@0: CIniData* myData=CIniData::NewL(aFileName); sl@0: iFileList.AppendL(&aFileName); sl@0: CleanupStack::PushL(myData); sl@0: sl@0: for (TInt index=0;indexFindVar(KDefaultSectionName, name, actData); sl@0: if (found) sl@0: { sl@0: INFO_PRINTF4(_L("Result: %S, Expected: %S, Actual: %S"), &name, &data, &actData); sl@0: TEST(actData==data); sl@0: } sl@0: else sl@0: { sl@0: #ifdef __WINS__ sl@0: ERR_PRINTF3(_L("NOT FOUND: Result: %S, \t\tExpected Value: %S"), &name, &data); sl@0: #else sl@0: // in the case of a non-debug build then KDsaRotationAbortTimeoutCount cannot sl@0: // be measured, and hence is ignored. sl@0: if (name.Compare(_L("KDsaRotationAbortTimeoutCount"))!=KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("NOT FOUND: Result: %S, \t\tExpected Value: %S"), &name, &data); sl@0: } sl@0: #endif sl@0: } sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(myData); sl@0: sl@0: ClearConfigData(); sl@0: } sl@0: sl@0: void CT_WServIntegStep::PrintResultsL(const TDesC& aFileName) sl@0: { sl@0: RFile resultFile; sl@0: CleanupClosePushL(resultFile); sl@0: User::LeaveIfError(resultFile.Open(iFs,aFileName,EFileRead)); sl@0: sl@0: TInt size = 0; sl@0: User::LeaveIfError(resultFile.Size(size)); sl@0: TText* data=(TText*)User::AllocL(size); sl@0: CleanupStack::PushL(data); sl@0: TPtr8 resultData((TUint8*)data, 0, size);; sl@0: resultFile.Read(resultData); sl@0: TUint8* ptr = (TUint8*)data; sl@0: sl@0: // NON-UNICODE so convert to UNICODE sl@0: TText* newdata = (TText*)User::AllocL(size*sizeof(TText)); sl@0: CleanupStack::PushL(newdata); sl@0: TPtr printData(newdata, size, size); sl@0: for(TInt i=0 ; i dateStr; sl@0: _LIT(KDateString3,"%-B%:0%J%:1%T%:2%S%:3 %Cms"); sl@0: timeStamp.FormatL(dateStr, KDateString3); sl@0: RDebug::Print(_L("*** Time Stamp - %S"), &dateStr); sl@0: RDebug::Print(_L("************************************************************")); sl@0: } sl@0: sl@0: enum TVerdict CT_WServIntegStep::doTestStepPreambleL() sl@0: { sl@0: TVerdict ret=CTestStep::doTestStepPreambleL(); sl@0: sl@0: User::LeaveIfError(iFs.Connect()); sl@0: sl@0: return ret; sl@0: } sl@0: sl@0: enum TVerdict CT_WServIntegStep::doTestStepPostambleL() sl@0: { sl@0: return TestStepResult(); sl@0: }