multimediacommscontroller/mmccjitterbuffer/tsrc/ut_jitterbuffer/src/UT_CMccJitterBufferImpl.cpp
changeset 0 1bce908db942
child 32 f2ed1fc4c163
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 //  EXTERNAL INCLUDES
       
    22 #include <digia/eunit/eunitmacros.h>
       
    23 
       
    24 //  CLASS HEADER
       
    25 #include "UT_CMccJitterBufferImpl.h"
       
    26 
       
    27 //  INTERNAL INCLUDES
       
    28 #include "mccjitterbufferimpl.h"
       
    29 #include "mmccevents.h"
       
    30 #include "mccinternalevents.h"
       
    31 
       
    32 // CONSTRUCTION
       
    33 UT_CMccJitterBufferImpl* UT_CMccJitterBufferImpl::NewL()
       
    34     {
       
    35     UT_CMccJitterBufferImpl* self = UT_CMccJitterBufferImpl::NewLC(); 
       
    36     CleanupStack::Pop();
       
    37 
       
    38     return self;
       
    39     }
       
    40 
       
    41 UT_CMccJitterBufferImpl* UT_CMccJitterBufferImpl::NewLC()
       
    42     {
       
    43     UT_CMccJitterBufferImpl* self = new( ELeave ) UT_CMccJitterBufferImpl();
       
    44     CleanupStack::PushL( self );
       
    45 
       
    46 	self->ConstructL(); 
       
    47 
       
    48     return self;
       
    49     }
       
    50 
       
    51 // Destructor (virtual by CBase)
       
    52 UT_CMccJitterBufferImpl::~UT_CMccJitterBufferImpl()
       
    53     {
       
    54     }
       
    55 
       
    56 // Default constructor
       
    57 UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl() :
       
    58     iJBufImpl( NULL ),
       
    59     iDevSoundDummy( NULL )
       
    60     {
       
    61     }
       
    62 
       
    63 // Second phase construct
       
    64 void UT_CMccJitterBufferImpl::ConstructL()
       
    65     {
       
    66     // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
    67     // It generates the test case table.
       
    68     CEUnitTestSuiteClass::ConstructL();
       
    69     }
       
    70 
       
    71 //  METHODS
       
    72 
       
    73 
       
    74 void UT_CMccJitterBufferImpl::CreateJitterBufferEvent( TMccEvent& aEvent )
       
    75     {
       
    76     TMccJitterBufferEventData eventData;
       
    77     eventData.iFramesPlayed = 2;
       
    78     eventData.iFramesReceived = 4;
       
    79     aEvent.iEventData = TMccJitterBufferEventDataPackage( eventData );
       
    80     }
       
    81 
       
    82 void UT_CMccJitterBufferImpl::SetupL()
       
    83     {
       
    84     iJBufImpl = CMccJitterBufferImpl::NewL();
       
    85 
       
    86     iCInfo.iFourCC = KMccFourCCIdAMRNB;
       
    87     iCInfo.iPtime = 20;
       
    88     iCInfo.iHwFrameTime = 20;
       
    89     iCInfo.iBitrate = 12200;
       
    90     iCInfo.iJitterBufBufferLength = 200;
       
    91     iCInfo.iJitterBufInactivityTimeOut = 35;
       
    92 
       
    93     iJBufImpl->SetupL( 5, iCInfo, *iDevSoundDummy, this, 0 );
       
    94     } 
       
    95 
       
    96 void UT_CMccJitterBufferImpl::Setup2L()
       
    97     {
       
    98     iJBufImpl = CMccJitterBufferImpl::NewL();
       
    99     } 
       
   100 
       
   101 void UT_CMccJitterBufferImpl::Teardown()
       
   102     {
       
   103     if ( iJBufImpl )
       
   104         {
       
   105         delete iJBufImpl;
       
   106         iJBufImpl = NULL;
       
   107         }
       
   108     }
       
   109 
       
   110 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupLL()
       
   111     {
       
   112     CMMFDevSound* devSoundDummy( NULL );
       
   113     TMccCodecInfo cInfo;
       
   114     // aCInfo.iPtime = 0
       
   115     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 0, 
       
   116                                  cInfo, *devSoundDummy, this, 0 ),
       
   117                                  KErrArgument );
       
   118     
       
   119     cInfo.iPtime = 20;
       
   120     // aCInfo.iJitterBufBufferLength = 0
       
   121     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 0, 
       
   122                                  cInfo, *devSoundDummy, this, 0 ),
       
   123                                  KErrArgument );
       
   124                                  
       
   125     cInfo.iJitterBufBufferLength = 20;
       
   126     // aCInfo.iHwFrameTime = 0
       
   127     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 0, 
       
   128                                  cInfo, *devSoundDummy, this, 0 ),
       
   129                                  KErrArgument );
       
   130     
       
   131     cInfo.iHwFrameTime = 20;
       
   132     cInfo.iJitterBufInactivityTimeOut = 30;
       
   133     cInfo.iJitterBufPlayToneFrequency = 1000;
       
   134     cInfo.iJitterBufPlayToneDuration = 100;
       
   135     cInfo.iJitterBufBufferLength = 0;
       
   136     // aBufferSize < aCInfo.iPtime
       
   137     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 0, 
       
   138                                  cInfo, *devSoundDummy, this, 0 ),
       
   139                                  KErrArgument );
       
   140     
       
   141     cInfo.iJitterBufBufferLength = 20;
       
   142     cInfo.iFourCC = KMccFourCCIdDTMF;
       
   143     // wrong codec
       
   144     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 0, 
       
   145                                  cInfo, *devSoundDummy, this, 0 ),
       
   146                                  KErrNotSupported );
       
   147 
       
   148     cInfo.iFourCC = KMccFourCCIdG711;
       
   149     cInfo.iJitterBufBufferLength = 10;
       
   150 
       
   151     // aPlayoutThreshold > iBufferLength
       
   152     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 20,
       
   153                                  cInfo, *devSoundDummy, this, 0 ),
       
   154                                  KErrTooBig );
       
   155     
       
   156     // Run the same test for the rest of the codecs just to reach the branches
       
   157     cInfo.iFourCC = KMccFourCCIdILBC;
       
   158     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 20,
       
   159                                  cInfo, *devSoundDummy, this, 0 ),
       
   160                                  KErrTooBig );
       
   161     
       
   162     cInfo.iFourCC = KMccFourCCIdG729;
       
   163     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->SetupL( 20,
       
   164                                  cInfo, *devSoundDummy, this, 0 ),
       
   165                                  KErrTooBig );
       
   166     }
       
   167     
       
   168 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupL2L()
       
   169     {
       
   170     // AMR-NB
       
   171     CMMFDevSound* devSoundDummy( NULL );
       
   172     TMccCodecInfo cInfo;
       
   173 
       
   174     cInfo.iFourCC = KMccFourCCIdAMRNB;
       
   175     cInfo.iPtime = 20;
       
   176     cInfo.iHwFrameTime = 20;
       
   177     cInfo.iBitrate = 12200;
       
   178     cInfo.iJitterBufBufferLength = 200;
       
   179 
       
   180     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   181     iJBufImpl->SetupL( 33, cInfo, *devSoundDummy, this, 0 );
       
   182     }
       
   183     
       
   184 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupL3L()
       
   185     {
       
   186     // codec G711
       
   187     CMMFDevSound* devSoundDummy( NULL );
       
   188     TMccCodecInfo cInfo;
       
   189     cInfo.iPtime = 20;
       
   190     cInfo.iHwFrameTime = 20;
       
   191     cInfo.iBitrate = 12200;
       
   192     cInfo.iJitterBufBufferLength = 200;
       
   193 
       
   194     cInfo.iFourCC = KMccFourCCIdG711;
       
   195     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   196     // Test G.711 dynamic configuration.
       
   197     cInfo.iHwFrameTime = 10;
       
   198     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   199     iJBufImpl->SetupL( 33, cInfo, *devSoundDummy, this, 0 );
       
   200     }
       
   201     
       
   202 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupL4L()
       
   203     {
       
   204     // codec KMccFourCCIdILBC
       
   205     CMMFDevSound* devSoundDummy( NULL );
       
   206     TMccCodecInfo cInfo;
       
   207 
       
   208     cInfo.iPtime = 20;
       
   209     cInfo.iHwFrameTime = 20;
       
   210     cInfo.iBitrate = 12200;
       
   211     cInfo.iJitterBufBufferLength = 200;
       
   212 
       
   213     cInfo.iFourCC = KMccFourCCIdILBC;
       
   214     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   215     iJBufImpl->SetupL( 33, cInfo, *devSoundDummy, this, 0 );
       
   216     }  
       
   217     
       
   218 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupL5L()
       
   219     {
       
   220     // KMccFourCCIdG729
       
   221     CMMFDevSound* devSoundDummy( NULL );
       
   222     TMccCodecInfo cInfo;
       
   223 
       
   224     cInfo.iPtime = 20;
       
   225     cInfo.iHwFrameTime = 20;
       
   226     cInfo.iBitrate = 12200;
       
   227     cInfo.iJitterBufBufferLength = 200;
       
   228     
       
   229     cInfo.iFourCC = KMccFourCCIdG729;
       
   230     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   231     iJBufImpl->SetupL( 33, cInfo, *devSoundDummy, this, 0 );
       
   232     }   
       
   233     
       
   234 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_SetupL6L()
       
   235     {
       
   236     // KMccFourCCIdAMRWB
       
   237     CMMFDevSound* devSoundDummy( NULL );
       
   238     TMccCodecInfo cInfo;
       
   239 
       
   240     cInfo.iPtime = 20;
       
   241     cInfo.iHwFrameTime = 20;
       
   242     cInfo.iBitrate = 12200;
       
   243     cInfo.iJitterBufBufferLength = 200;
       
   244     
       
   245     cInfo.iFourCC = KMccFourCCIdAMRWB;
       
   246     iJBufImpl->SetupL( 5, cInfo, *devSoundDummy, this, 0 );
       
   247     iJBufImpl->SetupL( 33, cInfo, *devSoundDummy, this, 0 );
       
   248     EUNIT_ASSERT( iJBufImpl->iSampleRate == 16 );
       
   249     }  
       
   250 
       
   251 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_ResetBufferL()
       
   252     {
       
   253     iJBufImpl->DelayUpL();
       
   254     iJBufImpl->ResetBuffer();
       
   255     }
       
   256     
       
   257 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_CurrentCodecL()
       
   258     {
       
   259     TFourCC codec = iJBufImpl->CurrentCodec();
       
   260     EUNIT_ASSERT_EQUALS( codec.FourCC(), KMccFourCCIdAMRNB );
       
   261     }
       
   262 
       
   263 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_DelayUpLL()
       
   264     {
       
   265     CMMFDevSound* devSoundDummy( NULL );
       
   266     TMccCodecInfo cInfo;
       
   267 
       
   268     cInfo.iFourCC = KMccFourCCIdAMRNB;
       
   269     cInfo.iPtime = 20;
       
   270     cInfo.iHwFrameTime = 20;
       
   271     cInfo.iBitrate = 12200;
       
   272     cInfo.iJitterBufBufferLength = 200;
       
   273 
       
   274     // Use a playout treshold of 0
       
   275     iJBufImpl->SetupL( 0, cInfo, *devSoundDummy, this, 0 );
       
   276 
       
   277     iJBufImpl->DelayUpL();
       
   278 
       
   279     // Reach more branches using the default playout treshold
       
   280     this->Teardown();
       
   281     this->SetupL();
       
   282 
       
   283     iJBufImpl->DelayUpL();
       
   284     }
       
   285 
       
   286 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_DelayDownLL()
       
   287     {
       
   288     iJBufImpl->DelayDownL();
       
   289 
       
   290     // Put a packet in the buffer
       
   291     CMMFDescriptorBuffer* buf = CMMFDescriptorBuffer::NewL( 10 );
       
   292     CleanupStack::PushL( buf );
       
   293     
       
   294     TDes8& bufData = buf->Data();
       
   295     _LIT( KText, "foo42" );
       
   296     bufData.Copy( KText );
       
   297     iJBufImpl->AddDataFrameL( buf );
       
   298 
       
   299     iJBufImpl->DelayDownL();
       
   300     
       
   301     iJBufImpl->AddDataFrameL( buf );
       
   302     iJBufImpl->AddDataFrameL( buf );
       
   303     iJBufImpl->AddDataFrameL( buf );
       
   304     iJBufImpl->AddDataFrameL( buf );
       
   305     iJBufImpl->AddDataFrameL( buf );
       
   306     iJBufImpl->AddDataFrameL( buf );
       
   307     iJBufImpl->AddDataFrameL( buf );
       
   308     iJBufImpl->AddDataFrameL( buf );
       
   309 
       
   310     iJBufImpl->DelayDownL();
       
   311 
       
   312     // Create a new Jbuf with parameters that let us reach more branches
       
   313     this->Teardown();
       
   314     this->Setup2L();
       
   315 
       
   316     iCInfo.iFourCC = KMccFourCCIdAMRNB;
       
   317     iCInfo.iPtime = 20;
       
   318     iCInfo.iHwFrameTime = 20;
       
   319     iCInfo.iBitrate = 12200;
       
   320     iCInfo.iJitterBufBufferLength = 2;
       
   321     iCInfo.iJitterBufInactivityTimeOut = 35;
       
   322 
       
   323     iJBufImpl->SetupL( 1, iCInfo, *iDevSoundDummy, this, 0 );
       
   324 
       
   325     iJBufImpl->DelayDownL();
       
   326     iJBufImpl->DelayDownL();
       
   327 
       
   328     iJBufImpl->ResetBuffer();
       
   329 
       
   330     // Make the buffer full (it has space for only two elements)
       
   331     iJBufImpl->AddDataFrameL( buf );
       
   332     iJBufImpl->AddDataFrameL( buf );
       
   333 
       
   334     iJBufImpl->DelayDownL();
       
   335     iJBufImpl->DelayDownL();
       
   336     iJBufImpl->DelayDownL();
       
   337 
       
   338     CleanupStack::PopAndDestroy( buf );
       
   339     }
       
   340 
       
   341 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_CalculateDelayL()
       
   342     {
       
   343     // Put a packet in the buffer
       
   344     CMMFDescriptorBuffer* buf = CMMFDescriptorBuffer::NewL( 10 );
       
   345     CleanupStack::PushL( buf );
       
   346     
       
   347     TDes8& bufData = buf->Data();
       
   348     _LIT( KText, "foo42" );
       
   349     bufData.Copy( KText );
       
   350     iJBufImpl->AddDataFrameL( buf );
       
   351 
       
   352     TTimeIntervalMicroSeconds32 time( iJBufImpl->CalculateDelay() );
       
   353     EUNIT_ASSERT_EQUALS( time.Int(), 20 );
       
   354 
       
   355     CleanupStack::PopAndDestroy( buf ); 
       
   356     }
       
   357 
       
   358 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_AddDataFrameLL()
       
   359     {
       
   360     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->AddDataFrameL( NULL ),
       
   361                                  KErrNoMemory );
       
   362 
       
   363     CMMFDescriptorBuffer* buf = CMMFDescriptorBuffer::NewL( 10 );
       
   364     CleanupStack::PushL( buf );
       
   365     
       
   366     TDes8& bufData = buf->Data();
       
   367     _LIT( KText, "foo42" );
       
   368     bufData.Copy( KText );
       
   369 
       
   370     iJBufImpl->AddDataFrameL( buf );
       
   371     iJBufImpl->AddDataFrameL( buf );
       
   372     iJBufImpl->AddDataFrameL( buf );
       
   373 
       
   374     CleanupStack::PopAndDestroy( buf );
       
   375     }
       
   376 
       
   377 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_GetDataFrameLL()
       
   378     {
       
   379     EUNIT_ASSERT_SPECIFIC_LEAVE( iJBufImpl->GetDataFrameL( NULL ),
       
   380                                  KErrNoMemory );
       
   381 
       
   382     // Need a big buffer for the SID packet in WINSCW
       
   383     CMMFDescriptorBuffer* buf = CMMFDescriptorBuffer::NewL( 1250 );
       
   384     CleanupStack::PushL( buf );
       
   385     
       
   386     iJBufImpl->GetDataFrameL( buf );
       
   387 
       
   388     buf->ReAllocBufferL( 1250 );
       
   389 
       
   390     // This time, the inactivity timeout should be "passed"
       
   391     iJBufImpl->GetDataFrameL( buf );
       
   392     buf->ReAllocBufferL( 1250 );
       
   393 
       
   394     // Now put some real stuff in the buffer
       
   395     CMMFDescriptorBuffer* buf2 = CMMFDescriptorBuffer::NewL( 10 );
       
   396     CleanupStack::PushL( buf2 );
       
   397     
       
   398     TDes8& bufData = buf2->Data();
       
   399     _LIT( KText, "foo42" );
       
   400     bufData.Copy( KText );
       
   401     iJBufImpl->AddDataFrameL( buf2 );
       
   402 
       
   403     // Reach the iPacketsInBuffer < iCurrentPlayThreshold branch
       
   404     iJBufImpl->GetDataFrameL( buf );
       
   405     buf->ReAllocBufferL( 1250 );
       
   406 
       
   407     // Add enough data to be played
       
   408     iJBufImpl->AddDataFrameL( buf2 );
       
   409     iJBufImpl->AddDataFrameL( buf2 );
       
   410     iJBufImpl->AddDataFrameL( buf2 );
       
   411     iJBufImpl->AddDataFrameL( buf2 );
       
   412     iJBufImpl->AddDataFrameL( buf2 );
       
   413     iJBufImpl->AddDataFrameL( buf2 );
       
   414 
       
   415     iJBufImpl->GetDataFrameL( buf );
       
   416 
       
   417     CleanupStack::PopAndDestroy( buf2 );
       
   418     CleanupStack::PopAndDestroy( buf );
       
   419     }
       
   420 
       
   421 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_BufferLengthL()
       
   422     {
       
   423     EUNIT_ASSERT_EQUALS( iJBufImpl->BufferLength(), 200 );
       
   424     }
       
   425 
       
   426 void UT_CMccJitterBufferImpl::UT_CMccJitterBufferImpl_GenerateStatisticsL()
       
   427     {
       
   428     // Put a packet in the buffer
       
   429     CMMFDescriptorBuffer* buf = CMMFDescriptorBuffer::NewL( 10 );
       
   430     CleanupStack::PushL( buf );
       
   431     
       
   432     TDes8& bufData = buf->Data();
       
   433     _LIT( KText, "foo42" );
       
   434     bufData.Copy( KText );
       
   435     iJBufImpl->AddDataFrameL( buf );
       
   436     
       
   437     TMccJitterBufferEventData eventData;
       
   438 
       
   439     iJBufImpl->GenerateStatistics( eventData );
       
   440     EUNIT_ASSERT_EQUALS( eventData.iBufferLength, 200 );
       
   441     EUNIT_ASSERT_EQUALS( eventData.iFramesInBuffer, 1 );
       
   442 
       
   443     CleanupStack::PopAndDestroy( buf ); 
       
   444     }
       
   445 
       
   446 //  TEST TABLE
       
   447 
       
   448 EUNIT_BEGIN_TEST_TABLE( 
       
   449     UT_CMccJitterBufferImpl,
       
   450     "Add test suite description here.",
       
   451     "UNIT" )
       
   452 
       
   453 EUNIT_TEST(
       
   454     "SetupL - 1 test failure",
       
   455     "CMccJitterBufferImpl",
       
   456     "SetupL",
       
   457     "FUNCTIONALITY",
       
   458     Setup2L, UT_CMccJitterBufferImpl_SetupLL, Teardown )
       
   459 
       
   460 EUNIT_TEST(
       
   461     "SetupL - 2 test amrnb",
       
   462     "CMccJitterBufferImpl",
       
   463     "SetupL",
       
   464     "FUNCTIONALITY",
       
   465     Setup2L, UT_CMccJitterBufferImpl_SetupL2L, Teardown )
       
   466 
       
   467 EUNIT_TEST(
       
   468     "SetupL - 3 test g711",
       
   469     "CMccJitterBufferImpl",
       
   470     "SetupL",
       
   471     "FUNCTIONALITY",
       
   472     Setup2L, UT_CMccJitterBufferImpl_SetupL3L, Teardown )
       
   473     
       
   474 EUNIT_TEST(
       
   475     "SetupL - 4 test ilbc",
       
   476     "CMccJitterBufferImpl",
       
   477     "SetupL",
       
   478     "FUNCTIONALITY",
       
   479     Setup2L, UT_CMccJitterBufferImpl_SetupL4L, Teardown )
       
   480     
       
   481 EUNIT_TEST(
       
   482     "SetupL - 5 test g729",
       
   483     "CMccJitterBufferImpl",
       
   484     "SetupL",
       
   485     "FUNCTIONALITY",
       
   486     Setup2L, UT_CMccJitterBufferImpl_SetupL5L, Teardown )
       
   487     
       
   488  EUNIT_TEST(
       
   489     "SetupL - 6 test amrwb",
       
   490     "CMccJitterBufferImpl",
       
   491     "SetupL",
       
   492     "FUNCTIONALITY",
       
   493     Setup2L, UT_CMccJitterBufferImpl_SetupL6L, Teardown )
       
   494     
       
   495 EUNIT_TEST(
       
   496     "ResetBuffer - test ",
       
   497     "CMccJitterBufferImpl",
       
   498     "ResetBuffer",
       
   499     "FUNCTIONALITY",
       
   500     SetupL, UT_CMccJitterBufferImpl_ResetBufferL, Teardown )
       
   501     
       
   502 EUNIT_TEST(
       
   503     "CurrentCodec - test ",
       
   504     "CMccJitterBufferImpl",
       
   505     "CurrentCodec",
       
   506     "FUNCTIONALITY",
       
   507     SetupL, UT_CMccJitterBufferImpl_CurrentCodecL, Teardown )
       
   508 
       
   509 EUNIT_TEST(
       
   510     "DelayUpL - test ",
       
   511     "CMccJitterBufferImpl",
       
   512     "DelayUpL",
       
   513     "FUNCTIONALITY",
       
   514     Setup2L, UT_CMccJitterBufferImpl_DelayUpLL, Teardown )
       
   515 
       
   516 EUNIT_TEST(
       
   517     "DelayDownL - test ",
       
   518     "CMccJitterBufferImpl",
       
   519     "DelayDownL",
       
   520     "FUNCTIONALITY",
       
   521     SetupL, UT_CMccJitterBufferImpl_DelayDownLL, Teardown )
       
   522 
       
   523 EUNIT_TEST(
       
   524     "CalculateDelay - test ",
       
   525     "CMccJitterBufferImpl",
       
   526     "CalculateDelay",
       
   527     "FUNCTIONALITY",
       
   528     SetupL, UT_CMccJitterBufferImpl_CalculateDelayL, Teardown )
       
   529 
       
   530 EUNIT_TEST(
       
   531     "AddDataFrameL - test ",
       
   532     "CMccJitterBufferImpl",
       
   533     "AddDataFrameL",
       
   534     "FUNCTIONALITY",
       
   535     SetupL, UT_CMccJitterBufferImpl_AddDataFrameLL, Teardown )
       
   536 
       
   537 EUNIT_TEST(
       
   538     "GetDataFrameL - test ",
       
   539     "CMccJitterBufferImpl",
       
   540     "GetDataFrameL",
       
   541     "FUNCTIONALITY",
       
   542     SetupL, UT_CMccJitterBufferImpl_GetDataFrameLL, Teardown )
       
   543 
       
   544 EUNIT_TEST(
       
   545     "BufferLength - test ",
       
   546     "CMccJitterBufferImpl",
       
   547     "BufferLength",
       
   548     "FUNCTIONALITY",
       
   549     SetupL, UT_CMccJitterBufferImpl_BufferLengthL, Teardown )
       
   550 
       
   551 EUNIT_TEST(
       
   552     "GenerateStatistics - test ",
       
   553     "CMccJitterBufferImpl",
       
   554     "GenerateStatistics",
       
   555     "FUNCTIONALITY",
       
   556     SetupL, UT_CMccJitterBufferImpl_GenerateStatisticsL, Teardown )
       
   557 
       
   558 EUNIT_END_TEST_TABLE
       
   559 
       
   560 //  END OF FILE