sl@0: /* sl@0: * Copyright (c) 1998-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 the License "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: sl@0: #include "tvectortest.h" sl@0: #include sl@0: #include "t_input.h" sl@0: #include sl@0: #include sl@0: #include sl@0: #include "tvectorutils.h" sl@0: #include "performancetest.h" sl@0: #include sl@0: sl@0: _LIT8(KKeyBitsStart, ""); sl@0: _LIT8(KKeyBitsEnd, ""); sl@0: _LIT8(KResultStart, ""); sl@0: _LIT8(KResultEnd, ""); sl@0: sl@0: //////////////////////////////////////////////////////////////////////////////// sl@0: // CVectorTest sl@0: //////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: CVectorTest::CVectorTest(CConsoleBase& aConsole, Output& aOut) sl@0: : CTestAction(aConsole, aOut), iPerfTestIterations(100) sl@0: { sl@0: } sl@0: sl@0: CVectorTest::~CVectorTest() sl@0: { sl@0: } sl@0: sl@0: void CVectorTest::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CTestAction::ConstructL(aTestActionSpec); sl@0: sl@0: if (CPerformance::PerformanceTester()->IsTestingPerformance()) sl@0: {// Number of test iterations sl@0: TPtrC8 itsPtr = Input::ParseElement(aTestActionSpec.iActionBody, KIterationsStart, KIterationsEnd); sl@0: if (itsPtr!=KNullDesC8) sl@0: { sl@0: TLex8 lex; sl@0: lex.Assign(itsPtr); sl@0: User::LeaveIfError(lex.Val(iPerfTestIterations)); sl@0: if (iPerfTestIterations > KMaxIterations) sl@0: User::Panic(_L("AsymmetricPerformance.exe"), KErrArgument); sl@0: } sl@0: } sl@0: sl@0: TPtrC8 keyBitsPtr = Input::ParseElement(aTestActionSpec.iActionBody, KKeyBitsStart, KKeyBitsEnd); sl@0: if (keyBitsPtr!=KNullDesC8) sl@0: { sl@0: TLex8 lex; sl@0: lex.Assign(keyBitsPtr); sl@0: User::LeaveIfError(lex.Val(iKeyBits)); sl@0: } sl@0: sl@0: TPtrC8 resultIn = Input::ParseElement(aTestActionSpec.iActionResult, KResultStart, KResultEnd); sl@0: iExpectedResult = VectorUtils::ParseBoolL(resultIn); sl@0: } sl@0: sl@0: void CVectorTest::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: sl@0: if (CPerformance::PerformanceTester()->IsTestingPerformance()) sl@0: { sl@0: iConsole.Printf(_L(">")); // Indicates start of test sl@0: TRAP(iActionResult, DoPerformanceTestActionL()); sl@0: } sl@0: else sl@0: { sl@0: TRAP(iActionResult, DoPerformActionL()); sl@0: } sl@0: sl@0: if (iActionResult==KErrNoMemory) sl@0: { sl@0: User::Leave(iActionResult); // For OOM testing sl@0: } sl@0: if (iActionResult==KErrKeyNotWeakEnough) sl@0: { sl@0: iResult = ETrue; sl@0: iConsole.Printf(_L("Crypto libraries returned KErrKeyNotWeakEnough! Passing test automatically.\n\r")); sl@0: iOut.writeString(_L("Crypto libraries returned KErrKeyNotWeakEnough! Passing test automatically.\n\r")); sl@0: } sl@0: sl@0: User::RequestComplete(status, iActionResult); sl@0: sl@0: iActionState = CTestAction::EPostrequisite; sl@0: sl@0: } sl@0: sl@0: void CVectorTest::DoPerformPrerequisite(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, KErrNone); sl@0: iActionState = CTestAction::EAction; sl@0: } sl@0: sl@0: void CVectorTest::DoPerformPostrequisite(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: iFinished = ETrue; sl@0: User::RequestComplete(status, KErrNone); sl@0: } sl@0: sl@0: void CVectorTest::DoReportAction(void) sl@0: { sl@0: } sl@0: sl@0: void CVectorTest::DoCheckResult(TInt /*aError*/) sl@0: { sl@0: // If using Keith's fixed up testframework for testing failures, iResult will sl@0: // have already been corrected for a deliberate fail result. sl@0: // If not using Keith's testframework iResult is still a fail result at this sl@0: // point, so now's the time to adjust for deliberate failure. sl@0: sl@0: if (!iResult) sl@0: iResult = (iResult && iExpectedResult) || (!iResult && !iExpectedResult); sl@0: sl@0: if (iResult) sl@0: iConsole.Printf(_L(".")); sl@0: else sl@0: iConsole.Printf(_L("X")); sl@0: }