Update contrib.
2 * Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
19 #include "tprimevectorperformance.h"
24 _LIT(KPrimeVectorFormat, "\tPrime Vector Primality Test Time\t%f");
26 CTestAction* CPrimeVectorPerformance::NewL(RFs& aFs, CConsoleBase& aConsole,
27 Output& aOut, const TTestActionSpec& aTestActionSpec)
29 CTestAction* self = CPrimeVectorPerformance::NewLC(aFs, aConsole,
30 aOut, aTestActionSpec);
35 CTestAction* CPrimeVectorPerformance::NewLC(RFs& aFs, CConsoleBase& aConsole,
36 Output& aOut, const TTestActionSpec& aTestActionSpec)
38 CPrimeVectorPerformance* self = new(ELeave) CPrimeVectorPerformance(aFs, aConsole, aOut);
39 CleanupStack::PushL(self);
40 self->ConstructL(aTestActionSpec);
44 CPrimeVectorPerformance::~CPrimeVectorPerformance()
49 CPrimeVectorPerformance::CPrimeVectorPerformance(RFs& aFs, CConsoleBase& aConsole,
50 Output& aOut) : CTestAction(aConsole, aOut), iFs(aFs)
54 void CPrimeVectorPerformance::ConstructL(const TTestActionSpec& aTestActionSpec)
56 CTestAction::ConstructL(aTestActionSpec);
57 iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length());
58 iBody->Des().Copy(aTestActionSpec.iActionBody);
60 HBufC8* buf = Input::ParseElementHexL(*iBody, _L8("<prime>"));
61 CleanupStack::PushL(buf);
62 iPrime = RInteger::NewL(*buf);
63 CleanupStack::PopAndDestroy(buf);
64 iIterations = Input::ParseIntElement(*iBody, _L8("<iterations>"), _L8("</iterations>"));
67 void CPrimeVectorPerformance::DoPerformPrerequisite(TRequestStatus& aStatus)
69 TRequestStatus* status = &aStatus;
70 User::RequestComplete(status, KErrNone);
71 iActionState = CTestAction::EAction;
74 void CPrimeVectorPerformance::DoPerformPostrequisite(TRequestStatus& aStatus)
76 TRequestStatus* status = &aStatus;
78 User::RequestComplete(status, KErrNone);
81 void CPrimeVectorPerformance::DoReportAction(void)
85 void CPrimeVectorPerformance::DoCheckResult(TInt)
89 void CPrimeVectorPerformance::PerformAction(TRequestStatus& aStatus)
92 TRequestStatus* status = &aStatus;
94 TTimeIntervalSeconds diff(0);
95 const TTimeIntervalSeconds iterationTime(iIterations);
100 start.UniversalTime();
101 while (diff < iterationTime)
103 iResult = iPrime.IsPrimeL();
108 end.SecondsFrom(start, diff);
112 TTimeIntervalMicroSeconds time = end.MicroSecondsFrom(start);
113 TReal rate = I64REAL(time.Int64()) / iterations;
114 TReal rtime = I64REAL(time.Int64());
116 HBufC* realbuf = HBufC::NewLC(128);
117 TPtr buf = realbuf->Des();
118 buf.Format(KPrimeVectorFormat, rate, iterations, rtime);
119 iOut.writeString(buf);
120 iConsole.Printf(_L("."));
121 CleanupStack::PopAndDestroy(realbuf);
123 User::RequestComplete(status, KErrNone);
124 iActionState = CTestAction::EPostrequisite;