cryptomgmtlibs/securitytestfw/test/testhandler2/t_errorconverter.cpp
changeset 0 2c201484c85f
child 8 35751d3474b7
equal deleted inserted replaced
-1:000000000000 0:2c201484c85f
       
     1 /*
       
     2 * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     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".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * T_CErrorConverter.CPP
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 #include <s32file.h>
       
    23 #include "t_errorconverter.h"
       
    24 #include <securityerr.h>
       
    25 
       
    26 
       
    27 class CErrorItem : public CBase
       
    28 	{
       
    29 	public:
       
    30 		static CErrorItem *NewLC(const TDesC &aErrorName, const TInt aError);
       
    31 		static CErrorItem *NewL(const TDesC &aErrorName, const TInt aError);
       
    32 		virtual ~CErrorItem(void) { delete iErrorName;};
       
    33 
       
    34 	public:
       
    35 		HBufC8* iErrorName;
       
    36 		const TInt iError;
       
    37 
       
    38 	private:
       
    39 		void ConstructL(const TDesC &aErrorName);
       
    40 		CErrorItem(const TInt aError) : iError(aError){}
       
    41 	};
       
    42 
       
    43 CErrorItem *CErrorItem::NewLC(const TDesC &aErrorName, const TInt aError)
       
    44 	{
       
    45 	CErrorItem *errorItem = new (ELeave) CErrorItem(aError);
       
    46 	CleanupStack::PushL(errorItem);
       
    47 	errorItem->ConstructL(aErrorName);
       
    48 	return(errorItem);
       
    49 	}
       
    50 
       
    51 CErrorItem *CErrorItem::NewL(const TDesC &aErrorName, const TInt aError)
       
    52 	{
       
    53 	CErrorItem *errorItem = CErrorItem::NewLC(aErrorName, aError);
       
    54 	CleanupStack::Pop(errorItem);
       
    55 	return(errorItem);
       
    56 	};
       
    57 
       
    58 void CErrorItem::ConstructL(const TDesC &aErrorName)
       
    59 	{
       
    60 	iErrorName = HBufC8::NewL(aErrorName.Length());
       
    61 	iErrorName->Des().Copy(aErrorName);
       
    62 	};
       
    63 
       
    64 EXPORT_C CErrorConverter* CErrorConverter::NewLC(void)
       
    65 	{
       
    66 	CErrorConverter *errorConverter = new (ELeave) CErrorConverter();
       
    67 	CleanupStack::PushL(errorConverter);
       
    68 	errorConverter->ConstructL();
       
    69 	return(errorConverter);
       
    70 	};
       
    71 EXPORT_C CErrorConverter* CErrorConverter::NewL(void)
       
    72 	{
       
    73 	CErrorConverter *errorConverter = CErrorConverter::NewLC();
       
    74 	CleanupStack::Pop(errorConverter);
       
    75 	return(errorConverter);
       
    76 	};
       
    77 
       
    78 EXPORT_C CErrorConverter::~CErrorConverter()
       
    79 	{
       
    80 	iErrorMap.ResetAndDestroy();
       
    81 	};
       
    82 
       
    83 void CErrorConverter::ConstructL(void)
       
    84 	{
       
    85 	CreateErrorMapL();
       
    86 	};
       
    87 
       
    88 EXPORT_C void CErrorConverter::AddErrorItem(const TDesC& aErrorName, const TInt &aErrorCode)
       
    89 	{
       
    90 	CErrorItem *errorItem = CErrorItem::NewLC(aErrorName, aErrorCode);
       
    91 
       
    92 	User::LeaveIfError(iErrorMap.Append(errorItem));
       
    93 	CleanupStack::Pop(errorItem);
       
    94 	};
       
    95 
       
    96 void CErrorConverter::CreateErrorMapL()
       
    97 	{
       
    98 	AddErrorItem(_L("KErrNone"), KErrNone);
       
    99 	AddErrorItem(_L("KErrNotFound"), KErrNotFound);
       
   100 	AddErrorItem(_L("KErrGeneral"), KErrGeneral);
       
   101 	AddErrorItem(_L("KErrCancel"), KErrCancel);
       
   102 	AddErrorItem(_L("KErrNoMemory"), KErrNoMemory);
       
   103 	AddErrorItem(_L("KErrNotSupported"), KErrNotSupported);
       
   104 	AddErrorItem(_L("KErrArgument"), KErrArgument);
       
   105 	AddErrorItem(_L("KErrTotalLossOfPrecision"), KErrTotalLossOfPrecision);
       
   106 	AddErrorItem(_L("KErrBadHandle"), KErrBadHandle);
       
   107 	AddErrorItem(_L("KErrOverflow"), KErrOverflow);
       
   108 	AddErrorItem(_L("KErrUnderflow"), KErrUnderflow);
       
   109 	AddErrorItem(_L("KErrAlreadyExists"), KErrAlreadyExists);
       
   110 	AddErrorItem(_L("KErrPathNotFound"), KErrPathNotFound);
       
   111 	AddErrorItem(_L("KErrDied"), KErrDied);
       
   112 	AddErrorItem(_L("KErrInUse"), KErrInUse);
       
   113 	AddErrorItem(_L("KErrServerTerminated"), KErrServerTerminated);
       
   114 	AddErrorItem(_L("KErrServerBusy"), KErrServerBusy);
       
   115 	AddErrorItem(_L("KErrCompletion"), KErrCompletion);
       
   116 	AddErrorItem(_L("KErrNotReady"), KErrNotReady);
       
   117 	AddErrorItem(_L("KErrUnknown"), KErrUnknown);
       
   118 	AddErrorItem(_L("KErrCorrupt"), KErrCorrupt);
       
   119 	AddErrorItem(_L("KErrAccessDenied"), KErrAccessDenied);
       
   120 	AddErrorItem(_L("KErrLocked"), KErrLocked);
       
   121 	AddErrorItem(_L("KErrWrite"), KErrWrite);
       
   122 	AddErrorItem(_L("KErrDisMounted"), KErrDisMounted);
       
   123 	AddErrorItem(_L("KErrEof"), KErrEof);
       
   124 	AddErrorItem(_L("KErrDiskFull"), KErrDiskFull);
       
   125 	AddErrorItem(_L("KErrBadDriver"), KErrBadDriver);
       
   126 	AddErrorItem(_L("KErrBadName"), KErrBadName);
       
   127 	AddErrorItem(_L("KErrCommsLineFail"), KErrCommsLineFail);
       
   128 	AddErrorItem(_L("KErrCommsFrame"), KErrCommsFrame);
       
   129 	AddErrorItem(_L("KErrCommsOverrun"), KErrCommsOverrun);
       
   130 	AddErrorItem(_L("KErrCommsParity"), KErrCommsParity);
       
   131 	AddErrorItem(_L("KErrTimedOut"), KErrTimedOut);
       
   132 	AddErrorItem(_L("KErrCouldNotConnect"), KErrCouldNotConnect);
       
   133 	AddErrorItem(_L("KErrCouldNotDisconnect"), KErrCouldNotDisconnect);
       
   134 	AddErrorItem(_L("KErrDisconnected"), KErrDisconnected);
       
   135 	AddErrorItem(_L("KErrBadLibraryEntryPoint"), KErrBadLibraryEntryPoint);
       
   136 	AddErrorItem(_L("KErrBadDescriptor"), KErrBadDescriptor);
       
   137 	AddErrorItem(_L("KErrAbort"), KErrAbort);
       
   138 	AddErrorItem(_L("KErrTooBig"), KErrTooBig);
       
   139 	AddErrorItem(_L("KErrDivideByZero"), KErrDivideByZero);
       
   140 	AddErrorItem(_L("KErrBadPower"), KErrBadPower);
       
   141 	AddErrorItem(_L("KErrDirFull"), KErrDirFull);
       
   142 	AddErrorItem(_L("KErrHardwareNotAvailable"), KErrHardwareNotAvailable);
       
   143 	AddErrorItem(_L("KErrPrivateKeyNotFound"), KErrPrivateKeyNotFound);
       
   144 	AddErrorItem(_L("KErrPermissionDenied"), KErrPermissionDenied);
       
   145 	}
       
   146 
       
   147 EXPORT_C TBool CErrorConverter::GetExpectedResultL(const TDesC& aResult /* in */, TInt &aError /* out */)
       
   148 	{
       
   149 	HBufC8 *resultBuf = HBufC8::NewLC(aResult.Length());
       
   150 	resultBuf->Des().Copy(aResult);
       
   151 	TBool result = EFalse;
       
   152 	CErrorItem *pError;
       
   153 	TInt errorPos=0;
       
   154 
       
   155 	aError = KErrUnknown;
       
   156 
       
   157 	for(errorPos = 0; errorPos < iErrorMap.Count() && !result; errorPos++)
       
   158 		{
       
   159 		pError = iErrorMap[errorPos];
       
   160 		if(pError->iErrorName->CompareF(*resultBuf)==0)
       
   161 			{
       
   162 			aError = pError->iError;
       
   163 			result = ETrue;
       
   164 			};
       
   165 		}
       
   166 	CleanupStack::PopAndDestroy(resultBuf);
       
   167 	
       
   168 	return(result);
       
   169 	}
       
   170 
       
   171 
       
   172 EXPORT_C TBool CErrorConverter::GetExpectedResultL(const TInt &aError /* in */, HBufC*& aResult /* out */)
       
   173 	{
       
   174 	TBool result = EFalse;
       
   175 	TInt errorPos=0;
       
   176 	CErrorItem *pError;
       
   177 
       
   178 	__ASSERT_DEBUG(!result, User::Panic(_L("CErrorConverter::GetExpectedResultL"), 1));
       
   179 	for(errorPos = 0; errorPos < iErrorMap.Count() && !result; errorPos++)
       
   180 		{
       
   181 		pError = iErrorMap[errorPos];
       
   182 		if(pError->iError == aError)
       
   183 			{
       
   184 			aResult = HBufC::NewLC(pError->iErrorName->Length());
       
   185 			aResult->Des().Copy(*pError->iErrorName);
       
   186 			result = ETrue;
       
   187 			};
       
   188 		}
       
   189 	// just so it always has something to pop even if it didnt find error
       
   190 	if(!result)
       
   191 		{
       
   192 		aResult = HBufC::NewLC(0);
       
   193 		};
       
   194 
       
   195 	return(result);
       
   196 	}