stif/TestScripter/src/TestScripterInternal.cpp
branchRCL_3
changeset 59 8ad140f3dd41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestScripter/src/TestScripterInternal.cpp	Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,390 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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: This file contains TestScripterImp implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <StifTestInterface.h>
+#include <StifParser.h>
+#include "TestScripterInternal.h"
+#include "TestScripter.h"
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// None
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CScriptBase::CScriptBase
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase::CScriptBase( CTestModuleIf& aTestModuleIf ):
+    iTestModuleIf( aTestModuleIf )
+    {
+	// Handles multible 'waittestclass' given in test configure file.
+    iSignalErrors.Reset();
+
+    }
+
+       
+// -----------------------------------------------------------------------------
+// CScriptBase::TestModuleIf
+// Get reference to TestModuleIf API.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CTestModuleIf& CScriptBase::TestModuleIf()
+    { 
+    
+    return iTestModuleIf; 
+    
+    }
+        
+// -----------------------------------------------------------------------------
+// CScriptBase::Signal
+// Signal TestScripter to continue from waittestclass.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CScriptBase::Signal( TInt aError )
+    { 
+    
+    if( iStatus ) 
+        {
+        User::RequestComplete( iStatus, aError ); 
+        }
+    else
+    	{
+		// Handles multible 'waittestclass' given in test configure file.
+		// There is active object in CTestRunner also and it has higher
+		// priority than CTestContinue(It must be higher that e.g.
+		// 'allownextresult' is gotten right from configure file). That why we
+		// have to use this array and take signal "count" to the array for
+		// later handling.
+    	iSignalErrors.Append( aError );
+    	}
+        
+    }
+
+// -----------------------------------------------------------------------------
+// CScriptBase::CallTestClass
+// Called from test class. TestScripter forwards
+// operations to other test class object.
+// aLine: in: <object name> <method name> <parameters>
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::CallTestClass( const TDesC& aLine )
+    { 
+    
+    if( iFunc )
+        {
+        return iFunc( iTestScripter, EStifTSCallClass, aLine ); 
+        }
+    
+    return KErrNotSupported;
+    
+    };
+
+// -----------------------------------------------------------------------------
+// CScriptBase::GetTestObject
+// Get test class object address.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* CScriptBase::GetTestObject( const TDesC& aObjectName )
+    { 
+    
+    if( iFunc )
+        {
+        TInt ret = iFunc( iTestScripter, EStifTSGetObject, aObjectName );
+        if( ret > 0 )
+            {
+            return( CScriptBase* )ret;
+            } 
+        }
+    
+    return NULL;
+    };
+
+// -----------------------------------------------------------------------------
+// CScriptBase::EnableSignal
+// Enable Signal().
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CScriptBase::EnableSignal( TRequestStatus& aStatus )
+    { 
+    
+    aStatus = KRequestPending; 
+    iStatus = &aStatus; 
+
+	// Handles multible 'waittestclass' given in test configure file.
+    if( iSignalErrors.Count() > 0 )
+    	{
+		// Complete signal and remove it from array.
+    	TInt error = iSignalErrors[0];
+    	iSignalErrors.Remove( 0 );
+    	User::RequestComplete( iStatus, error ); 
+    	}
+    
+    }
+   
+// -----------------------------------------------------------------------------
+// CScriptBase::CancelSignal
+// Cancel Signal().
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CScriptBase::CancelSignal()
+    { 
+    if(iStatus!=NULL)
+        {
+        User::RequestComplete( iStatus, KErrCancel ); 
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CScriptBase::SetScripter
+// Set scripter callback.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CScriptBase::SetScripter( CallBackFunc aFunc, CTestScripter* aTestScripter )
+    { 
+    
+    iTestScripter = aTestScripter; 
+    iFunc = aFunc; 
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CScriptBase::RunInternalL
+// Run specified method from test class.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::RunInternalL ( 
+    TStifFunctionInfo const aFunctions[], 
+    TInt aCount, 
+    CStifItemParser& aItem  ) 
+    {
+
+    TInt ret = KErrNotFound;
+    
+    TPtrC command; 
+    User::LeaveIfError ( aItem.GetNextString( command ) );
+    TInt i = 0;
+    TName funcName;
+    
+    // Search function from table and call it
+    for ( i = 0; i < aCount; i++ )
+        {
+        funcName = aFunctions[i].iFunctionName;      
+        if ( command == funcName )
+            {
+            if( iLog )
+                {
+                iLog->Log(_L("Calling [%S]"), &command );
+                }
+            ret  = ( this->*(aFunctions[i].iMethod) )( aItem );    
+
+            break;            
+            }
+    
+        }
+
+    if( i == aCount )
+        {
+        iLog->Log( _L("[%S] not found"), &command );
+        }
+
+    return ret;
+
+    }
+    
+// -----------------------------------------------------------------------------
+// CScriptBase::GetConstantValue
+// Internal fuction to get const value defined in 
+// [Define]...[Enddefine] section of script file
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetConstantValue( const TDesC& aName, TDes& aValue )
+	{	
+		return iTestScripter->GetConstantValue( aName, aValue );
+	}
+
+    
+// -----------------------------------------------------------------------------
+// CScriptBase::GetConstantValue
+// Internal fuction to get const value defined in 
+// [Define]...[Enddefine] section of script file
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetConstantValue( const TDesC& aName, TInt& aValue )
+	{	
+	TInt ret = KErrNone;
+	TBuf<32> valStr;
+	ret = iTestScripter->GetConstantValue( aName, valStr );
+	if ( ret != KErrNone )
+	{
+		return ret;
+	}
+
+	TLex converter( valStr );
+	ret = converter.Val( aValue );
+
+	return ret;
+	}
+    
+// -----------------------------------------------------------------------------
+// CScriptBase::GetConstantValue
+// Internal fuction to get const value defined in 
+// [Define]...[Enddefine] section of script file
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetConstantValue( const TDesC& aName, TReal& aValue )
+	{	
+	TInt ret = KErrNone;
+	TBuf<32> valStr;
+	ret = iTestScripter->GetConstantValue( aName, valStr );
+	if ( ret != KErrNone )
+	{
+		return ret;
+	}
+
+	TLex converter( valStr );
+	ret = converter.Val( aValue );
+
+	return ret;
+	}
+
+// -----------------------------------------------------------------------------
+// CScriptBase::SetResultDescription
+// Result description can be set from within the test class method 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CScriptBase::SetResultDescription(const TDesC& aDescription)
+	{
+	iTestScripter->SetResultDescription(aDescription);
+	}
+
+// -----------------------------------------------------------------------------
+// CScriptBase::SetLocalValue
+// Internal fuction to set local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::SetLocalValue(const TDesC& aName, const TDesC& aValue)
+    {	
+		return iTestScripter->SetLocalValue(aName, aValue);
+    }
+	
+// -----------------------------------------------------------------------------
+// CScriptBase::SetLocalValue
+// Internal fuction to set local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::SetLocalValue(const TDesC& aName, const TInt aValue)
+    {
+    TBuf<20> buf;
+    buf.Format(_L("%d"), aValue);
+    return iTestScripter->SetLocalValue(aName, buf);
+    }
+	
+// -----------------------------------------------------------------------------
+// CScriptBase::SetLocalValue
+// Internal fuction to set local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::SetLocalValue(const TDesC& aName, const TReal aValue )
+    {	
+    TBuf<50> buf;
+    buf.Format(_L("%g"), aValue);
+    return iTestScripter->SetLocalValue(aName, buf);
+    }	
+
+// -----------------------------------------------------------------------------
+// CScriptBase::GetLocalValue
+// Internal fuction to get local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetLocalValue(const TDesC& aName, TDes& aValue)
+    {	
+		return iTestScripter->GetLocalValue(aName, aValue);
+    }
+	
+// -----------------------------------------------------------------------------
+// CScriptBase::GetLocalValue
+// Internal fuction to get local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetLocalValue(const TDesC& aName, TInt& aValue)
+    {
+    TInt ret = KErrNone;
+    TBuf<50> valStr;
+    ret = iTestScripter->GetLocalValue(aName, valStr);
+    if(ret != KErrNone)
+        {
+        return ret;
+        }
+
+    TLex converter(valStr);
+    ret = converter.Val(aValue);
+
+    return ret;
+    }
+	
+// -----------------------------------------------------------------------------
+// CScriptBase::GetLocalValue
+// Internal fuction to get local value
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CScriptBase::GetLocalValue(const TDesC& aName, TReal& aValue )
+    {
+    TInt ret = KErrNone;
+    TBuf<50> valStr;
+    ret = iTestScripter->GetLocalValue(aName, valStr);
+    if(ret != KErrNone)
+        {
+        return ret;
+        }
+
+    TLex converter(valStr);
+    ret = converter.Val(aValue);
+
+    return ret;
+    }
+
+// End of File