crypto/weakcrypto/test/tbigint/tprimevector.cpp
author hgs
Thu, 24 Jun 2010 15:39:07 +0530
changeset 72 de46a57f75fb
permissions -rw-r--r--
201023_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     1
/*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     3
* All rights reserved.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     8
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    11
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    12
* Contributors:
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    13
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    14
* Description: 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    15
*
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    16
*/
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    17
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    18
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    19
#include "tprimevector.h"
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    20
#include "t_input.h"
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    21
#include <bigint.h>
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    22
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    23
CTestAction* CPrimeVector::NewL(RFs& aFs, CConsoleBase& aConsole, 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    24
	Output& aOut, const TTestActionSpec& aTestActionSpec)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    25
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    26
	CTestAction* self = CPrimeVector::NewLC(aFs, aConsole,
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    27
		aOut, aTestActionSpec);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    28
	CleanupStack::Pop();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    29
	return self;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    30
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    31
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    32
CTestAction* CPrimeVector::NewLC(RFs& aFs, CConsoleBase& aConsole, 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    33
	Output& aOut, const TTestActionSpec& aTestActionSpec)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    34
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    35
	CPrimeVector* self = new(ELeave) CPrimeVector(aFs, aConsole, aOut);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    36
	CleanupStack::PushL(self);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    37
	self->ConstructL(aTestActionSpec);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    38
	return self;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    39
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    40
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    41
CPrimeVector::~CPrimeVector()
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    42
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    43
	delete iBody;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    44
	delete iPrime;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    45
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    46
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    47
CPrimeVector::CPrimeVector(RFs& aFs, CConsoleBase& aConsole, 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    48
	Output& aOut) : CTestAction(aConsole, aOut), iFs(aFs)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    49
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    50
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    51
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    52
void CPrimeVector::ConstructL(const TTestActionSpec& aTestActionSpec)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    53
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    54
	CTestAction::ConstructL(aTestActionSpec);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    55
	iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length());
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    56
	iBody->Des().Copy(aTestActionSpec.iActionBody);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    57
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    58
	iPrime = Input::ParseElementHexL(*iBody, _L8("<prime>"));
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    59
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    60
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    61
void CPrimeVector::DoPerformPrerequisite(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    62
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    63
	TRequestStatus* status = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    64
	User::RequestComplete(status, KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    65
	iActionState = CTestAction::EAction;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    66
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    67
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    68
void CPrimeVector::DoPerformPostrequisite(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    69
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    70
	TRequestStatus* status = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    71
	iFinished = ETrue;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    72
	User::RequestComplete(status, KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    73
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    74
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    75
void CPrimeVector::DoReportAction(void)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    76
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    77
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    78
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    79
void CPrimeVector::DoCheckResult(TInt /*aError*/)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    80
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    81
	iResult = (iResult && iExpectedResult) || (!iResult && !iExpectedResult);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    82
	if (iResult)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    83
		iConsole.Printf(_L("."));
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    84
	else
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    85
		iConsole.Printf(_L("X"));
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    86
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    87
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    88
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    89
void CPrimeVector::PerformAction(TRequestStatus& aStatus)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    90
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    91
	PerformActionL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    92
	TRequestStatus* status = &aStatus;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    93
	User::RequestComplete(status, KErrNone);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    94
	iActionState = CTestAction::EPostrequisite;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    95
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    96
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    97
void CPrimeVector::PerformActionL(void)
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    98
	{
de46a57f75fb 201023_02
hgs
parents:
diff changeset
    99
	__UHEAP_MARK;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   100
	iResult = ETrue;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   101
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   102
	RInteger prime = RInteger::NewL(*iPrime);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   103
	CleanupStack::PushL(prime);
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   104
	iResult = prime.IsPrimeL();
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   105
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   106
	CleanupStack::PopAndDestroy(&prime); 
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   107
	__UHEAP_MARKEND;
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   108
	}
de46a57f75fb 201023_02
hgs
parents:
diff changeset
   109