phoneapp/phoneringingtoneplayer/tsrc/ut_cphoneringingtonecontroller/src/ut_cphoneringingtonecontroller.cpp
changeset 21 92ab7f8d0eab
child 60 1eef62f5c541
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneringingtoneplayer/tsrc/ut_cphoneringingtonecontroller/src/ut_cphoneringingtonecontroller.cpp	Fri Mar 19 09:28:42 2010 +0200
@@ -0,0 +1,303 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <e32svr.h>
+#include <profile.hrh>
+#include <eunitmacros.h>
+#include <eunitdecorators.h>
+#include <csmcmockcontext.h>
+#include <msmcmockspecbuilder.h>
+#include <smcobjecttotypemapper.h>
+#include "ut_cphoneringingtonecontroller.h"
+#include "cphoneringingtonecontroller.h"
+#include "tphonecmdparamringtone.h"
+#include "cphoneringingtone.h"
+#include "cphonecenrepproxy.h"
+
+_LIT(KNokiatune, "Z:\\Data\\Sounds\\Digital\\Nokia tune.aac");
+
+
+
+// custom comparison method for matching expected and items
+TBool operator==( const CPhoneRingingTone& aData1, 
+        const CPhoneRingingTone& aData2 )
+    {
+    return ( aData1.FileName() == aData2.FileName()&& 
+             aData1.Volume() == aData2.Volume() &&
+             aData1.RingingType() == aData2.RingingType()&&
+             aData1.TtsToneToBePlayed() == aData2.TtsToneToBePlayed());
+    }
+
+// - Construction -----------------------------------------------------------
+
+ut_cphoneringingtonecontroller* ut_cphoneringingtonecontroller::NewL()
+    {
+    ut_cphoneringingtonecontroller* self = ut_cphoneringingtonecontroller::NewLC();
+    CleanupStack::Pop();
+    return self;
+    }
+
+ut_cphoneringingtonecontroller* ut_cphoneringingtonecontroller::NewLC()
+    {
+    ut_cphoneringingtonecontroller* self = new( ELeave ) ut_cphoneringingtonecontroller();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+ut_cphoneringingtonecontroller::~ut_cphoneringingtonecontroller()
+    {
+    CSmcMockContext::Release();
+    }
+
+ut_cphoneringingtonecontroller::ut_cphoneringingtonecontroller()
+    {
+    }
+
+void ut_cphoneringingtonecontroller::ConstructL()
+    {
+    CEUnitTestSuiteClass::ConstructL();
+    iMockContext = CSmcMockContext::InstanceL();
+    }
+
+// - Test methods -----------------------------------------------------------
+
+
+
+void ut_cphoneringingtonecontroller::SetupL(  )
+    {
+    iMockContext->InitializeL();
+    // need to be created here otherwise memory leak can be detected.
+    iPhoneCenRepProxy = CPhoneCenRepProxy::Instance();
+    iRingingtoneplayer = CPhoneRingingToneController::NewL();
+    }
+    
+
+void ut_cphoneringingtonecontroller::Teardown(  )
+    {
+    delete CPhoneCenRepProxy::Instance();
+    UserSvr::DllFreeTls(KUidCenRepProxySingleton);
+    
+    delete iRingingtoneplayer; 
+    iRingingtoneplayer = NULL;
+    iMockContext->Reset();
+    }
+    
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneRinging(  )
+    {
+    // Expected data
+    TBuf<50> ringingtone(KNokiatune);
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::PlayProfileBasedTone" );
+    CPhoneRingingTone* aAudioVideoRingingTone = CPhoneRingingTone::NewL(ringingtone);
+    aAudioVideoRingingTone->SetRingingType(EProfileRingingTypeRinging);
+    aAudioVideoRingingTone->SetTtsToneToBePlayed(EFalse);
+    aAudioVideoRingingTone->SetVolume(5);
+    iMockContext->ExpectCallL( KMethod() ).WithL(aAudioVideoRingingTone);
+    
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeRinging);
+    // Set the profile ring tone
+    ringToneParam.SetRingTone( ringingtone );
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    delete aAudioVideoRingingTone;
+    
+    }
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneSilence(  )
+    {
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::PlaySilentTone" );
+
+    iMockContext->ExpectCallL( KMethod() );
+    
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeSilent);
+    // Set the profile ring tone
+    TBuf<50> ringingtone(KNokiatune);
+    ringToneParam.SetRingTone( ringingtone );
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    }
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneBeepOnce(  )
+    {
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::PlayBeepOnce" );
+    iMockContext->ExpectCallL( KMethod() ).WithL(5);    
+    
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeBeepOnce);
+    // Set the profile ring tone
+    TBuf<50> ringingtone(KNokiatune);
+    ringToneParam.SetRingTone( ringingtone );
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    }
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneAscending(  )
+    {
+    TBuf<50> ringingtone(KNokiatune);
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::PlayProfileBasedTone" );
+    CPhoneRingingTone* aAudioVideoRingingTone = CPhoneRingingTone::NewL(ringingtone);
+    aAudioVideoRingingTone->SetRingingType(EProfileRingingTypeAscending);
+    aAudioVideoRingingTone->SetTtsToneToBePlayed(EFalse);
+    aAudioVideoRingingTone->SetVolume(5);
+    iMockContext->ExpectCallL( KMethod() ).WithL(aAudioVideoRingingTone);
+    
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeAscending);
+    // Set the profile ring tone
+    ringToneParam.SetRingTone( ringingtone );
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    delete aAudioVideoRingingTone;
+    }
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneRingingOnce(  )
+    {
+    TBuf<50> ringingtone(KNokiatune);
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::PlayProfileBasedTone" );
+    CPhoneRingingTone* aAudioVideoRingingTone = CPhoneRingingTone::NewL(ringingtone);
+    aAudioVideoRingingTone->SetRingingType(EProfileRingingTypeRingingOnce);
+    aAudioVideoRingingTone->SetTtsToneToBePlayed(EFalse);
+    aAudioVideoRingingTone->SetVolume(5);
+    iMockContext->ExpectCallL( KMethod() ).WithL(aAudioVideoRingingTone);
+    
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeRingingOnce);
+    // Set the profile ring tone
+    ringToneParam.SetRingTone( ringingtone );
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    delete aAudioVideoRingingTone;
+    }
+
+void ut_cphoneringingtonecontroller::T_PlayRingingtoneTTS()
+{
+    // Expected data
+    _LIT(KTextToSay, "Mr. Brownstone");
+    TBuf<30> texttosay (KTextToSay);
+    TBuf<50> ringingtone(KNokiatune);
+    CPhoneRingingTone* aAudioVideoRingingTone = CPhoneRingingTone::NewL(ringingtone);
+    aAudioVideoRingingTone->SetRingingType(EProfileRingingTypeRinging);
+    aAudioVideoRingingTone->SetTtsToneToBePlayed(ETrue);
+    aAudioVideoRingingTone->SetVolume(5);
+    _LIT8( KMethod, "CPhoneTTSPlayer::NewL" );
+    iMockContext->ExpectCallL( KMethod() );
+    _LIT8( KMethod2, "CPhoneTTSPlayer::PlayTtsTone" );
+    iMockContext->ExpectCallL( KMethod2() ).WithL(KTextToSay(), aAudioVideoRingingTone);   
+    _LIT8( KMethod3, "CPhoneRingingtonePlayer::PlayProfileBasedTone" );
+    iMockContext->ExpectCallL( KMethod3() ).WithL(aAudioVideoRingingTone);
+
+    TPhoneCmdParamRingTone ringToneParam;
+    ringToneParam.SetVolume(5);
+    ringToneParam.SetRingingType(EProfileRingingTypeRinging);
+    ringToneParam.SetTextToSay(texttosay);
+    // Set the profile ring tone
+    ringToneParam.SetRingTone( ringingtone);
+    ringToneParam.SetType( EPhoneRingToneProfile );
+
+    iRingingtoneplayer->PlayRingToneL( &ringToneParam );
+    
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+    delete aAudioVideoRingingTone;
+}
+
+void ut_cphoneringingtonecontroller::T_StopRingingtone()
+{
+    _LIT8( KMethod, "CPhoneRingingtonePlayer::StopPlaying" );
+    iMockContext->ExpectCallL( KMethod() );
+
+    iRingingtoneplayer->StopPlaying();
+    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() );
+}
+// - EUnit test table -------------------------------------------------------
+
+EUNIT_BEGIN_TEST_TABLE(
+    ut_cphoneringingtonecontroller,
+    "Add test suite description here.",
+    "UNIT" )
+
+EUNIT_TEST(
+    "T_PlayRingingtoneRinging",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneRinging, Teardown)
+    
+EUNIT_TEST(
+    "T_PlayRingingtoneSilence",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneSilence, Teardown)
+
+EUNIT_TEST(
+    "T_PlayRingingtoneBeepOnce",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneBeepOnce, Teardown)
+    
+EUNIT_TEST(
+    "T_PlayRingingtoneAscending",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneAscending, Teardown)    
+     
+EUNIT_TEST(
+    "T_PlayRingingtoneAscending",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneRingingOnce, Teardown)   
+
+EUNIT_TEST(
+    "T_PlayRingingtoneTTS",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_PlayRingingtoneTTS, Teardown)
+    
+EUNIT_TEST(
+    "T_StopRingingtone",
+    "",
+    "",
+    "FUNCTIONALITY",
+    SetupL, T_StopRingingtone, Teardown)
+EUNIT_END_TEST_TABLE