sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @internalComponent sl@0: @prototype sl@0: */ sl@0: sl@0: #include "dvbhhaiasynctest.h" sl@0: #include <mobiletv/hai/dvbh/dvbhtypes.h> sl@0: sl@0: /** sl@0: * RDvbhHaiAsyncTest sl@0: * DVB-H HAI Asynchronous Unit Tests on stub implementations sl@0: */ sl@0: sl@0: sl@0: RDvbhHaiAsyncTest* RDvbhHaiAsyncTest::NewL(TBool aRequireReceiverInfo, const TDesC& aTestName) sl@0: { sl@0: RDvbhHaiAsyncTest* self = new (ELeave) RDvbhHaiAsyncTest(aRequireReceiverInfo, aTestName); sl@0: return self; sl@0: } sl@0: sl@0: RDvbhHaiAsyncTest::RDvbhHaiAsyncTest(TBool aRequireReceiverInfo, const TDesC& aTestName) sl@0: : RAsyncTestStep(), iExpectedNetworkTime(TDateTime(2007, EJuly, 30, 16, 35, 22, 18)), sl@0: iInitialNetworkTime(TDateTime(1997, EMay, 10, 10, 00, 34, 02)), iInitialPlatform(), sl@0: iExpectedPlatform(), iPreTestRun(EFalse), iRequireReceiverInfo(aRequireReceiverInfo), sl@0: iRxInfo(NULL), i2ndRxInfo(NULL), iTestUtils(NULL), i2ndStateObserver(NULL) sl@0: { sl@0: iStateCallbackVerdicts[E1stStateObserver] = KNoVerdict; sl@0: iStateCallbackVerdicts[E2ndStateObserver] = KNoVerdict; sl@0: iTestStepName.Copy(aTestName); sl@0: SetupParameterData(); sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::SetupParameterData() sl@0: { sl@0: iInitialPlatform.iPlatform.iId = KInitialPlatformId; sl@0: iInitialPlatform.iPlatform.iName = KInitialPlatformName; sl@0: iInitialPlatform.iEsgRoot = KInet6AddrLinkLocal; sl@0: sl@0: iExpectedPlatform.iPlatform.iId = KExpectedPlatformId; sl@0: iExpectedPlatform.iPlatform.iName = KExpectedPlatformName; sl@0: iExpectedPlatform.iEsgRoot = KDvbhTestIpV6Addr; sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::InfoPrintf3(const TDesC16& aString, TInt aInt1, TInt aInt2) sl@0: { sl@0: INFO_PRINTF3(aString, aInt1, aInt2); sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::InfoPrintf4(const TDesC16& aString, TInt aInt1, TInt aInt2, TInt aInt3) sl@0: { sl@0: INFO_PRINTF4(aString, aInt1, aInt2, aInt3); sl@0: } sl@0: sl@0: /** sl@0: * Allocs objects, defines properties, etc. as needed for each test step. sl@0: * Takes the role of the Preamble in synchornous tests. It is called once sl@0: * when a test step is first kicked off. sl@0: */ sl@0: TVerdict RDvbhHaiAsyncTest::DoPreTest() sl@0: { sl@0: TRAPD(result, iTestUtils = CDvbhTestUtil::NewL(*this)); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error %d creating CDvbhTestUtil"), result); sl@0: return EInconclusive; sl@0: } sl@0: sl@0: if (iRequireReceiverInfo) sl@0: { sl@0: TRAP(result, iRxInfo = CDvbhReceiverInfo::NewL()) sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error %d creating CDvbhReceiverInfo"), result); sl@0: return EInconclusive; sl@0: } sl@0: } sl@0: sl@0: if (iTestStepName.Compare(_L("MM-TV-DVBH-U-111")) == 0) sl@0: { sl@0: result = iTestUtils->DefineDvbhStateProperty(KInitialState); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-112")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReceiving); sl@0: if (result == KErrNone) sl@0: { sl@0: result = iTestUtils->DefineDvbhIntegerProperty(EDvbhPropertyKeySignalQuality, KInitialSignalQuality); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-113")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReady or EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReady); sl@0: if (result == KErrNone) sl@0: { sl@0: TPckg<TDvbhPlatformProperty> initialPlatformPckg(iInitialPlatform); sl@0: result = iTestUtils->DefineDvbhProperty(EDvbhPropertyKeyPlatform, CDvbhTestUtil::GetType(EDvbhPropertyKeyPlatform), initialPlatformPckg); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-114")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReady or EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReady); sl@0: if (result == KErrNone) sl@0: { sl@0: TPckg<TTime> initialTimePckg(iInitialNetworkTime); sl@0: result = iTestUtils->DefineDvbhProperty(EDvbhPropertyKeyNetworkTime, CDvbhTestUtil::GetType(EDvbhPropertyKeyNetworkTime), initialTimePckg); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-115")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReady or EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReady); sl@0: if (result == KErrNone) sl@0: { sl@0: result = iTestUtils->DefineDvbhIntegerProperty(EDvbhPropertyKeyFrequency, KInitialFrequency); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-116")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReady or EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReady); sl@0: if (result == KErrNone) sl@0: { sl@0: result = iTestUtils->DefineDvbhIntegerProperty(EDvbhPropertyKeyCellId, KInitialCellId); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-117")) == 0) sl@0: { sl@0: // Receiver state must be EDvbhStateReady or EDvbhStateReceiving before we can do this test. sl@0: result = iTestUtils->DefineDvbhStateProperty(EDvbhStateReady); sl@0: if (result == KErrNone) sl@0: { sl@0: result = iTestUtils->DefineDvbhIntegerProperty(EDvbhPropertyKeyNetworkId, KInitialNetworkId); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-125")) == 0) sl@0: { sl@0: result = iTestUtils->DefineDvbhStateProperty(KInitialState); sl@0: if (result == KErrNone) sl@0: { sl@0: TRAP(result, i2ndStateObserver = CAlternativeStateObserver::NewL(*this)); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-126")) == 0) sl@0: { sl@0: TRAP(result, i2ndStateObserver = CAlternativeStateObserver::NewL(*this)); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-127")) == 0) sl@0: { sl@0: result = iTestUtils->DefineDvbhStateProperty(KInitialState); sl@0: if (result == KErrNone) sl@0: { sl@0: TRAP(result, i2ndRxInfo = CDvbhReceiverInfo::NewL()); sl@0: if (result == KErrNone) sl@0: { sl@0: TRAP(result, i2ndStateObserver = CAlternativeStateObserver::NewL(*this)); sl@0: } sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-128")) == 0) sl@0: { sl@0: TRAP(result, i2ndRxInfo = CDvbhReceiverInfo::NewL()); sl@0: if (result == KErrNone) sl@0: { sl@0: TRAP(result, i2ndStateObserver = CAlternativeStateObserver::NewL(*this)); sl@0: } sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-401")) == 0) sl@0: { sl@0: result = iTestUtils->DefineAllDvbhProperties(); sl@0: } sl@0: sl@0: iPreTestRun = ETrue; sl@0: return (result == KErrNone ? EPass : EInconclusive); sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::CloseTest() sl@0: { sl@0: delete iRxInfo; sl@0: iRxInfo = NULL; sl@0: delete i2ndStateObserver; sl@0: i2ndStateObserver = NULL; sl@0: delete i2ndRxInfo; sl@0: i2ndRxInfo = NULL; sl@0: sl@0: TInt result = KErrNone; sl@0: sl@0: if (iTestStepName.Compare(_L("MM-TV-DVBH-U-111")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-112")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeySignalQuality); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-113")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyPlatform); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-114")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyNetworkTime); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-115")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyFrequency); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-116")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyCellId); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-117")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: TInt result2 = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyNetworkId); sl@0: result = result2 != KErrNone ? result2 : result; sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-125")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-127")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteDvbhProperty(EDvbhPropertyKeyState); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-401")) == 0) sl@0: { sl@0: result = iTestUtils->DeleteAllDvbhProperties(); sl@0: } sl@0: sl@0: delete iTestUtils; sl@0: iTestUtils = NULL; sl@0: sl@0: //Make sure we are not leaving anything laying around. This is sl@0: //to verify the integrity of the test code more than anything else. sl@0: ASSERT(result == KErrNone); sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::KickoffTestL() sl@0: { sl@0: //Run the pre-test set-up if it has not been run already sl@0: if (!iPreTestRun) sl@0: { sl@0: TVerdict preTestResult = DoPreTest(); sl@0: if (preTestResult != EPass) sl@0: { sl@0: INFO_PRINTF2(_L("DoPreTest failed with error %d."), preTestResult); sl@0: StopTest(preTestResult); sl@0: return; sl@0: } sl@0: } sl@0: sl@0: if (iTestStepName.Compare(_L("MM-TV-DVBH-U-111")) == 0) sl@0: { sl@0: DoSetStateObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-112")) == 0) sl@0: { sl@0: DoSetSignalQualityObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-113")) == 0) sl@0: { sl@0: DoSetPlatformObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-114")) == 0) sl@0: { sl@0: DoSetNetworkTimeObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-115")) == 0) sl@0: { sl@0: DoSetFrequencyObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-116")) == 0) sl@0: { sl@0: DoSetCellIdObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-117")) == 0) sl@0: { sl@0: DoSetNetworkIdObserverTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-118")) == 0) sl@0: { sl@0: DoSetStateObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-119")) == 0) sl@0: { sl@0: DoSetSignalQualityObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-120")) == 0) sl@0: { sl@0: DoSetPlatformObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-121")) == 0) sl@0: { sl@0: DoSetNetworkTimeObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-122")) == 0) sl@0: { sl@0: DoSetFrequencyObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-123")) == 0) sl@0: { sl@0: DoSetCellIdObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-124")) == 0) sl@0: { sl@0: DoSetNetworkIdObserverTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-125")) == 0) sl@0: { sl@0: DoSetMultipleStateObserversTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-126")) == 0) sl@0: { sl@0: DoSetMultipleStateObserversTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-127")) == 0) sl@0: { sl@0: DoCreateMultipleReceiverInfoTestStep(ETrue); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-128")) == 0) sl@0: { sl@0: DoCreateMultipleReceiverInfoTestStep(EFalse); sl@0: } sl@0: else if (iTestStepName.Compare(_L("MM-TV-DVBH-U-401")) == 0) sl@0: { sl@0: DoSetObserversNoMemory(); sl@0: } sl@0: else sl@0: { sl@0: StopTest(EInconclusive); sl@0: } sl@0: } sl@0: sl@0: // sl@0: // sl@0: // CDvbhReceiverInfo Positive Async Tests sl@0: // sl@0: // sl@0: sl@0: // 111 & 118 sl@0: void RDvbhHaiAsyncTest::DoSetStateObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetStateObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetStateObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the state to KInitialState. sl@0: //Now change it to KExpectedState. sl@0: if (iTestUtils->SetStateProperty(KExpectedState) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the state property changes if this state observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhStateChange( TDvbhState aNewState ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: sl@0: // We have to make sure that this observer was not called for the wrong test. sl@0: if ( iTestStepName.Compare(_L("MM-TV-DVBH-U-125")) == 0 || sl@0: iTestStepName.Compare(_L("MM-TV-DVBH-U-126")) == 0 ) sl@0: { sl@0: INFO_PRINTF1(_L("RDvbhHaiAsyncTest::DvbhStateChange called for wrong test.")); sl@0: verdict = EFail; sl@0: } sl@0: else sl@0: { sl@0: if (aNewState != KExpectedState) sl@0: { sl@0: INFO_PRINTF2(_L("DvbhStateChange received unexpected value %d."), aNewState); sl@0: verdict = EFail; sl@0: } sl@0: else sl@0: { sl@0: // Test case MM-TV-DVBH-U-127 is expecting two callbacks on two different observers sl@0: if (iTestStepName.Compare(_L("MM-TV-DVBH-U-127")) == 0) sl@0: { sl@0: // Set the verdict for this observer sl@0: iStateCallbackVerdicts[E1stStateObserver] = verdict; sl@0: //Check if the 2nd observer has reported back yet. If not then we sl@0: //do not want to stop the test yet. sl@0: if (iStateCallbackVerdicts[E2ndStateObserver] == KNoVerdict) sl@0: { sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: verdict = static_cast<TVerdict>(iStateCallbackVerdicts[E2ndStateObserver]); sl@0: } sl@0: } sl@0: } sl@0: } sl@0: sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 112 & 119 sl@0: void RDvbhHaiAsyncTest::DoSetSignalQualityObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetSignalQualityObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetSignalQualityObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the signal quality to KInitialSignalQuality. sl@0: //Now change it to KExpectedSignalQuality. sl@0: if (iTestUtils->SetIntegerProperty(EDvbhPropertyKeySignalQuality, KExpectedSignalQuality) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the signal quality property changes this a signal quality observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhSignalQualityChange( const TDvbhSignalQuality& aNewSignalQuality ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if (aNewSignalQuality != KExpectedSignalQuality) sl@0: { sl@0: INFO_PRINTF2(_L("DvbhSignalQualityChange received unexpected value %d."), aNewSignalQuality); sl@0: verdict = EFail; sl@0: } sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 113 & 120 sl@0: void RDvbhHaiAsyncTest::DoSetPlatformObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetPlatformObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetPlatformObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the platform to iInitialPlatform. sl@0: //Now change it to iExpectedPlatform. sl@0: TPckg<TDvbhPlatformProperty> platformPckg(iExpectedPlatform); sl@0: if (iTestUtils->SetByteArrayProperty(EDvbhPropertyKeyPlatform, platformPckg) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the platform property changes if this platform observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhPlatformChange( const TDvbhPlatform& aNewPlatform, const TIp6Addr& aESGRoot ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if ( !CDvbhTestUtil::ComparePlatforms(aNewPlatform, iExpectedPlatform.iPlatform)) sl@0: { sl@0: INFO_PRINTF1(_L("DvbhPlatformChangeDvbhPlatformChange received unexpected platform.")); sl@0: verdict = EFail; sl@0: } sl@0: if (!aESGRoot.IsEqual(iExpectedPlatform.iEsgRoot)) sl@0: { sl@0: INFO_PRINTF1(_L("DvbhPlatformChangeDvbhPlatformChange received unexpected esgRoot.")); sl@0: verdict = EFail; sl@0: } sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 114 & 121 sl@0: void RDvbhHaiAsyncTest::DoSetNetworkTimeObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetNetworkTimeObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetNetworkTimeObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the NetworkTime to iInitialNetworkTime. sl@0: //Now change it to KExpectedNetworkTime. sl@0: TPckg<TTime> timePckg(iExpectedNetworkTime); sl@0: if (iTestUtils->SetByteArrayProperty(EDvbhPropertyKeyNetworkTime, timePckg) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the network time property changes if this network time observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhNetworkTimeUpdate() sl@0: { sl@0: // Since this method has no parameters, there are no variables for us to verify. sl@0: // The fact that this method was called at all means that CDvbhReceiverInfo::SetNetworkTimeObserver() sl@0: // worked correctly, and thus we can now stop the test as passed. sl@0: StopTest(EPass); sl@0: } sl@0: sl@0: // 115 & 122 sl@0: void RDvbhHaiAsyncTest::DoSetFrequencyObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetFrequencyObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetFrequencyObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the frequency to KInitialFrequency. sl@0: //Now change it to KExpectedFrequency. sl@0: if (iTestUtils->SetIntegerProperty(EDvbhPropertyKeyFrequency, KExpectedFrequency) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the frequency property changes if this frequency observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhFrequencyChange( const TDvbhFrequency& aNewFrequency ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if (aNewFrequency != KExpectedFrequency) sl@0: { sl@0: INFO_PRINTF2(_L("DvbhFrequencyChange received unexpected value %d."), aNewFrequency); sl@0: verdict = EFail; sl@0: } sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 116 & 123 sl@0: void RDvbhHaiAsyncTest::DoSetCellIdObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetCellIdObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetCellIdObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the CellId to KInitialCellId. sl@0: //Now change it to KExpectedCellId. sl@0: if (iTestUtils->SetIntegerProperty(EDvbhPropertyKeyCellId, KExpectedCellId) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the CellId property changes if this CellId observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhCellIdChange( const TDvbhCellId& aNewCellId ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if (aNewCellId != KExpectedCellId) sl@0: { sl@0: INFO_PRINTF2(_L("DvbhCellIdChange received unexpected value %d."), aNewCellId); sl@0: verdict = EFail; sl@0: } sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 117 & 124 sl@0: void RDvbhHaiAsyncTest::DoSetNetworkIdObserverTestStep(TBool aProperyExists) sl@0: { sl@0: TInt result = iRxInfo->SetNetworkIdObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("SetNetworkIdObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the NetworkId to KInitialNetworkId. sl@0: //Now change it to KExpectedNetworkId. sl@0: if (iTestUtils->SetIntegerProperty(EDvbhPropertyKeyNetworkId, KExpectedNetworkId) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //Called when the NetworkId property changes if this NetworkId observer has been registerd sl@0: void RDvbhHaiAsyncTest::DvbhNetworkIdChange( const TDvbhNetworkId& aNewNetworkId ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if (aNewNetworkId != KExpectedNetworkId) sl@0: { sl@0: INFO_PRINTF2(_L("DvbhNetworkIdChange received unexpected value %d."), aNewNetworkId); sl@0: verdict = EFail; sl@0: } sl@0: StopTest(verdict); sl@0: } sl@0: sl@0: // 125 & 126 sl@0: void RDvbhHaiAsyncTest::DoSetMultipleStateObserversTestStep(TBool aProperyExists) sl@0: { sl@0: // Set a state observer sl@0: TInt result = iRxInfo->SetStateObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("1st SetStateObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: // Now try to set another one sl@0: result = iRxInfo->SetStateObserver(*i2ndStateObserver); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("2nd SetStateObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: //DoPreTest will have initialised the state to KInitialState. sl@0: //Now change it. sl@0: if (iTestUtils->SetStateProperty(KExpectedState) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: //127 & 128 sl@0: void RDvbhHaiAsyncTest::DoCreateMultipleReceiverInfoTestStep(TBool aProperyExists) sl@0: { sl@0: // Set a state observer on the first CDvbhReceiverInfo object sl@0: TInt result = iRxInfo->SetStateObserver(*this); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("1st SetStateObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: // Now try to set another one on the 2nd CDvbhReceiverInfo object sl@0: result = i2ndRxInfo->SetStateObserver(*i2ndStateObserver); sl@0: if (result != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("2nd SetStateObserver returned error %d."), result); sl@0: StopTest(EFail); sl@0: return; sl@0: } sl@0: sl@0: if (aProperyExists) sl@0: { sl@0: iStateCallbackVerdicts[E1stStateObserver] = KNoVerdict; sl@0: iStateCallbackVerdicts[E2ndStateObserver] = KNoVerdict; sl@0: //DoPreTest will have initialised the state to KInitialState. sl@0: //Now change it. sl@0: if (iTestUtils->SetStateProperty(KExpectedState) != KErrNone) sl@0: { sl@0: StopTest(EInconclusive); sl@0: return; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: StopTest(EPass); sl@0: } sl@0: } sl@0: sl@0: // sl@0: // sl@0: // RDvbhHaiAsyncTest::CAlternativeStateObserver sl@0: // sl@0: // sl@0: sl@0: RDvbhHaiAsyncTest::CAlternativeStateObserver* RDvbhHaiAsyncTest::CAlternativeStateObserver::NewL(RDvbhHaiAsyncTest& aTestStep) sl@0: { sl@0: CAlternativeStateObserver* self = new (ELeave) CAlternativeStateObserver(aTestStep); sl@0: return self; sl@0: } sl@0: sl@0: RDvbhHaiAsyncTest::CAlternativeStateObserver::CAlternativeStateObserver(RDvbhHaiAsyncTest& aTestStep) sl@0: : iTestStep(aTestStep) sl@0: { sl@0: } sl@0: sl@0: void RDvbhHaiAsyncTest::CAlternativeStateObserver::DvbhStateChange( TDvbhState aNewState ) sl@0: { sl@0: TVerdict verdict = EPass; sl@0: if (aNewState != KExpectedState) sl@0: { sl@0: iTestStep.INFO_PRINTF2(_L("CAlternativeStateObserver::DvbhStateChange received unexpected value %d."), aNewState); sl@0: verdict = EFail; sl@0: } sl@0: else sl@0: { sl@0: // Test case MM-TV-DVBH-U-127 is expecting two callbacks on two different observers sl@0: if (iTestStep.iTestStepName.Compare(_L("MM-TV-DVBH-U-127")) == 0) sl@0: { sl@0: // Set the verdict for this observer sl@0: iTestStep.iStateCallbackVerdicts[E2ndStateObserver] = verdict; sl@0: //Check if the 1st observer has reported back yet. If not then we sl@0: //do not want to stop the test yet. sl@0: if (iTestStep.iStateCallbackVerdicts[E1stStateObserver] == KNoVerdict) sl@0: { sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: verdict = static_cast<TVerdict>(iTestStep.iStateCallbackVerdicts[E1stStateObserver]); sl@0: } sl@0: } sl@0: } sl@0: sl@0: iTestStep.StopTest(verdict); sl@0: } sl@0: sl@0: sl@0: //401 sl@0: /** sl@0: * Test to improve conditional code coverage. Tests KErrNoMemory failures sl@0: * with SetObserver methods. sl@0: */ sl@0: void RDvbhHaiAsyncTest::DoSetObserversNoMemory() sl@0: { sl@0: //SetStateObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: TInt result = iRxInfo->SetStateObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetStateObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetSignalQualityObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetSignalQualityObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetSignalQualityObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetPlatformObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetPlatformObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetPlatformObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetNetworkTimeObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetNetworkTimeObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetNetworkTimeObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetFrequencyObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetFrequencyObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetFrequencyObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetCellIdObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetCellIdObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetCellIdObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: //SetNetworkIdObserver sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, 1); sl@0: result = iRxInfo->SetNetworkIdObserver(*this); sl@0: if (result != KErrNoMemory) sl@0: { sl@0: INFO_PRINTF2(_L("SetNetworkIdObserver returned %d."), result); sl@0: StopTest(EInconclusive); sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: return; sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: StopTest(EPass); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: