diff -r 000000000000 -r 40261b775718 omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.cpp Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,1093 @@ +// Copyright (c) 2008-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: +// Implementation of Unit test step classes for MILIF testing. +// +// + +#include "tsu_milif_omxiliftests.h" +#include "iltestuids.hrh" +#include "ilcomponentif.h" +#include "tilstructtypes.h" +#include "tomxilstruct.h" +#include + +_LIT8(KDummyDecoderILComponentName,"OMX.SYMBIAN.AUDIO.DECODER.DUMMY"); +_LIT8(KExtensionPortDefinitionName,"OMX.CompanyXYZ.index.param.PortDefinition"); +_LIT8(KFakeRole,"audio_decoder.vrb"); + +const TUid KUidFormatAAC = {0x1028347C}; + +const TInt KMaxComponentRoleLength = 128; + +const TInt KZerothPort = 0; + + +// +// RTestStepMILIFBase: Base class for all RTestStepMILIF* tests +// + +/* + * + * RTestStepMILIFBase - Test step constructor + * + */ +RTestStepMILIFBase::RTestStepMILIFBase(const TDesC& aTestName) +:RAsyncTestStep() + { + iTestStepName = aTestName; + } + +/* + * + * KickoffTestL - Starts the test + * + */ +void RTestStepMILIFBase::KickoffTestL() + { + __MM_HEAP_MARK; + + DoKickoffTestL(); + DoTestBody(); + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFBase::DoKickoffTestL() + { + OMX_Init(); + + if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0001"))|| + (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0002"))|| + (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0003"))|| + (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0004"))|| + (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))|| + (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0006"))) + { + INFO_PRINTF1(_L("1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface.")); + TRAPD(error, iDummyComponent = CILComponentIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyAudioDecMILIFPlugin))); + if(error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Could not instantiate the generic audio decoder OMX IL test ECOM plugin interface: error = %d"), error); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("2. Use the interface to instanciate a dummy omx component.")); + TRAP(error, iDummyComponent->CreateComponentL(KDummyDecoderILComponentName, *this)); + if(error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Could not create omx component: error = %d"), error); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("3. Set the role of the interface.")); + error = iDummyComponent->SetComponentIfRole(KUidFormatAAC); + if(error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Could not set the role of the interface: error = %d"), error); + StopTest(error, EFail); + } + } + else + { + StopTest(KErrGeneral, EFail); + } + } + +/* + * + * DoTestBodyL + * + */ +void RTestStepMILIFBase::DoTestBody() + { + // Nothing to do in the base class + } + +/* + * + * CloseTest + * + */ +void RTestStepMILIFBase::CloseTest() + { + if (iDummyComponent) + { + iDummyComponent->ReleaseComponent(); + iDummyComponent = NULL; + } + + iComponentInPortIf = NULL; + iComponentOutPortIf = NULL; + + OMX_Deinit(); + + __MM_HEAP_MARKEND; + } + +/* + * + * MsgFromILComponent - Callback from component for component events + * + */ +TInt RTestStepMILIFBase::MsgFromILComponent(const MILComponentIf* /*aComponent*/, const TILEvent& /*aEvent*/) + { + // Nothing to do in the base class + return KErrNotSupported; + } + +/* + * + * BufferDelivered - Callback from component for buffer delivered events + * + */ +TInt RTestStepMILIFBase::BufferDelivered(const MILComponentPortIf* /*aPort*/, const CMMFBuffer* /*aBuffer*/) + { + // Nothing to do in the base class + return KErrNotSupported; + } + + +// +// RTestStepMILIFPorts: To test access to IL component ports through MILIF. +// + +/* + * + * RTestStepMILIFPorts - Test step constructor + * + */ +RTestStepMILIFPorts::RTestStepMILIFPorts(const TDesC& aTestName) + :RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFPorts* RTestStepMILIFPorts::NewL(const TDesC& aTestName) + { + return (new (ELeave) RTestStepMILIFPorts(aTestName)); + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFPorts::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFPorts: To test access to IL component ports through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL + * + */ +void RTestStepMILIFPorts::DoTestBody() + { + RPointerArray ifPorts; + + INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); + TInt error = iDummyComponent->GetComponentInputPorts(ifPorts); + if (error == KErrNone && ifPorts.Count() == 1) + { + iComponentInPortIf = ifPorts[KZerothPort]; + ifPorts.Close(); + } + else + { + if (ifPorts.Count() != 1) + { + error = KErrNotFound; + } + ifPorts.Close(); + ERR_PRINTF2(_L(" ERROR! - Fail to grab input ports: error = %d"), error); + StopTest(error, EFail); + return; + } + + + INFO_PRINTF1(_L("5. Get Component Output ports through MILIF interface.")); + error = iDummyComponent->GetComponentOutputPorts(ifPorts); + if (error == KErrNone && ifPorts.Count() > 0) + { + iComponentOutPortIf = ifPorts[KZerothPort]; + ifPorts.Close(); + } + else + { + if (ifPorts.Count() != 1) + { + error = KErrNotFound; + } + ifPorts.Close(); + ERR_PRINTF2(_L(" ERROR! - Fail to grab output ports: error = %d"), error); + StopTest(error, EFail); + return; + } + StopTest(KErrNone); + } + + +// +// RTestStepMILIFConfig: To test configuration of IL component through MILIF. +// + +/* + * + * RTestStepMILIFConfig - Test step constructor + * + */ +RTestStepMILIFConfig::RTestStepMILIFConfig(const TDesC& aTestName) +:RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFConfig* RTestStepMILIFConfig::NewL(const TDesC& aTestName) + { + RTestStepMILIFConfig* self = new (ELeave) RTestStepMILIFConfig(aTestName); + return self; + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFConfig::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFConfig: To test configuration of the IL component through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL - + * + */ +void RTestStepMILIFConfig::DoTestBody() + { + TInt error = KErrNone; + + INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); + RPointerArray ifPorts; + error = iDummyComponent->GetComponentInputPorts(ifPorts); + if (error == KErrNone && ifPorts.Count() == 1) + { + iComponentInPortIf = ifPorts[KZerothPort]; + ifPorts.Close(); + } + else + { + if (ifPorts.Count() != 1) + { + error = KErrNotFound; + } + ifPorts.Close(); + ERR_PRINTF2(_L(" ERROR! - Fail to grab input ports: error = %d"), error); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("5a. Set a (partial) config port parameter through the interface.")); + INFO_PRINTF1(_L(" Using TPortDefinitionType and TILPortDefinition.")); + TPortDefinitionType partialConfig_s; + partialConfig_s.nBufferCountActual = 1; + TILPortDefinition paramStruct_s(partialConfig_s); + error = iDummyComponent->SetConfig(paramStruct_s, iComponentInPortIf); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to set TILPortDefinition: error = %d"), error); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("5b. Now Get the TPortDefinitionType config parameter through the interface.")); + TILPortDefinition paramStruct_g; + TPortDefinitionType* partialConfig_g = NULL; + error = iDummyComponent->GetConfig(paramStruct_g, iComponentInPortIf); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to get TILPortDefinition: error = %d"), error); + StopTest(error, EFail); + return; + } + partialConfig_g = TILPortDefinition::GetStructure(paramStruct_g); + if(partialConfig_g->nBufferCountActual != 1) + { + ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); + StopTest(KErrCorrupt, EFail); + return; + } + + if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0002"))) + { + INFO_PRINTF1(_L("6a. Configure component through the interface.")); + INFO_PRINTF1(_L(" Using TOMXILStructParam and TILPortDefinition.")); + OMX_PARAM_PORTDEFINITIONTYPE omxconfig_s; + omxconfig_s.nBufferCountActual = 3; + TOMXILStructParam omxParamStruct_s(&omxconfig_s, OMX_IndexParamPortDefinition); + error = iDummyComponent->SetConfig(omxParamStruct_s, iComponentInPortIf); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to set TOMXILStructParam: error = %d"), error); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("6b. Now Get the TOMXILStructParam config parameter through the interface.")); + OMX_PARAM_PORTDEFINITIONTYPE omxconfig_g; + TOMXILStructParam omxParamStruct_g(&omxconfig_g, OMX_IndexParamPortDefinition); + error = iDummyComponent->GetConfig(omxParamStruct_g, iComponentInPortIf); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to get TOMXILStructParam: error = %d"), error); + StopTest(error, EFail); + return; + } + if(omxconfig_g.nBufferCountActual != 3) + { + ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); + StopTest(KErrCorrupt, EFail); + return; + } + } + + StopTest(KErrNone); + } + + +// +// RTestStepMILIFStates: To test driving the IL component state machine through MILIF. +// + +/* + * + * RTestStepMILIFStates - Test step constructor + * + */ +RTestStepMILIFStates::RTestStepMILIFStates(const TDesC& aTestName) +:RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFStates* RTestStepMILIFStates::NewL(const TDesC& aTestName) + { + RTestStepMILIFStates* self = new (ELeave) RTestStepMILIFStates(aTestName); + return self; + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFStates::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFStates: To test driving the IL component state machine through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL - + * + */ +void RTestStepMILIFStates::DoTestBody() + { + Fsm(EEventInit, KErrNone); + } + +/* + * + * Fsm - Executes this test events in sequence + * + * + */ +void RTestStepMILIFStates::Fsm(TTestEvents aEvent, TInt aError) + { + TInt error = KErrNone; + + switch (iTestState) + { + case ETestStateStart: + { + if (aEvent == EEventInit) + { + INFO_PRINTF1(_L("4. Trigger transition from Load to Idle in component by calling Initialize()")); + error = iDummyComponent->Initialize(); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Initialize() error = %d"), error); + StopTest(error, EFail); + break; + } + INFO_PRINTF1(_L(" -> Test State: EStatePlayInitializing")); + iTestState = ETestStateInitializing; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateStart did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateInitializing: + { + if (aEvent == EEventInitComplete) + { + INFO_PRINTF1(_L("5a. Check the component was left in the correct state after EEventInitComplete event")); + TILComponentState aState; + error = iDummyComponent->GetState(aState); + if ((error != KErrNone) || (aState != EComponentIdle)) + { + ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState Incorrect state = %d, error = %d."), error, aState); + if (aState != EComponentIdle) + { + error = KErrGeneral; + } + StopTest(error, EFail); + break; + } + + INFO_PRINTF1(_L("5b. Trigger transition from Idle to Execute in component by calling Execute()")); + error = iDummyComponent->Execute(); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Execute() error = %d"), error); + StopTest(error, EFail); + break; + } + INFO_PRINTF1(_L(" -> Test State: EStatePlayInitialized")); + iTestState = ETestStateInitialized; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateInitializing did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateInitialized: + { + if (aEvent == EEventExecuteComplete) + { + INFO_PRINTF1(_L("6a. Check the component was left in the correct state after EEventExecuteComplete event")); + TILComponentState aState; + error = iDummyComponent->GetState(aState); + if ((error != KErrNone) || (aState != EComponentExecuting)) + { + ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState Incorrect state = %d, error = %d."), error, aState); + if (aState != EComponentExecuting) + { + error = KErrGeneral; + } + StopTest(error, EFail); + break; + } + + INFO_PRINTF1(_L("6b. Trigger transition from Executing to Pause in component by calling Pause()")); + error = iDummyComponent->Pause(); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Pause() error = %d"), error); + StopTest(error, EFail); + break; + } + INFO_PRINTF1(_L(" -> Test State: EStatePlayPausing")); + iTestState = ETestStatePausing; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateInitialized did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStatePausing: + { + if (aEvent == EEventPauseComplete) + { + INFO_PRINTF1(_L("7a. Check the component was left in the correct state after EEventPauseComplete event")); + TILComponentState aState; + error = iDummyComponent->GetState(aState); + if ((error != KErrNone) || (aState != EComponentPaused)) + { + ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState error = %d, state = %d"), error, aState); + if (aState != EComponentPaused) + { + error = KErrGeneral; + } + StopTest(error, EFail); + break; + } + + INFO_PRINTF1(_L("7b. Trigger transition from Pause to Idle in component by calling Stop()")); + error = iDummyComponent->Stop(); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Stop() error = %d"), error); + StopTest(error, EFail); + break; + } + INFO_PRINTF1(_L(" -> Test State: ETestStateStopping")); + iTestState = ETestStateStopping; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStatePausing did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateStopping: + { + if (aEvent == EEventStopComplete) + { + INFO_PRINTF1(_L("8. Check the component was left in the correct state after EEventStopComplete event")); + TILComponentState aState; + error = iDummyComponent->GetState(aState); + if ((error != KErrNone) || (aState != EComponentIdle)) + { + ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState error = %d, state = %d"), error, aState); + if (aState != EComponentIdle) + { + error = KErrGeneral; + } + StopTest(error, EFail); + break; + } + StopTest(KErrNone); + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateStopping did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + default: + { + ERR_PRINTF2(_L(" ERROR! - Invalid state received: %d"), iTestState); + StopTest(KErrGeneral, EFail); + } + } + + } + +/* + * + * MsgFromILComponent - + * + */ +TInt RTestStepMILIFStates::MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) + { + TInt error = KErrNone; + + if (aComponent != iDummyComponent) + { + ERR_PRINTF1(_L(" ERROR! - Invalid callback received")); + StopTest(KErrGeneral, EFail); + return KErrGeneral; + } + + switch (aEvent.iEvent) + { + case EEventCmdComplete: + { + if (aEvent.iData1 == ECommandStateSet) + { + if (aEvent.iData2 == EComponentIdle) + { + INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentIdle received")); + if (iTestState == ETestStateInitializing) + { + Fsm(EEventInitComplete, KErrNone); + } + else if (iTestState == ETestStateStopping) + { + Fsm(EEventStopComplete, KErrNone); + } + else + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrGeneral; + } + } + else if(aEvent.iData2 == EComponentExecuting) + { + INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentExecuting received")); + if (iTestState == ETestStateInitialized) + { + Fsm(EEventExecuteComplete, KErrNone); + } + else + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrGeneral; + } + } + else if(aEvent.iData2 == EComponentPaused) + { + INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentPaused received")); + if (iTestState == ETestStatePausing) + { + Fsm(EEventPauseComplete, KErrNone); + } + else + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrGeneral; + } + } + else + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrGeneral; + } + break; + } + } + default: + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrNotSupported; + } + } + + if (error != KErrNone) + { + StopTest(error, EFail); + } + return error; + } + + +// +// RTestStepMILIFCommands: To test sending commands to the IL component through MILIF. +// + +/* + * + * RTestStepMILIFCommands - Test step constructor + * + */ +RTestStepMILIFCommands::RTestStepMILIFCommands(const TDesC& aTestName) +:RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFCommands* RTestStepMILIFCommands::NewL(const TDesC& aTestName) + { + RTestStepMILIFCommands* self = new (ELeave) RTestStepMILIFCommands(aTestName); + return self; + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFCommands::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFCommands: To test sending commands to the IL component through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL - + * + */ +void RTestStepMILIFCommands::DoTestBody() + { + Fsm(EEventInit, KErrNone); + } + +/* + * + * Fsm - Executes this test events in sequence + * + */ +void RTestStepMILIFCommands::Fsm(TTestEvents aEvent, TInt aError) + { + TInt error = KErrNone; + + switch (iTestState) + { + case ETestStateStart: + { + if (aEvent == EEventInit) + { + INFO_PRINTF1(_L("4. Trigger FlushAllPorts")); + error = iDummyComponent->FlushAllPorts(); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::FlushAllPorts error = %d"), error); + StopTest(error, EFail); + break; + } + INFO_PRINTF1(_L(" -> Test State: ETestStateFlushing")); + iTestState = ETestStateFlushing; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateFlushing did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateFlushing: + { + if (aEvent == EEventFlushComplete) + { + INFO_PRINTF1(_L(" Flush Command partially completed.")); + INFO_PRINTF1(_L(" -> Test State: ETestStateFirstPortFlushed")); + iTestState = ETestStateFirstPortFlushed; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateFlushing did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateFirstPortFlushed: + { + if (aEvent == EEventFlushComplete) + { + INFO_PRINTF1(_L(" Flush Command completed.")); + INFO_PRINTF1(_L("5. Trigger SendCommand() with ECommandPortDisable")); + TILCommand aCommand; + aCommand.iCmd = ECommandPortDisable; + aCommand.iData1 = 0; + aCommand.iExtraData = NULL; + error = iDummyComponent->SendCommand(aCommand); + + INFO_PRINTF1(_L(" -> Test State: ETestStateDisablingPort")); + iTestState = ETestStateDisablingPort; + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateFirstPortFlushed did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + case ETestStateDisablingPort: + { + if (aEvent == EEventPortDisableComplete) + { + INFO_PRINTF1(_L(" -> Test State: Port Disabled. Fisnished Test")); + StopTest(KErrNone); + } + else + { + ERR_PRINTF2(_L(" ERROR! - ETestStateInitialized did not received expected event. Received event: %d"), aEvent); + StopTest(aError, EFail); + } + break; + } + + default: + { + ERR_PRINTF2(_L(" ERROR! - Invalid state received: %d"), iTestState); + StopTest(KErrGeneral, EFail); + } + } + } + +/* + * + * MsgFromILComponent - + * + */ +TInt RTestStepMILIFCommands::MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) + { + TInt error = KErrNone; + + if (aComponent != iDummyComponent) + { + ERR_PRINTF1(_L(" ERROR! - Invalid callback received")); + StopTest(KErrGeneral, EFail); + return KErrGeneral; + } + + switch (aEvent.iEvent) + { + case EEventCmdComplete: + { + if (aEvent.iData1 == ECommandFlush) + { + INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> ECommandFlush received")); + Fsm(EEventFlushComplete, KErrNone); + } + else if (aEvent.iData1 == ECommandPortDisable) + { + INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> ECommandPortDisable received")); + Fsm(EEventPortDisableComplete, KErrNone); + } + else + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrGeneral; + } + break; + } + default: + { + ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); + error = KErrNotSupported; + } + } + + if (error != KErrNone) + { + StopTest(error, EFail); + } + return error; + } + + +// +// RTestStepMILIFExtensions: To test configuration of the IL component with extended params through MILIF. +// + +/* + * + * RTestStepMILIFExtensions - Test step constructor + * + */ +RTestStepMILIFExtensions::RTestStepMILIFExtensions(const TDesC& aTestName) +:RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFExtensions* RTestStepMILIFExtensions::NewL(const TDesC& aTestName) + { + RTestStepMILIFExtensions* self = new (ELeave) RTestStepMILIFExtensions(aTestName); + return self; + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFExtensions::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFExtensions: To test configuration of the IL component with extended params through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL - + * + */ +void RTestStepMILIFExtensions::DoTestBody() + { + + TInt error = KErrNone; + + INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); + RPointerArray ifPorts; + error = iDummyComponent->GetComponentInputPorts(ifPorts); + if (error == KErrNone && ifPorts.Count() == 1) + { + iComponentInPortIf = ifPorts[KZerothPort]; + ifPorts.Close(); + } + else + { + if (ifPorts.Count() != 1) + { + error = KErrNotFound; + } + ifPorts.Close(); + StopTest(error, EFail); + return; + } + + INFO_PRINTF1(_L("5a. Set a (partial) config port parameter through the interface's extension mechanism.")); + TPortDefinitionType partialConfig_s; + partialConfig_s.nBufferCountActual = 1; + TILPortDefinition paramStruct_s(partialConfig_s); + error = iDummyComponent->SetExtConfig(KExtensionPortDefinitionName, paramStruct_s, iComponentInPortIf); + if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))) + { + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to set extension: error = %d"), error); + StopTest(error, EFail); + return; + } + } + else + { + StopTest(KErrGeneral, EFail); + } + + INFO_PRINTF1(_L("5b. Get the parameter set in 5a through the interface's extension mechanism.")); + TILPortDefinition paramStruct_g; + TPortDefinitionType* partialConfig_g = NULL; + error = iDummyComponent->GetExtConfig(KExtensionPortDefinitionName, paramStruct_g, iComponentInPortIf); + if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))) + { + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - Fail to get TILPortDefinition: error = %d"), error); + StopTest(error, EFail); + return; + } + partialConfig_g = TILPortDefinition::GetStructure(paramStruct_g); + if(partialConfig_g->nBufferCountActual != 1) + { + ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); + StopTest(KErrCorrupt, EFail); + return; + } + } + else + { + StopTest(KErrGeneral, EFail); + return; + } + + StopTest(KErrNone); + } + + +// +// RTestStepMILIFComponentRole: To test access to the IL component role through MILIF. +// + +/* + * + * RTestStepMILIFComponentRole - Test step constructor + * + */ +RTestStepMILIFComponentRole::RTestStepMILIFComponentRole(const TDesC& aTestName) +:RTestStepMILIFBase(aTestName) + { + } + +/* + * + * NewL + * + */ +RTestStepMILIFComponentRole* RTestStepMILIFComponentRole::NewL(const TDesC& aTestName) + { + RTestStepMILIFComponentRole* self = new (ELeave) RTestStepMILIFComponentRole(aTestName); + return self; + } + +/* + * + * DoKickoffTestL + * + */ +void RTestStepMILIFComponentRole::DoKickoffTestL() + { + INFO_PRINTF1(_L("RTestStepMILIFComponentRole: To test access to the IL component role through MILIF interface.")); + + RTestStepMILIFBase::DoKickoffTestL(); + } + +/* + * + * DoTestBodyL - + * + */ +void RTestStepMILIFComponentRole::DoTestBody() + { + TInt error = KErrNone; + TInt index = 0; + + HBufC8* buf = HBufC8::New(KMaxComponentRoleLength); + if (buf == NULL) + { + StopTest(KErrNoMemory, EFail); + } + else + { + TPtr8 componentRole = buf->Des(); + + INFO_PRINTF1(_L("4. Get component role through MILIF interface.")); + error = iDummyComponent->ComponentRoleEnum(componentRole, index); + + INFO_PRINTF1(_L("5. Check the component's role returned is the expected role.")); + if (error != KErrNone) + { + ERR_PRINTF2(_L(" ERROR! - MILComponentIf::ComponentRoleEnum failed. Error returned = %d"), error); + StopTest(error, EFail); + delete buf; + return; + } + else if (buf->Compare(KFakeRole) != 0 ) + { + ERR_PRINTF1(_L(" ERROR! - MILComponentIf::ComponentRoleEnum failed. Unexpected role.")); + StopTest(error, EFail); + delete buf; + return; + } + StopTest(KErrNone); + + delete buf; + } + } +