--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/tsrc/ut_mediamanager/src/UT_cmcesdpcodec.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,445 @@
+/*
+* Copyright (c) 2006 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_cmcesdpcodec.h"
+
+// EXTERNAL INCLUDES
+#include <digia/eunit/EUnitMacros.h>
+#include "mcemediamanager.h"
+
+#define RESET()\
+ iServer->Reset()
+
+#include <sdpcodecstringpool.h>
+#include <sdpcodecstringconstants.h>
+#include <sdpmediafield.h>
+#include <sdpfmtattributefield.h>
+#include <sdprtpmapvalue.h>
+#include <sdpattributefield.h>
+#include "mceaudiosdpcodec.h"
+#include "mcevideosdpcodec.h"
+#include "cleanupresetanddestroy.h"
+#include "mmcccodecinformation.h"
+
+
+// INTERNAL INCLUDES
+
+// CONSTRUCTION
+UT_CMceSdpCodec* UT_CMceSdpCodec::NewL()
+ {
+ UT_CMceSdpCodec* self = UT_CMceSdpCodec::NewLC();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+UT_CMceSdpCodec* UT_CMceSdpCodec::NewLC()
+ {
+ UT_CMceSdpCodec* self = new( ELeave ) UT_CMceSdpCodec();
+ CleanupStack::PushL( self );
+
+ self->ConstructL();
+
+ return self;
+ }
+
+// Destructor (virtual by CBase)
+UT_CMceSdpCodec::~UT_CMceSdpCodec()
+ {
+ }
+
+// Default constructor
+UT_CMceSdpCodec::UT_CMceSdpCodec()
+ {
+ }
+
+// Second phase construct
+void UT_CMceSdpCodec::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// METHODS
+
+
+void UT_CMceSdpCodec::SetupL()
+ {
+ iServer = new (ELeave) CMceServerStub();
+ iManager = CMceMediaManager::NewL( *iServer );
+ iSession = MceMediaManagerTestHelper::CreateMultimediaOutSessionL();
+ iSdpCodec = CMceAudioSdpCodec::NewL();
+
+ }
+
+void UT_CMceSdpCodec::Teardown()
+ {
+ CMceComSession::Delete( iSession, *iManager );
+ delete iManager;
+ iManager = NULL;
+ delete iServer;
+ iServer = NULL;
+ delete iSdpCodec;
+ iSdpCodec = NULL;
+ }
+
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_MediaL()
+ {
+ RStringF audio = MCE_SDP_STRING_AUDIOL();
+ EUNIT_ASSERT( iSdpCodec->iMedia == audio );
+
+ RStringF media = iSdpCodec->Media();
+
+ EUNIT_ASSERT( media == audio );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_DecodesL()
+ {
+ RStringF video = MCE_SDP_STRING_VIDEOL();
+ RStringF audio = MCE_SDP_STRING_AUDIOL();
+ RStringF protocol = SDP_STRINGL( SdpCodecStringConstants::EProtocolRtpAvp );
+
+ CSdpMediaField* audioLine =
+ CSdpMediaField::NewLC( audio, 5005, protocol, _L8("0") );
+
+ CSdpMediaField* videoLine =
+ CSdpMediaField::NewLC( video, 5005, protocol, _L8("0") );
+
+ EUNIT_ASSERT( iSdpCodec->Decodes( *audioLine ) );
+ EUNIT_ASSERT( !iSdpCodec->Decodes( *videoLine ) );
+
+ CleanupStack::PopAndDestroy( videoLine );
+ CleanupStack::PopAndDestroy( audioLine );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_AddCapabilityLL()
+ {
+
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 0 );
+
+ iSdpCodec->AddCapabilityL( KMceSDPNameAMR );
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 1 );
+ iSdpCodec->AddCapabilityL( KMceSDPNamePCMU );
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 2 );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_IsSupportedL()
+ {
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 0 );
+ EUNIT_ASSERT( !iSdpCodec->IsSupported( KMceSDPNameAMR ) );
+
+ iSdpCodec->AddCapabilityL( KMceSDPNameAMR );
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 1 );
+ iSdpCodec->AddCapabilityL( KMceSDPNamePCMU );
+ EUNIT_ASSERT( iSdpCodec->iCapabilities->Count() == 2 );
+
+ EUNIT_ASSERT( iSdpCodec->IsSupported( KMceSDPNameAMR ) );
+ EUNIT_ASSERT( iSdpCodec->IsSupported( KMceSDPNamePCMU ) );
+ EUNIT_ASSERT( !iSdpCodec->IsSupported( KMceSDPNamePCMA ) );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_PrepareForEncodeLL()
+ {
+ RStringF audio = MCE_SDP_STRING_AUDIOL();
+ RStringF protocol = SDP_STRINGL( SdpCodecStringConstants::EProtocolRtpAvp );
+
+ CSdpMediaField* audioLine =
+ CSdpMediaField::NewLC( audio, 5005, protocol, _L8("0") );
+
+ RStringF rtpmapStr = SDP_STRINGL( SdpCodecStringConstants::EAttributeRtpmap );
+ MCE_DEFINE_DECSTR( payload, 96 );
+
+ TSdpRtpmapValue rtpmapValue = TSdpRtpmapValue::DecodeL( _L8("AMR/8000") );
+ HBufC8* rtpmapBuf = rtpmapValue.EncodeL();
+ CleanupStack::PushL( rtpmapBuf );
+ CSdpFmtAttributeField* rtpmapAttribute =
+ CSdpFmtAttributeField::NewL( rtpmapStr, payload, *rtpmapBuf );
+ CleanupStack::PopAndDestroy( rtpmapBuf );
+ CleanupStack::PushL( rtpmapAttribute );
+
+ audioLine->FormatAttributeFields().AppendL( rtpmapAttribute );
+ CleanupStack::Pop( rtpmapAttribute );
+
+ EUNIT_ASSERT( audioLine->FormatAttributeFields().Count() == 1 );
+
+ iSdpCodec->PrepareForEncodeL( *iSession->Streams()[0], *audioLine );
+
+ EUNIT_ASSERT( audioLine->FormatAttributeFields().Count() == 0 );
+
+ RStringF empty = SdpCodecStringPool::StringPoolL().OpenFStringL( KNullDesC8 );
+ CleanupClosePushL( empty );
+
+ audioLine->SetMediaL( empty );
+ EUNIT_ASSERT_LEAVE( iSdpCodec->PrepareForEncodeL( *iSession->Streams()[0], *audioLine ) );
+
+ CleanupStack::PopAndDestroy(); //empty
+ CleanupStack::PopAndDestroy( audioLine );
+ }
+
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_EncodeRtpMapFieldsLL()
+ {
+ CSdpFmtAttributeField* rtpmap = NULL;
+
+ rtpmap = iSdpCodec->EncodeRtpMapFieldsL( 96, _L8("AMR"), 8000, KNullDesC8 );
+ EUNIT_ASSERT( rtpmap );
+ EUNIT_ASSERT( rtpmap->Value() == _L8("AMR/8000") );
+
+ CleanupStack::PushL( rtpmap );
+
+ CleanupStack::PopAndDestroy( rtpmap );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_DirectionL()
+ {
+
+ _LIT8( KAttrValue, "120");
+
+ RStringF audio = MCE_SDP_STRING_AUDIOL();
+ RStringF protocol = SDP_STRINGL( SdpCodecStringConstants::EProtocolRtpAvp );
+ CSdpAttributeField* direction = NULL;
+ RPointerArray<CSdpAttributeField> sessionAttributes;
+ MceCleanupResetAndDestroyPushL( sessionAttributes );
+
+ CSdpMediaField* audioLine =
+ CSdpMediaField::NewLC( audio, 5005, protocol, _L8("0") );
+
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == KErrNotFound );
+
+ for( TInt i = 0; i < 10; i++ )
+ {
+
+ if ( i == 0 || i == 5 )
+ {
+ direction = CSdpAttributeField::NewLC( SDP_STRINGL( SdpCodecStringConstants::EAttributeSendonly ), KNullDesC8 );
+ }
+ else if ( i == 1 || i == 6 )
+ {
+ direction = CSdpAttributeField::NewLC( SDP_STRINGL( SdpCodecStringConstants::EAttributeRecvonly ), KNullDesC8 );
+ }
+ else if ( i == 2 || i == 7 )
+ {
+ direction = CSdpAttributeField::NewLC( SDP_STRINGL( SdpCodecStringConstants::EAttributeInactive ), KNullDesC8 );
+ }
+ else if ( i == 3 || i == 8 )
+ {
+ direction = CSdpAttributeField::NewLC( SDP_STRINGL( SdpCodecStringConstants::EAttributeSendrecv ), KNullDesC8 );
+ }
+ else if ( i == 4 || i == 9 )
+ {
+ //wrong
+ direction = CSdpAttributeField::NewLC( SDP_STRINGL( SdpCodecStringConstants::EAttributePtime ), KAttrValue );
+ }
+
+ if ( i < 5 )
+ {
+ audioLine->AttributeFields().AppendL( direction );
+ CleanupStack::Pop( direction );
+ }
+ else
+ {
+ sessionAttributes.AppendL( direction );
+ CleanupStack::Pop( direction );
+ }
+
+ if ( i == 0 || i == 5 )
+ {
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == SdpCodecStringConstants::EAttributeSendonly );
+ }
+ else if ( i == 1 || i == 6 )
+ {
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == SdpCodecStringConstants::EAttributeRecvonly );
+ }
+ else if ( i == 2 || i == 7 )
+ {
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == SdpCodecStringConstants::EAttributeInactive );
+ }
+ else if ( i == 3 || i == 8 )
+ {
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == SdpCodecStringConstants::EAttributeSendrecv );
+ }
+ else if ( i == 4 || i == 9 )
+ {
+ EUNIT_ASSERT( iSdpCodec->Direction( *audioLine, sessionAttributes ) == KErrNotFound );
+ }
+
+ audioLine->AttributeFields().ResetAndDestroy();
+ sessionAttributes.ResetAndDestroy();
+
+ }
+
+ CleanupStack::PopAndDestroy( audioLine );
+ CleanupStack::PopAndDestroy();//sessionAttributes
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_ConvertDesToUintLL()
+ {
+ EUNIT_ASSERT( CMceSdpCodec::ConvertDesToUintL( _L8("10") ) == 10 );
+ EUNIT_ASSERT_LEAVE( CMceSdpCodec::ConvertDesToUintL( _L8("Yada, Yada") ) );
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_ConvertDesToIntLL()
+ {
+ EUNIT_ASSERT( CMceSdpCodec::ConvertDesToIntL( _L8("10") ) == 10 );
+ EUNIT_ASSERT_LEAVE( CMceSdpCodec::ConvertDesToIntL( _L8("Yada, Yada") ) );
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_ConvertTRealToDesLCL()
+ {
+ TReal real = 10.2304;
+ HBufC8* realDes = NULL;
+ realDes = CMceSdpCodec::ConvertTRealToDesLC( real );
+ EUNIT_ASSERT( *realDes == _L8("10.2304") );
+ CleanupStack::PopAndDestroy( realDes );
+
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_ConvertDesToRealLL()
+ {
+ EUNIT_ASSERT( CMceSdpCodec::ConvertDesToRealL( _L8("10.2304") ) == 10.2304 );
+ EUNIT_ASSERT_LEAVE( CMceSdpCodec::ConvertDesToRealL( _L8("Yada, Yada") ) );
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_IsPayloadTypeSupportedL()
+ {
+ EUNIT_ASSERT(iSdpCodec->IsPayloadTypeSupported(KMceSDPNameAMR, KDefaultAmrNbPT)==EFalse);
+ iSdpCodec->AddCapabilityL(KMceSDPNameAMR);
+ iSdpCodec->AddCapabilityPayloadTypeL(KDefaultAmrNbPT);
+ EUNIT_ASSERT(iSdpCodec->IsPayloadTypeSupported(KMceSDPNameAMR, KDefaultAmrNbPT)==ETrue);
+ }
+
+void UT_CMceSdpCodec::UT_CMceSdpCodec_AddCapabilityPayloadTypeLL()
+ {
+ iSdpCodec->AddCapabilityPayloadTypeL(KDefaultAmrNbPT);
+ EUNIT_ASSERT(iSdpCodec->iCapabilitiesPT.Count() > 0 );
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMceSdpCodec,
+ "CMceSdpCodec tests",
+ "UNIT" )
+
+EUNIT_TEST (
+ "Media test",
+ "CMceSdpCodec",
+ "Media",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_MediaL, Teardown)
+
+EUNIT_TEST (
+ "Decodes test",
+ "CMceSdpCodec",
+ "Decodes",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_DecodesL, Teardown)
+
+EUNIT_TEST (
+ "AddCapabilityL test",
+ "CMceSdpCodec",
+ "AddCapabilityL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_AddCapabilityLL, Teardown)
+
+EUNIT_TEST (
+ "IsSupported test",
+ "CMceSdpCodec",
+ "IsSupported",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_IsSupportedL, Teardown)
+
+EUNIT_TEST (
+ "PrepareForEncodeL test",
+ "CMceSdpCodec",
+ "PrepareForEncodeL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_PrepareForEncodeLL, Teardown)
+
+EUNIT_TEST (
+ "EncodeRtpMapFieldsL test",
+ "CMceSdpCodec",
+ "EncodeRtpMapFieldsL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_EncodeRtpMapFieldsLL, Teardown)
+
+EUNIT_TEST (
+ "Direction test",
+ "CMceSdpCodec",
+ "Direction",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_DirectionL, Teardown)
+
+EUNIT_TEST (
+ "ConvertDesToUintL test",
+ "CMceSdpCodec",
+ "ConvertDesToUintL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_ConvertDesToUintLL, Teardown)
+
+EUNIT_TEST (
+ "ConvertDesToIntL test",
+ "CMceSdpCodec",
+ "ConvertDesToIntL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_ConvertDesToIntLL, Teardown)
+
+EUNIT_TEST (
+ "ConvertTRealToDesLC test",
+ "CMceSdpCodec",
+ "ConvertTRealToDesLC",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_ConvertTRealToDesLCL, Teardown)
+
+EUNIT_TEST (
+ "ConvertDesToRealL test",
+ "CMceSdpCodec",
+ "ConvertDesToRealL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_ConvertDesToRealLL, Teardown)
+
+EUNIT_TEST (
+ "IsPayloadTypeSupported test",
+ "CMceSdpCodec",
+ "IsPayloadTypeSupported",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_IsPayloadTypeSupportedL, Teardown)
+
+EUNIT_TEST (
+ "AddCapabilityPayloadType test",
+ "CMceSdpCodec",
+ "AddCapabilityPayloadType",
+ "FUNCTIONALITY",
+ SetupL, UT_CMceSdpCodec_AddCapabilityPayloadTypeLL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+
+
+// END OF FILE