--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/tasn1/testparameter.cpp Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2006-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:
+* TestParameter.cpp: implementation of the CTestParameter class.
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+#include "testparameter.h"
+
+
+CTestParameter::CTestParameter() : iValid(EFalse)
+{
+};
+
+
+CIntTestParameter* CIntTestParameter::NewL(TDes& aValue)
+ {
+ CIntTestParameter* self = CIntTestParameter::NewLC(aValue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CIntTestParameter* CIntTestParameter::NewLC(TDes& aValue)
+ {
+ CIntTestParameter* self = new(ELeave) CIntTestParameter();
+ CleanupStack::PushL(self);
+ self->Construct(aValue);
+ return self;
+ }
+
+void CIntTestParameter::Construct(TDes& aValue)
+ {
+ TLex lexValue(aValue);
+
+ if(aValue.Left(2) == _L("0x"))
+ {
+ // its a hex number
+ TUint hexValue;
+ TLex hexLex(aValue.Mid(2));
+
+ if(hexLex.Val(hexValue, EHex)!=KErrNone)
+ return;
+ // checks if hexLex is at end of string, if not there was garbage in the string
+ // so throw it out
+ else if(!hexLex.Eos())
+ return;
+
+ iValue = STATIC_CAST(TInt,hexValue);
+ }
+ else if(lexValue.Val(iValue)!=KErrNone)
+ return;
+ // checks if lexValue is at end of string, if not there was garbage in the string
+ // so throw it out
+ else if(!lexValue.Eos())
+ return;
+
+ iValid = ETrue;
+ }
+
+CIntRangeTestParameter* CIntRangeTestParameter::NewL(TDes& aValue)
+ {
+ CIntRangeTestParameter* self = CIntRangeTestParameter::NewLC(aValue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CIntRangeTestParameter* CIntRangeTestParameter::NewLC(TDes& aValue)
+ {
+ CIntRangeTestParameter* self = new(ELeave) CIntRangeTestParameter();
+ CleanupStack::PushL(self);
+ self->Construct(aValue);
+ return self;
+ }
+
+void CIntRangeTestParameter::Construct(TDes& aValue)
+ {
+ if(aValue.Find(_L("..")) != KErrNotFound)
+ {
+ TInt pos = aValue.Find(_L(".."));
+ TLex startLex(aValue.Left(pos));
+ TLex endLex(aValue.Mid(pos+2));
+
+ if(startLex.Val(iStart)!=KErrNone)
+ return;
+ // checks if startLex is at end of string, if not there was garbage in the string so throw it out
+ else if(!startLex.Eos())
+ return;
+
+ if(endLex.Val(iFinish)!=KErrNone)
+ return;
+ // checks if startLex is at end of string, if not there was garbage in the string so throw it out
+ else if(!endLex.Eos())
+ return;
+ // checks if range is doable
+ if(iStart > iFinish)
+ return;
+ }
+ else
+ return;
+ iValid = ETrue;
+ }
+
+CRandomTestParameter* CRandomTestParameter::NewL(TDes& aValue)
+ {
+ CRandomTestParameter* self = CRandomTestParameter::NewLC(aValue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CRandomTestParameter* CRandomTestParameter::NewLC(TDes& aValue)
+ {
+ CRandomTestParameter* self = new(ELeave) CRandomTestParameter();
+ CleanupStack::PushL(self);
+ self->Construct(aValue);
+ return self;
+ }
+
+
+void CRandomTestParameter::Construct(TDes& aValue)
+ {
+ TLex lexValue(aValue);
+
+ if(lexValue.Val(iInterations)!=KErrNone)
+ return;
+ else if(!lexValue.Eos())
+ // checks if startLex is at end of string, if not there was garbage in the string so throw it out
+ return;
+
+ iValid = ETrue;
+ }
+
+CStringTestParameter* CStringTestParameter::NewL(TDes& aValue)
+ {
+ CStringTestParameter* self = CStringTestParameter::NewLC(aValue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CStringTestParameter* CStringTestParameter::NewLC(TDes& aValue)
+ {
+ CStringTestParameter* self = new(ELeave) CStringTestParameter();
+ CleanupStack::PushL(self);
+ self->Construct(aValue);
+ return self;
+ }
+
+void CStringTestParameter::Construct(TDes& aValue)
+ {
+ iValue.Copy(aValue);
+ iValid = ETrue;
+ }