multimediacommscontroller/mmccsubcontroller/tsrc/ut_subcontroller/Src/UT_CMccSymDlStream.cpp
changeset 0 1bce908db942
child 32 f2ed1fc4c163
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccsubcontroller/tsrc/ut_subcontroller/Src/UT_CMccSymDlStream.cpp	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,748 @@
+/*
+* Copyright (c) 2004 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:  
+*
+*/
+
+
+
+
+//  CLASS HEADER
+#include "UT_CMccSymDlStream.h"
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+
+
+//  INTERNAL INCLUDES
+#include "Mccsymdlstream.h"
+#include "Mccrtpmanager.h"
+#include "Mcctesteventhandler.h"
+#include "mmccinterfacedef.h"
+#include "mccresourcepool_stub.h"
+#include "mcccodecconfigurator.h"
+#include "mccmultiplexer.h"
+#include "mmcccryptocontext.h"
+#include "mccjitterbuffer.h"
+
+#include "mccunittestmacros.h"
+
+const TUid KRtpDataSource = { KImplUidRtpDataSource }; 
+const TInt KAmrNbBitrate122 = 12200;
+const TInt KIlbcBitrate20 = 15200;
+const TInt KIlbcBitrate30 = 13330;
+
+// CONSTRUCTION
+UT_CMccSymDlStream* UT_CMccSymDlStream::NewL()
+    {
+    UT_CMccSymDlStream* self = UT_CMccSymDlStream::NewLC();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CMccSymDlStream* UT_CMccSymDlStream::NewLC()
+    {
+    UT_CMccSymDlStream* self = new( ELeave ) UT_CMccSymDlStream();
+    CleanupStack::PushL( self );
+
+    self->ConstructL();
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CMccSymDlStream::~UT_CMccSymDlStream()
+    {
+    }
+
+// Default constructor
+UT_CMccSymDlStream::UT_CMccSymDlStream()
+    {
+    }
+
+// Second phase construct
+void UT_CMccSymDlStream::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+//  METHODS
+void UT_CMccSymDlStream::SetupL()
+    {
+    iResources = CMccResourcePoolStub::NewL();
+    iStreamId = 1;
+    iHandler = CMccTestEventHandler::NewL();
+    iRtpMan = CMccRtpManager::NewL( *iHandler, *iResources, iMccSessionId );
+    iStream = CMccSymDlStream::NewLC( iStreamId, iHandler, iResources, iRtpMan, 201 );
+    CleanupStack::Pop( iStream );
+    
+    TPckgBuf<TInt> params( 30000 );
+    iSourceStub = MDataSource::NewSourceL( KRtpDataSource, params );
+    iSinkStub = MDataSink::NewSinkL( KUidMmfAudioOutput, KNullDesC8 );
+
+    iStream->AddSinkAndSourceL( iSinkStub, iSourceStub );
+    
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdAMRNB );
+    cInfo.iBitrate = KAmrNbBitrate122;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 32;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 400; // recommended "limit" 200ms
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iCodecMode = EBandwidthEfficient;
+    cInfo.iPayloadFormatEncoder = KImplUidAmrPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidAmrPayloadFormatDecode;
+    _LIT8( KFmtp, "octet-align=0" );
+    TBuf8<13> buf( KFmtp() );
+    iStream->LoadCodecL( cInfo, buf );
+    
+    TUint port;
+    iRtpMan->CreateSessionL( port, ETrue, EFalse );
+    }
+    
+void UT_CMccSymDlStream::Setup2L()
+    {
+    iResources = CMccResourcePoolStub::NewL();
+    iStreamId = 1;
+    iHandler = CMccTestEventHandler::NewL();
+    iRtpMan = CMccRtpManager::NewL( *iHandler, *iResources, iMccSessionId );
+    iStream = CMccSymDlStream::NewLC( iStreamId, iHandler, iResources, iRtpMan, 201 );
+    CleanupStack::Pop( iStream );
+    
+    TPckgBuf<TInt> params( 30000 );
+    iSourceStub = MDataSource::NewSourceL( KRtpDataSource, params );
+    iSinkStub = MDataSink::NewSinkL( KUidMmfAudioOutput, KNullDesC8 );
+
+    iStream->AddSinkAndSourceL( iSinkStub, iSourceStub );
+    }
+
+void UT_CMccSymDlStream::SetupIlbcL()
+    {
+    iResources = CMccResourcePoolStub::NewL();
+    iStreamId = 1;
+    iHandler = CMccTestEventHandler::NewL();
+    iRtpMan = CMccRtpManager::NewL( *iHandler, *iResources,iMccSessionId );
+    iStream = CMccSymDlStream::NewLC( iStreamId, iHandler, iResources, iRtpMan, 201 );
+    CleanupStack::Pop( iStream );
+    
+    TPckgBuf<TInt> params( 30000 );
+    iSourceStub = MDataSource::NewSourceL( KRtpDataSource, params );
+    iSinkStub = MDataSink::NewSinkL( KUidMmfAudioOutput, KNullDesC8 );
+    
+    iStream->AddSinkAndSourceL( iSinkStub, iSourceStub );
+    
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdILBC );
+    cInfo.iBitrate = KIlbcBitrate20;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 0;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 200;
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iPayloadFormatEncoder = KImplUidiLBCPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidiLBCPayloadFormatDecode;
+    
+    iStream->LoadCodecL( cInfo, KNullDesC8 );
+    
+    TUint port;
+    iRtpMan->CreateSessionL( port, ETrue, EFalse );
+    }
+    
+void UT_CMccSymDlStream::Teardown()
+    {
+    if ( iStream )
+        {
+        delete iStream;
+        }
+    
+    if ( iRtpMan )
+        {
+        delete iRtpMan;
+        }
+    
+    if ( iHandler )
+        {
+        delete iHandler;
+        }
+    
+    delete iSourceStub;
+    delete iSinkStub;
+    delete iResources;
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_SetPrioritySettingsLL(  )
+    {
+    TMMFPrioritySettings priority;
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SetPrioritySettingsL( priority ) );
+    
+    iStream->iDatasink = NULL;
+
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->SetPrioritySettingsL( priority ), KErrNotReady );
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_CreatePayloadFormatDecoderL()
+    {
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->CreatePayloadFormatDecoderL(), KErrAlreadyExists );
+    
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdAMRNB );
+    cInfo.iBitrate = KAmrNbBitrate122;
+    cInfo.iAlgoUsed = EGenRedUsed;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 32;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 400; // recommended "limit" 200ms
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iRedundantPayload = KMinDynamicPT;
+    cInfo.iCodecMode = EBandwidthEfficient;
+    cInfo.iPayloadFormatEncoder = KImplUidAmrPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidAmrPayloadFormatDecode;
+    _LIT8( KFmtp, "octet-align=0" );
+    TBuf8<13> buf( KFmtp() );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    
+    delete iStream->iFormatDecode;
+    iStream->iFormatDecode = NULL;
+    delete iStream->iRedFormatDecode;
+    iStream->iRedFormatDecode = NULL;
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->CreatePayloadFormatDecoderL() );
+    
+    cInfo.iAlgoUsed = ENoAlgoUsed;
+    iStream->iCodecInfo = cInfo;
+    
+    delete iStream->iFormatDecode;
+    iStream->iFormatDecode = NULL;
+    delete iStream->iRedFormatDecode;
+    iStream->iRedFormatDecode = NULL;
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->CreatePayloadFormatDecoderL() );
+
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_DoDynamicFrameSizeChangeL()
+    {
+      
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->DoDynamicFrameSizeChangeL( 20 ), KErrNotReady ); 
+ /*   
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdAMRNB );
+    cInfo.iBitrate = KAmrNbBitrate122;
+    cInfo.iAlgoUsed = EGenRedUsed;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 32;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 400; // recommended "limit" 200ms
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iRedundantPayload = KMinDynamicPT;
+    cInfo.iCodecMode = EBandwidthEfficient;
+    cInfo.iPayloadFormatEncoder = KImplUidAmrPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidAmrPayloadFormatDecode;
+    _LIT8( KFmtp, "octet-align=0" );
+    TBuf8<13> buf( KFmtp() );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->DoDynamicFrameSizeChangeL( 20 )  ); 
+    */
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_MultiplexerSink()
+    {
+    iStream->iCodecInfo.iAlgoUsed = EGenRedUsed;
+    MDataSink* sink = iStream->MultiplexerSink();
+    EUNIT_ASSERT( !sink );
+    iStream->iCodecInfo.iAlgoUsed = ENoAlgoUsed;
+    sink = iStream->MultiplexerSink();
+    EUNIT_ASSERT( sink );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_AddSinkAndSourceLL(  )
+    {
+    // These two will fail because of the NULL    
+    EUNIT_ASSERT_LEAVE( iStream->AddSinkAndSourceL( reinterpret_cast<MDataSink*>( this ), NULL ) );
+    EUNIT_ASSERT_LEAVE( iStream->AddSinkAndSourceL( NULL, reinterpret_cast<MDataSource*>( this ) ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_LoadCodecLL(  )
+    {
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdAMRNB );
+    cInfo.iBitrate = KAmrNbBitrate122;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 32;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 400; // recommended "limit" 200ms
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iCodecMode = EBandwidthEfficient;
+    cInfo.iPayloadFormatEncoder = KImplUidAmrPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidAmrPayloadFormatDecode;
+    _LIT8( KFmtp, "octet-align=0" );
+    TBuf8<13> buf( KFmtp() );
+
+    EUNIT_ASSERT( iStream->CurrentCodecState() == CMccSymStreamBase::EStateCodecNone );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    
+    EUNIT_ASSERT( iStream->CurrentCodecState() == CMccSymStreamBase::EStateCodecNegotiated );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    
+    EUNIT_ASSERT( iStream->CurrentCodecState() == CMccSymStreamBase::EStateCodecPrepared );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+
+    // It seems that loading the real codec causes memory leak
+    EUNIT_ASSERT( iStream->CurrentCodecState() == CMccSymStreamBase::EStateCodecPrepared );
+    iStream->UpdateCodecLoadingPermission( ETrue );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    
+    EUNIT_ASSERT( iStream->CurrentCodecState() == CMccSymStreamBase::EStateCodecLoaded );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_UpdateCodecInformationLL(  )
+    {
+    TMccCodecInfo cInfo;
+
+    // iFormatDecode == NULL
+    EUNIT_ASSERT_LEAVE( iStream->UpdateCodecInformationL( iStream->iCodecInfo, cInfo ) );
+    
+    cInfo.iFourCC = TFourCC( KMccFourCCIdAMRNB );
+    cInfo.iBitrate = KAmrNbBitrate122;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 32;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 400; // recommended "limit" 200ms
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iCodecMode = EBandwidthEfficient;
+    cInfo.iPayloadFormatEncoder = KImplUidAmrPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidAmrPayloadFormatDecode;
+    _LIT8( KFmtp, "octet-align=0" );
+    TBuf8<13> buf( KFmtp() );
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->LoadCodecL( cInfo, buf ) );
+//    TUint port;
+//    iRtpMan->CreateSessionL( port, ETrue, EFalse );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->UpdateCodecInformationL( iStream->iCodecInfo, cInfo ) );
+    
+    iStream->iDatasink = NULL;
+    
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->UpdateCodecInformationL( 
+        iStream->iCodecInfo, cInfo ), KErrNotReady );
+    }
+
+void UT_CMccSymDlStream::IlbcModeChangeTestL()
+    {
+    RDebug::Print( _L("UT_CMccSymDlStream::IlbcModeChangeTestL IN") );
+    
+    iStream->PrimeL( 0 );
+    
+    TMccCodecInfo cInfo;
+    cInfo.iFourCC = TFourCC( KMccFourCCIdILBC );
+    cInfo.iBitrate = KIlbcBitrate20;
+    cInfo.iHwFrameTime = 20;
+    cInfo.iFrameSize = 0;
+    cInfo.iPtime = 20;
+    cInfo.iMaxPtime = 200;
+    cInfo.iJitterBufBufferLength = 100;
+    cInfo.iPayloadType = KMinDynamicPT;
+    cInfo.iPayloadFormatEncoder = KImplUidiLBCPayloadFormatEncode;
+    cInfo.iPayloadFormatDecoder = KImplUidiLBCPayloadFormatDecode;
+    
+    iStream->iState = CMccSymStreamBase::EStateStreaming;
+    
+    // First update ptime
+    cInfo.iPtime = 40;
+    MCC_EUNIT_ASSERT_NO_LEAVE(
+        iStream->UpdateCodecInformationL( iStream->iCodecInfo, cInfo ) );
+    
+    // Then update bitrate which requires also ptime adjustment
+    cInfo.iBitrate = KIlbcBitrate30;
+    cInfo.iPtime = 30;
+    cInfo.iMaxPtime = 180;
+    MCC_EUNIT_ASSERT_NO_LEAVE(
+        iStream->UpdateCodecInformationL( iStream->iCodecInfo, cInfo ) );
+    
+    RDebug::Print( _L("UT_CMccSymDlStream::IlbcModeChangeTestL OUT") );
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_PrimeLL(  )
+    {
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->PrimeL(0) );
+    
+    // Can be called twice
+    iResources->iControlled = EFalse;
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->PrimeL(0) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_PlayLL(  )
+    {
+    UT_CMccSymDlStream_PrimeLL();
+    
+    TBool streamPaused( EFalse );
+    TBool enableRtcp( EFalse );
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->PlayL( 0, streamPaused, enableRtcp ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_PauseLL(  )
+    {
+    UT_CMccSymDlStream_PlayLL();
+    
+    TBool enableRtcp( EFalse );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->PauseL( 0, enableRtcp ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_ResumeLL(  )
+    {
+    UT_CMccSymDlStream_PauseLL();
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->ResumeL( 0, ETrue ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_StopLL(  )
+    {
+    UT_CMccSymDlStream_PlayLL();
+    
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->StopL( 0 ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_SetBalanceLL(  )
+    {
+    TInt left( 0 ), right( 0 );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SetBalanceL( left, right ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_GetBalanceLL(  )
+    {
+    TInt left( 0 ), right( 0 );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->GetBalanceL( left, right ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_GetSSRCLL(  )
+    {
+    TUint32 ssrc;
+    
+    // KErrNotSupported
+    EUNIT_ASSERT_LEAVE( iStream->GetSSRCL( ssrc ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_ResetCountersLL(  )
+    {
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->ResetCountersL() );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_SendMediaSignalL()
+    {
+    TMccEvent mmcevent;
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SendMediaSignalL(mmcevent) );
+    
+    iStream->iDatasource = NULL;
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->SendMediaSignalL(mmcevent), KErrNotReady  );
+
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_SendRTCPReceiverReportLL(  )
+    {
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->SendRTCPReceiverReportL(), KErrNotReady );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->PrimeL(0) );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SendRTCPReceiverReportL() );
+    iStream->iDatasource = NULL;
+    EUNIT_ASSERT_LEAVE( iStream->SendRTCPReceiverReportL() );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_SendRTCPSenderReportLL(  )
+    {
+    EUNIT_ASSERT_LEAVE( iStream->SendRTCPSenderReportL() );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_StartInactivityTimerLL(  )
+    {
+    TUint32 timeoutTime( 5000 );
+
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->StartInactivityTimerL( timeoutTime ) );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_StopInactivityTimerLL(  )
+    {
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->StopInactivityTimerL() );
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_AudioRoutingLL()
+    {
+    TUint32 route;
+    
+    // This actually works currently in emulator.
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SetAudioRouteL( KMccAudioToPublic ) );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->GetAudioRouteL( route ) );
+    EUNIT_ASSERT( KMccAudioToPublic == route );
+    
+    // KMccAudioToPrivate
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->SetAudioRouteL( KMccAudioToPrivate ) );
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->GetAudioRouteL( route ) );
+    EUNIT_ASSERT( KMccAudioToPrivate == route );
+    }
+
+void UT_CMccSymDlStream::UT_CMccSymDlStream_IsUplink()
+    {
+    EUNIT_ASSERT( !iStream->IsUplink() );
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_StandByL()
+    {
+    MCC_EUNIT_ASSERT_NO_LEAVE( iStream->StandByL() );
+    iStream->iDatasource = NULL;
+    EUNIT_ASSERT_LEAVE( iStream->StandByL() );
+
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_JitterBufferError()
+    {
+    TInt err = MJitterBufferObserver::EBufferOverflow;
+    iStream->JitterBufferError( err );
+    
+    err = MJitterBufferObserver::EBufferUnderflow;
+    iStream->JitterBufferError( err );
+    }
+    
+void UT_CMccSymDlStream::UT_CMccSymDlStream_BindContextIntoStreamL()
+    {
+       
+    TMccCryptoContext context;
+    TUint32 endpointId = 0;
+    MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iStream->BindContextIntoStreamL( endpointId, context ), KErrNotFound );
+    endpointId = (TUint32)( iStream->iDatasource );
+    
+    // Key ok (stubbed)
+    iStream->BindContextIntoStreamL( endpointId, context );
+    }
+    
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+    UT_CMccSymDlStream,
+    "CMccSymDlStream",
+    "UNIT" )
+
+EUNIT_TEST(
+    "LoadCodecL - test ",
+    "CMccSymDlStream",
+    "LoadCodecL",
+    "FUNCTIONALITY",
+    Setup2L, UT_CMccSymDlStream_LoadCodecLL, Teardown)
+    
+EUNIT_TEST(
+    "SetPrioritySettingsL - test ",
+    "CMccSymDlStream",
+    "SetPrioritySettingsL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_SetPrioritySettingsLL, Teardown)
+
+EUNIT_TEST(
+    "CreatePayloadFormatDecoderL - test ",
+    "CMccSymDlStream",
+    "CreatePayloadFormatDecoderL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_CreatePayloadFormatDecoderL, Teardown)
+    
+EUNIT_TEST(
+    "DoDynamicFrameSizeChangeL - test ",
+    "CMccSymDlStream",
+    "DoDynamicFrameSizeChangeL",
+    "FUNCTIONALITY",
+    Setup2L, UT_CMccSymDlStream_DoDynamicFrameSizeChangeL, Teardown)
+    
+
+EUNIT_TEST(
+    "MultiplexerSink - test ",
+    "CMccSymDlStream",
+    "MultiplexerSink",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_MultiplexerSink, Teardown)
+    
+
+EUNIT_TEST(
+    "AddSinkAndSourceL - test ",
+    "CMccSymDlStream",
+    "AddSinkAndSourceL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_AddSinkAndSourceLL, Teardown)
+
+EUNIT_TEST(
+    "UpdateCodecInformationL - test ",
+    "CMccSymDlStream",
+    "UpdateCodecInformationL",
+    "FUNCTIONALITY",
+    Setup2L, UT_CMccSymDlStream_UpdateCodecInformationLL, Teardown)
+
+EUNIT_TEST(
+    "IlbcModeChange - test ",
+    "CMccSymDlStream",
+    "IlbcModeChangeTestL",
+    "FUNCTIONALITY",
+    SetupIlbcL, IlbcModeChangeTestL, Teardown)
+    
+EUNIT_TEST(
+    "PrimeL - test ",
+    "CMccSymDlStream",
+    "PrimeL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_PrimeLL, Teardown)
+
+EUNIT_TEST(
+    "PlayL - test ",
+    "CMccSymDlStream",
+    "PlayL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_PlayLL, Teardown)
+
+EUNIT_TEST(
+    "PauseL - test ",
+    "CMccSymDlStream",
+    "PauseL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_PauseLL, Teardown)
+
+EUNIT_TEST(
+    "ResumeL - test ",
+    "CMccSymDlStream",
+    "ResumeL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_ResumeLL, Teardown)
+
+EUNIT_TEST(
+    "StopL - test ",
+    "CMccSymDlStream",
+    "StopL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_StopLL, Teardown)
+
+EUNIT_TEST(
+    "SetBalanceL - test ",
+    "CMccSymDlStream",
+    "SetBalanceL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_SetBalanceLL, Teardown)
+
+EUNIT_TEST(
+    "GetBalanceL - test ",
+    "CMccSymDlStream",
+    "GetBalanceL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_GetBalanceLL, Teardown)
+
+EUNIT_TEST(
+    "GetSSRCL - test ",
+    "CMccSymDlStream",
+    "GetSSRCL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_GetSSRCLL, Teardown)
+
+EUNIT_TEST(
+    "ResetCountersL - test ",
+    "CMccSymDlStream",
+    "ResetCountersL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_ResetCountersLL, Teardown)
+
+EUNIT_TEST(
+    "SendMediaSignalL - test ",
+    "CMccSymDlStream",
+    "SendMediaSignalL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_SendMediaSignalL, Teardown)
+
+
+EUNIT_TEST(
+    "SendRTCPReceiverReportL - test ",
+    "CMccSymDlStream",
+    "SendRTCPReceiverReportL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_SendRTCPReceiverReportLL, Teardown)
+
+EUNIT_TEST(
+    "SendRTCPSenderReportL - test ",
+    "CMccSymDlStream",
+    "SendRTCPSenderReportL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_SendRTCPSenderReportLL, Teardown)
+
+EUNIT_TEST(
+    "StartInactivityTimerL - test ",
+    "CMccSymDlStream",
+    "StartInactivityTimerL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_StartInactivityTimerLL, Teardown)
+
+EUNIT_TEST(
+    "StopInactivityTimerL - test ",
+    "CMccSymDlStream",
+    "StopInactivityTimerL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_StopInactivityTimerLL, Teardown)
+
+EUNIT_TEST(
+    "AudioRoutingL - test ",
+    "CMccSymDlStream",
+    "AudioRoutingL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_AudioRoutingLL, Teardown)
+    
+EUNIT_TEST(
+    "IsUplink - test ",
+    "CMccSymDlStream",
+    "IsUplink",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_IsUplink, Teardown)
+    
+EUNIT_TEST(
+    "StandByL - test ",
+    "CMccSymDlStream",
+    "StandByL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_StandByL, Teardown)
+    
+EUNIT_TEST(
+    "JitterBufferError - test ",
+    "CMccSymDlStream",
+    "JitterBufferError",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_JitterBufferError, Teardown)
+    
+EUNIT_TEST(
+    "BindContextIntoStreamL - test ",
+    "CMccSymDlStream",
+    "BindContextIntoStreamL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMccSymDlStream_BindContextIntoStreamL, Teardown)
+    
+
+
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE