/*
* 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 module contains the implementation of 
* TTCKeywords class member functions.
*
*/


// INCLUDE FILES
#include "TestKeywords.h"

// EXTERNAL DATA STRUCTURES
// None

// EXTERNAL FUNCTION PROTOTYPES  
// None

// CONSTANTS
// None

// MACROS
// None

// LOCAL CONSTANTS AND MACROS
// None

// MODULE DATA STRUCTURES
// None

// LOCAL FUNCTION PROTOTYPES
// None

// FORWARD DECLARATIONS
// None

// ==================== LOCAL FUNCTIONS =======================================
// None


// ================= MEMBER FUNCTIONS =========================================

/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: Keyword

     Description: Returns a string desrciptor corresponding to keyword number. 

     Parameters:    TKeywords aKeyword: in: keyword index.
     
     Return Values: TPtrC8: keyword descriptor

     Errors/Exceptions: None
     
     Status: Approved 
    
-------------------------------------------------------------------------------
*/      
TPtrC TTCKeywords::Keyword( TInt aKeyword )
    {
    static TText* const keywords[] =
        {
        (TText*)L"title",
        (TText*)L"run",
        (TText*)L"cancel",
        (TText*)L"pause",
        (TText*)L"resume",
        (TText*)L"complete",
        (TText*)L"request",
        (TText*)L"wait",
        (TText*)L"release",
        (TText*)L"set",
        (TText*)L"unset",
        (TText*)L"timeout",
        (TText*)L"priority",
        (TText*)L"print",
        (TText*)L"allocate",
        (TText*)L"free",
        (TText*)L"remote",
        (TText*)L"sendreceive",
        (TText*)L"canceliferror",
        (TText*)L"measurement",
        (TText*)L"loop",
        (TText*)L"endloop",
        (TText*)L"pausecombiner",        
        };
    
    if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) )
          {
          TPtrC null;
          return null;
          } 
    
    TPtrC keyword( keywords[ aKeyword ] ); 
    return keyword;
    
    }

/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: RunOptArg

     Description: Returns a string desrciptor corresponding to run keyword 
                  optional argument number. 

     Parameters:    TRunOptArgs aArg: in: run keyword optional argument index
     
     Return Values: TPtrC8: argument descriptor

     Errors/Exceptions: None
     
     Status: Approved 
    
-------------------------------------------------------------------------------
*/
TPtrC TTCKeywords::RunOptArg( TInt aArg )
    {
    static TText* const runOptArgs[] =
        {
        (TText*)L"expect",
        (TText*)L"testid",
        (TText*)L"ini",
        (TText*)L"category",
        (TText*)L"timeout",
        (TText*)L"title",
        };

    if( aArg >= (TInt)(sizeof( runOptArgs )/sizeof(TText*)) )
          {
          TPtrC null;
          return null;
          }

    TPtrC arg( runOptArgs[ aArg ] );
    return arg;
    
    }

/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: PauseOptArg

     Description: Returns a string desrciptor corresponding to pause keyword 
                      optional argument number. 

     Parameters:    TPauseOptArgs aArg: in: argument index.
     
     Return Values: TPtrC8: argument descriptor

     Errors/Exceptions: None
     
     Status: Approved 
    
-------------------------------------------------------------------------------
*/
TPtrC TTCKeywords::PauseOptArg( TInt aArg )
    {
    static TText* const pauseOptArgs[] =
        {
        (TText*)L"time",
        };
    
    if( aArg >= (TInt)(sizeof( pauseOptArgs )/sizeof(TText*)) )
          {
          TPtrC null;
          return null;
          } 
    
    TPtrC arg( pauseOptArgs[ aArg ] ); 
    return arg;
    
    }
      
/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: EventOptArg

     Description: Returns a string desrciptor corresponding to event keywords 
                      optional argument number. 

     Parameters:    TEventOptArgs aArg: in: argument index.
     
     Return Values: TPtrC8: keyword descriptor

     Errors/Exceptions: None
     
     Status: Approved 
    
-------------------------------------------------------------------------------
*/              
TPtrC TTCKeywords::EventOptArg( TInt aArg )
    {
    static TText* const optArgs[] =
        {
        (TText*)L"state",
        };
    
    if( aArg >= (TInt)(sizeof( optArgs )/sizeof(TText*)) )
        {
        TPtrC null;
          return null;
          } 
    
    TPtrC arg( optArgs[ aArg ] ); 
    return arg;
    
    }
    
/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: ResultCategory

     Description: Returns a string desrciptor corresponding to event keywords 
                      optional argument number. 

     Parameters:    TEventOptArgs aArg: in: argument index.
     
     Return Values: TPtrC8: keyword descriptor

     Errors/Exceptions: None
     
     Status: Approved 
    
-------------------------------------------------------------------------------
*/              
TPtrC TTCKeywords::Priority( TInt aArg )
    {
    static TText* const priority[] =
        {
        (TText*)L"high",
        (TText*)L"normal",
        (TText*)L"low",
        };
        
    if( aArg >= (TInt)(sizeof( priority )/sizeof(TText*)) )
        {
        TPtrC null;
        return null;
        } 
    
    TPtrC arg( priority[ aArg ] ); 
    return arg;
    
    }
   
/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: Parse

     Description: Returns a keyword enum corresponding to keyword 
                      string descriptor.

     Parameters:    TPtrC aKeyword: in: keyword descriptor.
                    KeywordFunc aFunc: in: Function pointer to keyword parser 
     
     Return Values: TInt: keyword index
                    KErrNotFound: keyword not found

     Errors/Exceptions: None
     
     Status: Proposal 
    
-------------------------------------------------------------------------------
*/
TInt TTCKeywords::Parse( TDesC& aKeyword, KeywordFunc aFunc )
    {
    TInt ind;
    for( ind = 0; aFunc( ind ).Length() > 0; ind++ )
        {
        if( aFunc( ind ) == aKeyword )
            {
            return ind;
            }
        }
    return KErrNotFound;
    };
    
/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: ResultCategory

     Description: Returns a string desrciptor corresponding to result 
        category number. 

     Parameters:    TInt aArg: in: argument index.
     
     Return Values: TPtrC: keyword descriptor

     Errors/Exceptions: None
     
     Status: Proposal
    
-------------------------------------------------------------------------------
*/              
TPtrC TTCKeywords::ResultCategory( TInt aArg )
    {
    static TText* const category[] =
        {
        (TText*)L"ongoing",
        (TText*)L"normal",
        (TText*)L"cancelled",
        (TText*)L"errorfrommodule",
        (TText*)L"leave",
        (TText*)L"panic",
        (TText*)L"exception",
        (TText*)L"timeout",
        };
        
    if( aArg >= (TInt)(sizeof( category )/sizeof(TText*)) )
        {
        TPtrC null;
        return null;
        } 
    
    TPtrC arg( category[ aArg ] ); 
    return arg;
    
    }
    
/*
-------------------------------------------------------------------------------

     Class: TTCKeywords

     Method: ResultCategory

     Description: Returns a string desrciptor corresponding to event keywords 
                      optional argument number. 

     Parameters:    TEventOptArgs aArg: in: argument index.
     
     Return Values: TPtrC8: keyword descriptor

     Errors/Exceptions: None
     
     Status: Proposal 
    
-------------------------------------------------------------------------------
*/              
TFullTestResult::TCaseExecutionResult 
    TTCKeywords::GetResultCategory( TDesC& aCategory )
    {
    
    TInt ind;
    for( ind = 0; ResultCategory( ind ).Length() > 0; ind++ )
        {
        if( ResultCategory( ind ) == aCategory )
            {
            switch( ind )
                {
                case TFullTestResult::ECaseExecuted:
                case TFullTestResult::ECaseLeave:
                case TFullTestResult::ECasePanic:
                case TFullTestResult::ECaseException:
                case TFullTestResult::ECaseTimeout:
                    return (TFullTestResult::TCaseExecutionResult)ind;
                default:
                    break;
                }        
            }
        }      
    return TFullTestResult::ECaseOngoing;    
    }

// ================= OTHER EXPORTED FUNCTIONS =================================
// None

// End of File
