multimediacommscontroller/mmccinterface/tsrc/ut_interface/src/UT_CMccCodecDTMF.cpp
changeset 0 1bce908db942
child 14 5bf83dc720b3
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 //  CLASS HEADER
       
    22 #include "UT_CMccCodecDTMF.h"
       
    23 
       
    24 //  EXTERNAL INCLUDES
       
    25 #include <digia/eunit/eunitmacros.h>
       
    26 
       
    27 
       
    28 //  INTERNAL INCLUDES
       
    29 #include "mmcccodecdtmf.h"
       
    30 #include "mccunittestmacros.h"
       
    31 
       
    32 // CONSTRUCTION
       
    33 UT_CMccCodecDTMF* UT_CMccCodecDTMF::NewL()
       
    34     {
       
    35     UT_CMccCodecDTMF* self = UT_CMccCodecDTMF::NewLC();
       
    36     CleanupStack::Pop();
       
    37 
       
    38     return self;
       
    39     }
       
    40 
       
    41 UT_CMccCodecDTMF* UT_CMccCodecDTMF::NewLC()
       
    42     {
       
    43     UT_CMccCodecDTMF* self = new( ELeave ) UT_CMccCodecDTMF();
       
    44     CleanupStack::PushL( self );
       
    45 
       
    46     self->ConstructL();
       
    47 
       
    48     return self;
       
    49     }
       
    50 
       
    51 // Destructor (virtual by CBase)
       
    52 UT_CMccCodecDTMF::~UT_CMccCodecDTMF()
       
    53     {
       
    54     }
       
    55 
       
    56 // Default constructor
       
    57 UT_CMccCodecDTMF::UT_CMccCodecDTMF()
       
    58     {
       
    59     }
       
    60 
       
    61 // Second phase construct
       
    62 void UT_CMccCodecDTMF::ConstructL()
       
    63     {
       
    64     // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
    65     // It generates the test case table.
       
    66     CEUnitTestSuiteClass::ConstructL();
       
    67     }
       
    68 
       
    69 //  METHODS
       
    70 
       
    71 
       
    72 
       
    73 void UT_CMccCodecDTMF::SetupL(  )
       
    74     {
       
    75     iCodec = CMccCodecDTMF::NewL();
       
    76     }
       
    77 
       
    78 void UT_CMccCodecDTMF::Teardown(  )
       
    79     {
       
    80     delete iCodec;
       
    81     }
       
    82 
       
    83 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_RequireSignallingL(  )
       
    84     {
       
    85     CMccCodecDTMF* codecinfo = CMccCodecDTMF::NewL();
       
    86     CleanupStack::PushL(codecinfo);
       
    87     codecinfo->SetPTime(2);
       
    88     codecinfo->SetMaxPTime(1);
       
    89     codecinfo->SetPayloadType(1);
       
    90     codecinfo->iBitrateMask = 1;
       
    91     codecinfo->SetCodecMode(1);
       
    92     codecinfo->SetSamplingFreq(1000);
       
    93     codecinfo->SetMaxBitrate(64000);
       
    94     codecinfo->SetFramerate(1.1);
       
    95     codecinfo->iVideoWidth = 1;
       
    96     codecinfo->iVideoHeight  = 1;
       
    97     EUNIT_ASSERT(!iCodec->RequireSignalling(*codecinfo));
       
    98     CleanupStack::PopAndDestroy(codecinfo);    
       
    99     }
       
   100 
       
   101 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_CloneDefaultsLL(  )
       
   102     {
       
   103     CMccCodecInformation* codecinfo = iCodec->CloneDefaultsL();
       
   104     delete codecinfo;   
       
   105     }
       
   106 
       
   107 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_CloneDetailedLL(  )
       
   108     {
       
   109     CMccCodecInformation* codecinfo = iCodec->CloneDetailedL();
       
   110     delete codecinfo; 
       
   111     }
       
   112 
       
   113 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_EnableVADL(  )
       
   114     {
       
   115     EUNIT_ASSERT( iCodec->EnableVAD(ETrue) == KErrNotSupported  );
       
   116     }
       
   117 
       
   118 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetBitrateL(  )
       
   119     {
       
   120     EUNIT_ASSERT( iCodec->SetBitrate(0) == KErrNone );
       
   121     }
       
   122 
       
   123 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetSamplingFreqL(  )
       
   124     {
       
   125     EUNIT_ASSERT( iCodec->SetSamplingFreq(64000) ==  KErrNotSupported );
       
   126     }
       
   127 
       
   128 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetPTimeL(  )
       
   129     {
       
   130     EUNIT_ASSERT( iCodec->SetPTime(100) ==  KErrNone );
       
   131     EUNIT_ASSERT( iCodec->SetPTime(300) ==  KErrNotSupported );
       
   132 
       
   133     }
       
   134 
       
   135 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetMaxPTimeL(  )
       
   136     {
       
   137     EUNIT_ASSERT( iCodec->SetMaxPTime(100) ==  KErrNone );
       
   138     EUNIT_ASSERT( iCodec->SetMaxPTime(300) ==  KErrNotSupported );
       
   139     
       
   140     }
       
   141 
       
   142 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetSdpNameL(  )
       
   143     {
       
   144     EUNIT_ASSERT( iCodec->SetSdpName( KTelephoneEvent ) == KErrNone);
       
   145     EUNIT_ASSERT( iCodec->SetSdpName( KAACSdpName ) == KErrNotSupported);
       
   146     }
       
   147 
       
   148 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetPayloadTypeL(  )
       
   149     {
       
   150     EUNIT_ASSERT( iCodec->SetPayloadType(100) == KErrNone );
       
   151     EUNIT_ASSERT( iCodec->SetPayloadType(20) == KErrNotSupported );
       
   152 
       
   153     }
       
   154 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_SetCodecModeL(  )
       
   155     {
       
   156     EUNIT_ASSERT( iCodec->SetCodecMode(EDTMFModeEvent) == KErrNone );
       
   157     EUNIT_ASSERT( iCodec->SetCodecMode(EDTMFModeTone) == KErrNotSupported );
       
   158 
       
   159     }
       
   160 
       
   161 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_AddAllowedBit()
       
   162     {
       
   163     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber0 ) );
       
   164     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber2 ) );
       
   165     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber3 ) );
       
   166     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber4 ) );
       
   167     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber5 ) );
       
   168     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber6 ) );
       
   169     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber7 ) );
       
   170     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber8 ) );
       
   171     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber9 ) );
       
   172     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber10 ) );
       
   173     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber11 ) );
       
   174     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber12 ) );
       
   175     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber13 ) );
       
   176     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber14 ) );
       
   177     EUNIT_ASSERT( iCodec->AddAllowedBit( KDtmfNumber15 ) );
       
   178     EUNIT_ASSERT( !iCodec->AddAllowedBit( 16 ) );
       
   179 
       
   180     }
       
   181 
       
   182 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_GetAllowedToneNumbersArray()
       
   183     {
       
   184     RArray<TUint> toneNumbers;
       
   185     CleanupClosePushL( toneNumbers );
       
   186     iCodec->iBitrateMask = 0;
       
   187     toneNumbers.Reset();
       
   188     iCodec->GetAllowedToneNumbersArrayL( toneNumbers );
       
   189     EUNIT_ASSERT( toneNumbers.Count() == 0 );
       
   190 
       
   191     iCodec->iBitrateMask = 0x003E;
       
   192     iCodec->GetAllowedToneNumbersArrayL( toneNumbers );
       
   193 
       
   194     EUNIT_ASSERT( toneNumbers.Count() == 5 );
       
   195     toneNumbers.Reset();
       
   196     
       
   197     iCodec->iBitrateMask = 0xFFFF;
       
   198     iCodec->GetAllowedToneNumbersArrayL( toneNumbers );
       
   199 
       
   200     EUNIT_ASSERT( toneNumbers.Count() == 16 );
       
   201     toneNumbers.Reset();
       
   202     
       
   203     
       
   204     iCodec->iBitrateMask = 0x9CE7;
       
   205     iCodec->GetAllowedToneNumbersArrayL( toneNumbers );
       
   206 
       
   207     EUNIT_ASSERT( toneNumbers.Count() == 10 );
       
   208     toneNumbers.Reset();
       
   209     
       
   210     CleanupStack::PopAndDestroy();
       
   211   
       
   212     }
       
   213 
       
   214 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_FindContinuusIntegers()
       
   215     {
       
   216     RArray<TUint> toneNumbers;
       
   217     CleanupClosePushL( toneNumbers );
       
   218     TUint pos = 0;
       
   219     
       
   220     iCodec->FindContinuusIntegers( toneNumbers, pos );
       
   221     EUNIT_ASSERT( pos == 0 );
       
   222     EUNIT_ASSERT( toneNumbers.Count() == 0 );
       
   223     
       
   224     toneNumbers.InsertInOrderL( 0 );
       
   225     
       
   226     // 0
       
   227     iCodec->FindContinuusIntegers( toneNumbers, pos );
       
   228     EUNIT_ASSERT( pos == 0 );
       
   229     EUNIT_ASSERT( toneNumbers.Count() == 1 );
       
   230 
       
   231     // 15  
       
   232     toneNumbers.Reset();
       
   233     toneNumbers.InsertInOrderL( 15 );
       
   234     iCodec->FindContinuusIntegers( toneNumbers, pos );
       
   235     EUNIT_ASSERT( pos == 0 );
       
   236     EUNIT_ASSERT( toneNumbers.Count() == 1 );
       
   237 
       
   238     // 0-2,4,7-9,11,13-15
       
   239     toneNumbers.Reset();
       
   240     toneNumbers.InsertInOrderL( 0 );
       
   241     toneNumbers.InsertInOrderL( 1 );
       
   242     toneNumbers.InsertInOrderL( 2 );
       
   243     toneNumbers.InsertInOrderL( 4 );
       
   244     toneNumbers.InsertInOrderL( 7 );
       
   245     toneNumbers.InsertInOrderL( 8 );
       
   246     toneNumbers.InsertInOrderL( 9 );
       
   247     toneNumbers.InsertInOrderL( 11 );
       
   248     toneNumbers.InsertInOrderL( 13 );
       
   249     toneNumbers.InsertInOrderL( 14 );
       
   250     toneNumbers.InsertInOrderL( 15 );
       
   251     EUNIT_ASSERT( toneNumbers.Count() == 11 );
       
   252 
       
   253     iCodec->FindContinuusIntegers( toneNumbers, pos );
       
   254     EUNIT_ASSERT( pos == 2 );
       
   255     
       
   256     iCodec->FindContinuusIntegers( toneNumbers, ++pos );
       
   257     EUNIT_ASSERT( pos == 3 );
       
   258     
       
   259     iCodec->FindContinuusIntegers( toneNumbers, ++pos );
       
   260     EUNIT_ASSERT( pos == 6 );
       
   261     
       
   262     iCodec->FindContinuusIntegers( toneNumbers, ++pos );
       
   263     EUNIT_ASSERT( pos == 7 );
       
   264     
       
   265     iCodec->FindContinuusIntegers( toneNumbers, ++pos );
       
   266     EUNIT_ASSERT( pos == 10 );
       
   267 
       
   268     CleanupStack::PopAndDestroy();
       
   269     }
       
   270 
       
   271 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_CreateFmtpAttrListL()
       
   272     {
       
   273     RArray<TUint> toneNumbers;
       
   274     CleanupClosePushL( toneNumbers );
       
   275     
       
   276     toneNumbers.InsertInOrder( 2);
       
   277     toneNumbers.InsertInOrder( 3);
       
   278     toneNumbers.InsertInOrder( 4);
       
   279     toneNumbers.InsertInOrder( 5);
       
   280     
       
   281     toneNumbers.InsertInOrder( 7);
       
   282     toneNumbers.InsertInOrder( 9);
       
   283     toneNumbers.InsertInOrder( 10);
       
   284     
       
   285     toneNumbers.InsertInOrder( 12);
       
   286     toneNumbers.InsertInOrder( 13);
       
   287     toneNumbers.InsertInOrder( 14);
       
   288     toneNumbers.InsertInOrder( 15);
       
   289  
       
   290     iCodec->CreateFmtpAttrListL( toneNumbers );
       
   291     
       
   292     CleanupStack::PopAndDestroy();    
       
   293     }
       
   294 
       
   295 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_AddToneNumbersL()
       
   296     {
       
   297     
       
   298     // left side value is greater then right side value
       
   299     TBool ret = EFalse;
       
   300     iCodec->iBitrateMask = 0;
       
   301     EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->AddToneNumbersL( 15, 0 ), KErrArgument );
       
   302     EUNIT_ASSERT( !ret );
       
   303     EUNIT_ASSERT(iCodec->iBitrateMask == 0 ); 
       
   304     
       
   305 
       
   306     EUNIT_ASSERT( iCodec->AddToneNumbersL( 0, 15 ) ); 
       
   307     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumberALL );
       
   308  
       
   309     iCodec->iBitrateMask = 0;
       
   310     EUNIT_ASSERT( iCodec->AddToneNumbersL( 0, 20 ) ); 
       
   311     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumberALL );
       
   312     
       
   313     iCodec->iBitrateMask = 0;
       
   314     EUNIT_ASSERT( iCodec->AddToneNumbersL( 1, 14 ) ); 
       
   315     EUNIT_ASSERT( iCodec->iBitrateMask == 0x7FFE );
       
   316     
       
   317     iCodec->iBitrateMask = 0;
       
   318     EUNIT_ASSERT( iCodec->AddToneNumbersL( 2, 20 ) ); 
       
   319     EUNIT_ASSERT( iCodec->iBitrateMask == 0xFFFC );
       
   320     
       
   321     }
       
   322     
       
   323 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_ParserToneNumberL()
       
   324     {
       
   325        
       
   326     // length is zero
       
   327     TBool ret = EFalse;
       
   328     EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseToneNumberL( _L8("") ), KErrArgument );
       
   329     
       
   330     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseToneNumberL( _L8("10")));
       
   331     EUNIT_ASSERT( ret );
       
   332     EUNIT_ASSERT( iCodec->iBitrateMask &  KMccAllowedDtmfNumber10 );
       
   333     
       
   334     iCodec->iBitrateMask = 0;
       
   335     ret = EFalse;    
       
   336     EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseToneNumberL( _L8("-3")), KErrGeneral );
       
   337     EUNIT_ASSERT( !ret );
       
   338     EUNIT_ASSERT( !iCodec->iBitrateMask );
       
   339 
       
   340     iCodec->iBitrateMask = 0;
       
   341     ret = EFalse;    
       
   342     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseToneNumberL( _L8("11")));
       
   343     EUNIT_ASSERT( ret );
       
   344     EUNIT_ASSERT( iCodec->iBitrateMask &  KMccAllowedDtmfNumber11 );
       
   345 
       
   346     }
       
   347 
       
   348 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_ParserToneNumbersL()
       
   349     {
       
   350     // length is zero
       
   351     TBool ret = EFalse;
       
   352     EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseToneNumbersL( _L8(""), _L8("10") ), KErrArgument );
       
   353     EUNIT_ASSERT( !ret );
       
   354     
       
   355     iCodec->iBitrateMask = 0;
       
   356     ret = EFalse;
       
   357     EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseToneNumbersL( _L8("10"), _L8("") ), KErrArgument );
       
   358     EUNIT_ASSERT( !ret );
       
   359     
       
   360     iCodec->iBitrateMask = 0;
       
   361     ret = EFalse;
       
   362     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseToneNumbersL( _L8("0"), _L8("20")));
       
   363     EUNIT_ASSERT( ret );
       
   364     EUNIT_ASSERT( iCodec->iBitrateMask &  KMccAllowedDtmfNumberALL );
       
   365 
       
   366     iCodec->iBitrateMask = 0;
       
   367     ret = EFalse;
       
   368     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseToneNumbersL( _L8("0"), _L8("10")));
       
   369     EUNIT_ASSERT( ret );
       
   370     EUNIT_ASSERT( iCodec->iBitrateMask & 0x7FE );
       
   371     
       
   372     }
       
   373 
       
   374 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_ParseTokenL()
       
   375     {
       
   376     // length is zero
       
   377     TBool ret = EFalse;
       
   378     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseTokenL( _L8("") ), KErrArgument );
       
   379     EUNIT_ASSERT( !ret );
       
   380     
       
   381     // contains non digit
       
   382     ret = EFalse;
       
   383     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseTokenL( _L8("2.3") ), KErrArgument );
       
   384     EUNIT_ASSERT( !ret );
       
   385     
       
   386     // contains -60, 70-
       
   387     ret = EFalse;
       
   388     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseTokenL( _L8("-60") ), KErrArgument );
       
   389     EUNIT_ASSERT( !ret );
       
   390     
       
   391     // contains -60, 70-
       
   392     ret = EFalse;
       
   393     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->ParseTokenL( _L8("70-") ), KErrArgument );
       
   394     EUNIT_ASSERT( !ret );
       
   395     
       
   396     // contains events=0-15
       
   397     ret = EFalse;
       
   398     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseTokenL( _L8("events=0-15") ) );
       
   399     EUNIT_ASSERT( ret );
       
   400     
       
   401     iCodec->iBitrateMask = 0;
       
   402     ret = EFalse;
       
   403     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseTokenL( _L8("11-15") ));
       
   404     EUNIT_ASSERT( ret );
       
   405     EUNIT_ASSERT( iCodec->iBitrateMask & 0x7C00 );
       
   406     
       
   407     iCodec->iBitrateMask = 0;
       
   408     ret = EFalse;
       
   409     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->ParseTokenL( _L8("9") ));
       
   410     EUNIT_ASSERT( ret );
       
   411     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumber9 );
       
   412 
       
   413     }
       
   414 
       
   415 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_AddTokenL()
       
   416     {
       
   417     
       
   418     CPtrC8Array* tokens = new (ELeave) CPtrC8Array(1);  
       
   419     CleanupStack::PushL( tokens ); 
       
   420     
       
   421     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iCodec->AddTokenL( *tokens, _L8("0-15,60,70"), -1, 3 ), KErrArgument );
       
   422     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iCodec->AddTokenL( *tokens, _L8("0-15,60,70"), 0, -1 ), KErrArgument );
       
   423     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( iCodec->AddTokenL( *tokens, _L8("0-15,60,70"), 3, 1 ), KErrArgument );
       
   424     EUNIT_ASSERT( tokens->MdcaCount() == 0);
       
   425     
       
   426     iCodec->AddTokenL( *tokens, _L8("0-15,60,3,70"), 0, 3 );
       
   427     EUNIT_ASSERT( tokens->MdcaCount() == 1);
       
   428     EUNIT_ASSERT( tokens->MdcaPoint(0) == _L8("0-15"));
       
   429 
       
   430 
       
   431     EUNIT_ASSERT_NO_LEAVE( iCodec->AddTokenL( *tokens, _L8("0-15,60,3,70"), 5, 6 ));
       
   432     EUNIT_ASSERT( tokens->MdcaCount() == 2);
       
   433     EUNIT_ASSERT( tokens->MdcaPoint(1) == _L8("60"));
       
   434 
       
   435     
       
   436     iCodec->AddTokenL( *tokens, _L8("0-15,60,3,70"), 8, 8 );
       
   437     EUNIT_ASSERT( tokens->MdcaCount() == 3);
       
   438     EUNIT_ASSERT( tokens->MdcaPoint(2) == _L8("3"));
       
   439 
       
   440     
       
   441     EUNIT_ASSERT_NO_LEAVE( iCodec->AddTokenL( *tokens, _L8("0-15,60,3,70"), 10, 11 ));
       
   442     EUNIT_ASSERT( tokens->MdcaCount() == 4);
       
   443     EUNIT_ASSERT( tokens->MdcaPoint(3) == _L8("70"));
       
   444 
       
   445     CleanupStack::PopAndDestroy( tokens );
       
   446     }
       
   447 
       
   448 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_TokenizeL()
       
   449     {
       
   450     CPtrC8Array* tokens = NULL ;
       
   451     
       
   452     // value lenth is 0
       
   453     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( tokens = iCodec->TokenizeL( _L8(""), ','), KErrArgument );
       
   454     EUNIT_ASSERT( !tokens );
       
   455    
       
   456     // seperator is not ','
       
   457     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( tokens = iCodec->TokenizeL( _L8("0-15,60,3,70"), ';'), KErrArgument );
       
   458     EUNIT_ASSERT( !tokens );
       
   459 
       
   460     tokens = iCodec->TokenizeL( _L8("0-15,60,3,70"), ',');
       
   461     CleanupStack::PushL( tokens );
       
   462     EUNIT_ASSERT( tokens );
       
   463     EUNIT_ASSERT( tokens->MdcaCount() == 4 );
       
   464     CleanupStack::PopAndDestroy( tokens );
       
   465     tokens = NULL;
       
   466 
       
   467     // TokenizeLC does not care about the parsing
       
   468     tokens = iCodec->TokenizeL( _L8("-15,60,-3,4-,70"), ',');
       
   469     CleanupStack::PushL( tokens );
       
   470     EUNIT_ASSERT( tokens );
       
   471     EUNIT_ASSERT( tokens->MdcaCount() == 5 );
       
   472 
       
   473     CleanupStack::PopAndDestroy( tokens );
       
   474     
       
   475     }
       
   476 
       
   477 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_EncodeTokensL()
       
   478     {
       
   479     CPtrC8Array* firsttokens = NULL;
       
   480     TBool ret = EFalse;
       
   481     iCodec->iBitrateMask = 0;
       
   482     firsttokens = iCodec->TokenizeL( _L8("0-15,60,3,70"), ',');
       
   483     CleanupStack::PushL( firsttokens );
       
   484     EUNIT_ASSERT( firsttokens );
       
   485     EUNIT_ASSERT( firsttokens->MdcaCount() == 4 );
       
   486     EUNIT_ASSERT( iCodec->iBitrateMask == 0 );
       
   487     EUNIT_ASSERT_NO_LEAVE( ret = iCodec->EncodeTokensL(*firsttokens) );
       
   488     EUNIT_ASSERT( ret );
       
   489     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumberALL );
       
   490     iCodec->iBitrateMask = 0;
       
   491 
       
   492     CleanupStack::PopAndDestroy( firsttokens );
       
   493     firsttokens = NULL;
       
   494 
       
   495     // TokenizeLC does not care about the parsing
       
   496     ret = EFalse;
       
   497     CPtrC8Array* sectokens = NULL ;
       
   498     sectokens = iCodec->TokenizeL( _L8("-15,60,-3,4-,70"), ',');
       
   499     CleanupStack::PushL( sectokens );
       
   500 
       
   501     EUNIT_ASSERT( sectokens );
       
   502     EUNIT_ASSERT( sectokens->MdcaCount() == 5 );
       
   503     EUNIT_ASSERT( iCodec->iBitrateMask == 0 );
       
   504     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( ret = iCodec->EncodeTokensL(*sectokens), KErrArgument );
       
   505     EUNIT_ASSERT( iCodec->iBitrateMask == 0 );
       
   506     EUNIT_ASSERT( !ret );
       
   507     
       
   508     CleanupStack::PopAndDestroy( sectokens );
       
   509     }
       
   510 
       
   511 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_ParseFmtpAttrL()
       
   512     {
       
   513     TBool retValue = EFalse;
       
   514 	TBool err( KErrNone );
       
   515 	
       
   516     retValue = iCodec->ParseFmtpAttrL(_L8("0-15,60,70")); 
       
   517     EUNIT_ASSERT( retValue );
       
   518     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumberALL );
       
   519     iCodec->iBitrateMask = 0;
       
   520     
       
   521     retValue = EFalse;
       
   522     retValue = iCodec->ParseFmtpAttrL(_L8("1-14,60,70")); 
       
   523     EUNIT_ASSERT( retValue );
       
   524     EUNIT_ASSERT( iCodec->iBitrateMask & 0x7FFE ); 
       
   525     iCodec->iBitrateMask = 0;
       
   526 
       
   527     retValue = EFalse;
       
   528     retValue = iCodec->ParseFmtpAttrL(_L8("70,60,0-15,80")); 
       
   529     EUNIT_ASSERT( retValue );
       
   530     EUNIT_ASSERT( iCodec->iBitrateMask & KMccAllowedDtmfNumberALL );
       
   531     iCodec->iBitrateMask = 0;
       
   532     
       
   533     retValue = EFalse;
       
   534     retValue = iCodec->ParseFmtpAttrL(_L8("70,60,80")); 
       
   535     EUNIT_ASSERT( !retValue );
       
   536     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   537     iCodec->iBitrateMask = 0;
       
   538 
       
   539     retValue = EFalse;
       
   540     retValue = iCodec->ParseFmtpAttrL(_L8("70,60,1,2,3,4,80")); 
       
   541     EUNIT_ASSERT( retValue );
       
   542     EUNIT_ASSERT(iCodec->iBitrateMask == 0x001E ); 
       
   543     iCodec->iBitrateMask = 0;
       
   544 
       
   545     // space in the beginning and end is not allowed
       
   546     retValue = EFalse;
       
   547 	MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8(" 70,60,80,0-15 ")), KErrArgument); 
       
   548     EUNIT_ASSERT( !retValue );
       
   549     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   550     iCodec->iBitrateMask = 0;
       
   551     
       
   552  
       
   553     // -60 could not be parse
       
   554     retValue = EFalse;
       
   555     err = KErrNone;
       
   556     TRAP( err, retValue = iCodec->ParseFmtpAttrL(_L8("70,-60,1,2,3,4,80")) );
       
   557     EUNIT_ASSERT( err );
       
   558     EUNIT_ASSERT( !retValue );
       
   559     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   560     iCodec->iBitrateMask = 0;
       
   561    
       
   562     // 1- can not be parsed
       
   563     retValue = EFalse;
       
   564     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8("70,60,1-,2,3,4,80")), KErrArgument); 
       
   565     EUNIT_ASSERT( !retValue );
       
   566     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   567     iCodec->iBitrateMask = 0;
       
   568     
       
   569     // space between numbers can not be parsed
       
   570     retValue = EFalse;
       
   571     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8("70,60,1-4 ,80")), KErrArgument); 
       
   572     EUNIT_ASSERT( !retValue );
       
   573     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   574     iCodec->iBitrateMask = 0;
       
   575     
       
   576     
       
   577     // two comma together can not be parsed ",,"
       
   578     retValue = EFalse;
       
   579     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8("70,60,,80")), KErrArgument); 
       
   580     EUNIT_ASSERT( !retValue );
       
   581     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   582     iCodec->iBitrateMask = 0;
       
   583     
       
   584     // comma in the begining can not be parsed
       
   585     retValue = EFalse;
       
   586     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8(",70")), KErrArgument); 
       
   587     EUNIT_ASSERT( !retValue );
       
   588     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   589     iCodec->iBitrateMask = 0;
       
   590     
       
   591     
       
   592     // comma in the begining can not be parsed
       
   593     retValue = EFalse;
       
   594     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8(",0-15")), KErrArgument); 
       
   595     EUNIT_ASSERT( !retValue );
       
   596     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   597     iCodec->iBitrateMask = 0;
       
   598     
       
   599     // comma in the end can not be parsed
       
   600     retValue = EFalse;
       
   601     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8("70,")), KErrArgument); 
       
   602     EUNIT_ASSERT( !retValue );
       
   603     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   604     iCodec->iBitrateMask = 0;
       
   605     
       
   606     // comma in the end can not be parsed
       
   607     retValue = EFalse;
       
   608     MCC_EUNIT_ASSERT_SPECIFIC_LEAVE( retValue = iCodec->ParseFmtpAttrL(_L8("0-15,")), KErrArgument); 
       
   609     EUNIT_ASSERT( !retValue );
       
   610     EUNIT_ASSERT( iCodec->iBitrateMask == 0 ); 
       
   611     iCodec->iBitrateMask = 0;
       
   612    
       
   613     }
       
   614 
       
   615 void UT_CMccCodecDTMF::UT_CMccCodecDTMF_GetFmtpL()
       
   616     {
       
   617     HBufC8* fmtp = HBufC8::NewLC( 50 );
       
   618     TPtr8 fmtpPtr = fmtp->Des();
       
   619     
       
   620     // default case
       
   621     fmtpPtr = iCodec->GetFmtpL(); 
       
   622     TLex8 fmtpPtrLex( fmtpPtr.PtrZ() );
       
   623     EUNIT_ASSERT( fmtpPtrLex.Get() == '0' );
       
   624     EUNIT_ASSERT( fmtpPtrLex.Get() == '-' );
       
   625     EUNIT_ASSERT( fmtpPtrLex.Get() == '1' );
       
   626     EUNIT_ASSERT( fmtpPtrLex.Get() == '5' );
       
   627     EUNIT_ASSERT( !fmtpPtrLex.Get() );  
       
   628     
       
   629     iCodec->iBitrateMask = 0;
       
   630     iCodec->iBitrateMask |= KMccAllowedDtmfNumber0;
       
   631     iCodec->iBitrateMask |= KMccAllowedDtmfNumber1;
       
   632     iCodec->iBitrateMask |= KMccAllowedDtmfNumber2;
       
   633     iCodec->iBitrateMask |= KMccAllowedDtmfNumber3;
       
   634     iCodec->iBitrateMask |= KMccAllowedDtmfNumber4;
       
   635     iCodec->iBitrateMask |= KMccAllowedDtmfNumber5;
       
   636     fmtpPtr = iCodec->GetFmtpL(); 
       
   637     fmtpPtrLex = fmtpPtr.PtrZ();
       
   638     EUNIT_ASSERT( fmtpPtrLex.Get() == '0' );
       
   639     EUNIT_ASSERT( fmtpPtrLex.Get() == '-' );
       
   640     EUNIT_ASSERT( fmtpPtrLex.Get() == '5' );
       
   641     EUNIT_ASSERT( !fmtpPtrLex.Get() );
       
   642     
       
   643     iCodec->iBitrateMask = 0;
       
   644     iCodec->iBitrateMask |= KMccAllowedDtmfNumber10;
       
   645     fmtpPtr = iCodec->GetFmtpL(); 
       
   646     fmtpPtrLex = fmtpPtr.PtrZ();
       
   647     EUNIT_ASSERT( fmtpPtrLex.Get() == '1' );
       
   648     EUNIT_ASSERT( fmtpPtrLex.Get() == '0' );
       
   649     EUNIT_ASSERT( !fmtpPtrLex.Get() );
       
   650 
       
   651     iCodec->iBitrateMask = 0;
       
   652     iCodec->iBitrateMask |= KMccAllowedDtmfNumber11;
       
   653     iCodec->iBitrateMask |= KMccAllowedDtmfNumber12;
       
   654     iCodec->iBitrateMask |= KMccAllowedDtmfNumber13;
       
   655     iCodec->iBitrateMask |= KMccAllowedDtmfNumber14;
       
   656     iCodec->iBitrateMask |= KMccAllowedDtmfNumber15;
       
   657     fmtpPtr = iCodec->GetFmtpL(); 
       
   658     fmtpPtrLex = fmtpPtr.PtrZ();
       
   659     EUNIT_ASSERT( fmtpPtrLex.Get() == '1' );
       
   660     EUNIT_ASSERT( fmtpPtrLex.Get() == '1' );
       
   661     EUNIT_ASSERT( fmtpPtrLex.Get() == '-' );
       
   662     EUNIT_ASSERT( fmtpPtrLex.Get() == '1' );
       
   663     EUNIT_ASSERT( fmtpPtrLex.Get() == '5' );
       
   664     EUNIT_ASSERT( !fmtpPtrLex.Get() );
       
   665     
       
   666     CleanupStack::PopAndDestroy( fmtp );
       
   667     }
       
   668 
       
   669 //  TEST TABLE
       
   670 
       
   671 EUNIT_BEGIN_TEST_TABLE(
       
   672     UT_CMccCodecDTMF,
       
   673     "CMccCodecDTMF test",
       
   674     "UNIT" )
       
   675 
       
   676 EUNIT_TEST(
       
   677     "RequireSignalling - test ",
       
   678     "CMccCodecDTMF",
       
   679     "RequireSignalling",
       
   680     "FUNCTIONALITY",
       
   681     SetupL, UT_CMccCodecDTMF_RequireSignallingL, Teardown)
       
   682 
       
   683 EUNIT_TEST(
       
   684     "CloneDefaultsL - test ",
       
   685     "CMccCodecDTMF",
       
   686     "CloneDefaultsL",
       
   687     "FUNCTIONALITY",
       
   688     SetupL, UT_CMccCodecDTMF_CloneDefaultsLL, Teardown)
       
   689 
       
   690 EUNIT_TEST(
       
   691     "CloneDetailedL - test ",
       
   692     "CMccCodecDTMF",
       
   693     "CloneDetailedL",
       
   694     "FUNCTIONALITY",
       
   695     SetupL, UT_CMccCodecDTMF_CloneDetailedLL, Teardown)
       
   696 
       
   697 EUNIT_TEST(
       
   698     "EnableVAD - test ",
       
   699     "CMccCodecDTMF",
       
   700     "EnableVAD",
       
   701     "FUNCTIONALITY",
       
   702     SetupL, UT_CMccCodecDTMF_EnableVADL, Teardown)
       
   703 
       
   704 
       
   705 EUNIT_TEST(
       
   706     "SetBitrate - test ",
       
   707     "CMccCodecDTMF",
       
   708     "SetBitrate",
       
   709     "FUNCTIONALITY",
       
   710     SetupL, UT_CMccCodecDTMF_SetBitrateL, Teardown)
       
   711 
       
   712 EUNIT_TEST(
       
   713     "SetSamplingFreq - test ",
       
   714     "CMccCodecDTMF",
       
   715     "SetSamplingFreq",
       
   716     "FUNCTIONALITY",
       
   717     SetupL, UT_CMccCodecDTMF_SetSamplingFreqL, Teardown)
       
   718 
       
   719 EUNIT_TEST(
       
   720     "SetPTime - test ",
       
   721     "CMccCodecDTMF",
       
   722     "SetPTime",
       
   723     "FUNCTIONALITY",
       
   724     SetupL, UT_CMccCodecDTMF_SetPTimeL, Teardown)
       
   725 
       
   726 EUNIT_TEST(
       
   727     "SetMaxPTime - test ",
       
   728     "CMccCodecDTMF",
       
   729     "SetMaxPTime",
       
   730     "FUNCTIONALITY",
       
   731     SetupL, UT_CMccCodecDTMF_SetMaxPTimeL, Teardown)
       
   732 
       
   733 EUNIT_TEST(
       
   734     "SetSdpName - test ",
       
   735     "CMccCodecDTMF",
       
   736     "SetSdpName",
       
   737     "FUNCTIONALITY",
       
   738     SetupL, UT_CMccCodecDTMF_SetSdpNameL, Teardown)
       
   739 
       
   740 EUNIT_TEST(
       
   741     "SetPayloadType - test ",
       
   742     "CMccCodecDTMF",
       
   743     "SetPayloadType",
       
   744     "FUNCTIONALITY",
       
   745     SetupL, UT_CMccCodecDTMF_SetPayloadTypeL, Teardown)
       
   746 
       
   747 EUNIT_TEST(
       
   748     "SetCodecMode - test ",
       
   749     "CMccCodecDTMF",
       
   750     "SetCodecMode",
       
   751     "FUNCTIONALITY",
       
   752     SetupL, UT_CMccCodecDTMF_SetCodecModeL, Teardown)
       
   753 
       
   754 EUNIT_TEST(
       
   755     "AddAllowedBit - test ",
       
   756     "CMccCodecDTMF",
       
   757     "AddAllowedBit",
       
   758     "FUNCTIONALITY",
       
   759     SetupL, UT_CMccCodecDTMF_AddAllowedBit, Teardown)
       
   760     
       
   761 EUNIT_TEST(
       
   762     "GetAllowedToneNumbersArray - test ",
       
   763     "CMccCodecDTMF",
       
   764     "GetAllowedToneNumbersArray",
       
   765     "FUNCTIONALITY",
       
   766     SetupL, UT_CMccCodecDTMF_GetAllowedToneNumbersArray, Teardown)
       
   767     
       
   768 EUNIT_TEST(
       
   769     "FindContinuusIntegers - test ",
       
   770     "CMccCodecDTMF",
       
   771     "FindContinuusIntegers",
       
   772     "FUNCTIONALITY",
       
   773     SetupL, UT_CMccCodecDTMF_FindContinuusIntegers, Teardown)
       
   774 
       
   775 EUNIT_TEST(
       
   776     "CreateFmtpAttrListL - test ",
       
   777     "CMccCodecDTMF",
       
   778     "CreateFmtpAttrListL",
       
   779     "FUNCTIONALITY",
       
   780     SetupL, UT_CMccCodecDTMF_CreateFmtpAttrListL, Teardown)
       
   781 
       
   782 EUNIT_TEST(
       
   783     "AddToneNumbersL - test ",
       
   784     "CMccCodecDTMF",
       
   785     "AddToneNumbersL",
       
   786     "FUNCTIONALITY",
       
   787     SetupL, UT_CMccCodecDTMF_AddToneNumbersL, Teardown)
       
   788 
       
   789   
       
   790 EUNIT_TEST(
       
   791     "ParserToneNumberL - test ",
       
   792     "CMccCodecDTMF",
       
   793     "ParserToneNumberL",
       
   794     "FUNCTIONALITY",
       
   795     SetupL, UT_CMccCodecDTMF_ParserToneNumberL, Teardown)
       
   796 
       
   797          
       
   798 EUNIT_TEST(
       
   799     "ParserToneNumbersL - test ",
       
   800     "CMccCodecDTMF",
       
   801     "ParserToneNumbersL",
       
   802     "FUNCTIONALITY",
       
   803     SetupL, UT_CMccCodecDTMF_ParserToneNumbersL, Teardown)
       
   804 
       
   805          
       
   806 EUNIT_TEST(
       
   807     "ParseTokenL - test ",
       
   808     "CMccCodecDTMF",
       
   809     "ParseTokenL",
       
   810     "FUNCTIONALITY",
       
   811     SetupL, UT_CMccCodecDTMF_ParseTokenL, Teardown)
       
   812 
       
   813          
       
   814 EUNIT_TEST(
       
   815     "AddTokenL - test ",
       
   816     "CMccCodecDTMF",
       
   817     "AddTokenL",
       
   818     "FUNCTIONALITY",
       
   819     SetupL, UT_CMccCodecDTMF_AddTokenL, Teardown)
       
   820 
       
   821          
       
   822 EUNIT_TEST(
       
   823     "TokenizeL - test ",
       
   824     "CMccCodecDTMF",
       
   825     "TokenizeL",
       
   826     "FUNCTIONALITY",
       
   827     SetupL, UT_CMccCodecDTMF_TokenizeL, Teardown)
       
   828 
       
   829   
       
   830 EUNIT_TEST(
       
   831     "EncodeTokensL - test ",
       
   832     "CMccCodecDTMF",
       
   833     "EncodeTokensL",
       
   834     "FUNCTIONALITY",
       
   835     SetupL, UT_CMccCodecDTMF_EncodeTokensL, Teardown)
       
   836 
       
   837        
       
   838 EUNIT_TEST(
       
   839     "ParseFmtpAttrL - test ",
       
   840     "CMccCodecDTMF",
       
   841     "ParseFmtpAttrL",
       
   842     "FUNCTIONALITY",
       
   843     SetupL, UT_CMccCodecDTMF_ParseFmtpAttrL, Teardown)
       
   844 
       
   845 EUNIT_TEST(
       
   846     "GetFmtpL - test ",
       
   847     "CMccCodecDTMF",
       
   848     "GetFmtpL",
       
   849     "FUNCTIONALITY",
       
   850     SetupL, UT_CMccCodecDTMF_GetFmtpL, Teardown)
       
   851 
       
   852 
       
   853 
       
   854       
       
   855 EUNIT_END_TEST_TABLE
       
   856 
       
   857 //  END OF FILE