diff -r 000000000000 -r ba25891c3a9e installationservices/swi/test/tsishelper/tsishelperstep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/installationservices/swi/test/tsishelper/tsishelperstep.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,167 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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 tsishelperstep.cpp +*/ +#include "tsishelperstep.h" +#include +#include "sishelperclient.h" +#include "swi/launcher.h" + +namespace Swi +{ +class RUiHandler; +} + +CTSISHelperStepController::CTSISHelperStepController() + { + SetTestStepName(KTSISHelperStepController); + } + +TVerdict CTSISHelperStepController::doTestStepL() + { + SetTestStepResult(EFail); + TPtrC sisFileName; + GetStringFromConfig(ConfigSection(),_L("SIS"), sisFileName); + Swi::TSisHelperStartParams params(sisFileName); + User::LeaveIfError(startSisHelper(params)); + Swi::RSisHelper server; + User::LeaveIfError(server.Connect()); + server.OpenDrmContentL(ContentAccess::EExecute); + HBufC8* controller = server.SisControllerLC(); + TPtrC expectedController; + GetStringFromConfig(ConfigSection(),_L("ExpectedController"), expectedController); + + RFile file; + User::LeaveIfError(file.Open(iFs, expectedController, EFileRead)); + TInt pos=0; + User::LeaveIfError(file.Seek(ESeekEnd,pos)); + TInt expectedLength = pos; + pos = 0; + + User::LeaveIfError(file.Seek(ESeekStart, pos)); + + if (expectedLength == controller->Des().Length()) + { + HBufC8* expectedBuffer = HBufC8::NewLC(expectedLength); + TPtr8 expected(expectedBuffer->Des()); + file.Read(expected); + if (expected.Compare(controller->Des()) == 0) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(expectedBuffer); + } + + CleanupStack::PopAndDestroy(controller); + file.Close(); + server.Close(); + return TestStepResult(); + } + + +CTSISHelperStepData::CTSISHelperStepData() + { + SetTestStepName(KTSISHelperStepData); + } + +TVerdict CTSISHelperStepData::doTestStepL() + { + SetTestStepResult(EFail); + + // Start the SISHelper + TPtrC sisFileName; + GetStringFromConfig(ConfigSection(),_L("SIS"), sisFileName); + Swi::TSisHelperStartParams params(sisFileName); + User::LeaveIfError(startSisHelper(params)); + Swi::RSisHelper server; + User::LeaveIfError(server.Connect()); + server.OpenDrmContentL(ContentAccess::EExecute); + + TInt dataUnit = 0; + GetIntFromConfig(ConfigSection(),_L("DataUnit"), dataUnit); + TInt fileNumber = 0; + GetIntFromConfig(ConfigSection(),_L("FileNumber"), fileNumber); + + // Create a file handle to pass + RFs sharedFs; + RFile sharedFile; + User::LeaveIfError(sharedFs.Connect()); + User::LeaveIfError(sharedFs.ShareProtected()); + _LIT(KTempFileName,"\\tsishelper.temp"); + TDriveUnit sysDrive (RFs::GetSystemDrive()); + TBuf<64> tempFileName (sysDrive.Name()); + tempFileName.Append(KTempFileName); + + User::LeaveIfError(sharedFile.Replace (sharedFs, tempFileName, EFileWrite)); + + TInt fakeUiHandler=0; + Swi::RUiHandler& uiHandler=reinterpret_cast(fakeUiHandler); + User::LeaveIfError(server.ExtractFileL(sharedFs, sharedFile, fileNumber, dataUnit, uiHandler)); + sharedFile.Close(); + sharedFs.Close(); + + TPtrC expectedData; + GetStringFromConfig(ConfigSection(),_L("ExpectedData"), expectedData); + RFile oldFile; + User::LeaveIfError(oldFile.Open(iFs, expectedData, EFileRead)); + RFile newFile; + User::LeaveIfError(newFile.Open(iFs, tempFileName, EFileRead)); // KErrBusy means SISHelper didn't close! + + TInt expectedLength(0); + oldFile.Seek(ESeekEnd,expectedLength); + TInt actualLength(0); + newFile.Seek(ESeekEnd,actualLength); + + if (expectedLength == actualLength) + { + TInt pos = 0; + oldFile.Seek(ESeekStart, pos); + newFile.Seek(ESeekStart, pos); + SetTestStepResult(EPass); + for (TInt i=0; i oldPkg(oldChar); + TPckg newPkg(newChar); + oldFile.Read(oldPkg); + newFile.Read(newPkg); + if (oldChar != newChar) + { + SetTestStepResult(EFail); + break; + } + } + } + oldFile.Close(); + newFile.Close(); + + RFs fs; + User::LeaveIfError(fs.Connect()); + // Delete the temp file + TInt error = fs.Delete(tempFileName); + if (error != KErrNone && error != KErrNotFound) + { + User::Leave(error); + } + fs.Close(); + server.Close(); + return TestStepResult(); + }