--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/satui/satapp/tsrc/ut_satapp/src/ut_satapptoneprovider.cpp Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,625 @@
+/*
+* Copyright (c) 2010 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: Unit test for satappmainhandler
+*
+*/
+
+#include <QTimer>
+#include "ut_satapptoneprovider.h"
+#include "satapptoneprovider.h"
+#include "satappaction.h"
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::Ut_SatAppToneProvider
+// -----------------------------------------------------------------------------
+//
+Ut_SatAppToneProvider::Ut_SatAppToneProvider(QObject *parent):QObject(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testCreateProvider
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testCreateProvider_data()
+{
+ QTest::addColumn<bool>("timer");
+ QTest::newRow("t01") << false;
+ QTest::newRow("t01") << true;
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testCreateProvider
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testCreateProvider()
+{
+ QFETCH(bool, timer);
+ ToneProviderTest test;
+ if(timer){
+ test.ConstructTimer(false);
+ }
+ QVERIFY(test.mTone);
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testClearScreen
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testClearScreen()
+{
+ ToneProviderTest test;
+ test.mTone->clearScreen();
+ QVERIFY(!test.isMessageBoxShown());
+ QVERIFY(!test.isTimerActive());
+}
+
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testPlayTone_data
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testPlayTone_data()
+{
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("tone");
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<int>("exp_result");
+
+ QTest::newRow("t01") << "Standard" << 0x01 << 0 << 0x32; // exp result changed
+ QTest::newRow("t02") << "Standard" << 0x02 << 100 << 0;
+ QTest::newRow("t03") << "Standard" << 0x03 << 1000 << 0;
+ QTest::newRow("t04") << "Standard" << 0x04 << 0 << 0;
+ QTest::newRow("t05") << "Standard" << 0x05 << 100 << 0;
+ QTest::newRow("t06") << "Standard" << 0x07 << 1000 << 0;
+ QTest::newRow("t07") << "" << 0x07 << 100 << 0;
+ QTest::newRow("t08") << "" << 0x08 << 500 << 0;
+ QTest::newRow("t09") << "" << 0x09 << 1000 << 0x32; // exp result changed
+ QTest::newRow("t10") << "User" << 0x13 << 1000 << 0;
+ QTest::newRow("t11") << "User" << 0x14 << 500 << 0;
+ QTest::newRow("t12") << "Illegal" << 0x99 << 100 << 0x32;
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testPlayTone
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testPlayTone()
+{
+ QFETCH(QString, text);
+ QFETCH(int, tone);
+ QFETCH(int, duration);
+ QFETCH(int, exp_result);
+
+ ToneProviderTest test;
+ TSatUiResponse resp(ESatSuccess);
+
+ SatAppAction action(ESatPlayToneAction);
+ action.set(KeyToneId,tone);
+ action.set(KeyDuration,duration);
+ action.set(KeyText,text);
+ test.mTone->playTone(action);
+ action.waitUntilCompleted();
+ resp = action.response();
+
+ QCOMPARE((int)resp, exp_result);
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testplayStandardTone_data
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testplayDoubleTone_data()
+{
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("tone");
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<bool>("timer");
+ QTest::addColumn<bool>("active");
+
+ QTest::newRow("t01") << "Standard" << 0x10 << 0 << false << false;
+ QTest::newRow("t02") << "Standard" << 0x10 << 0 << true << true;
+ QTest::newRow("t03") << "Standard" << 0x10 << 0 << true << false;
+ QTest::newRow("t04") << "Standard" << 0x13 << 0 << false << false;
+ QTest::newRow("t04") << "Standard" << 0x14 << 0 << true << true;
+ QTest::newRow("t04") << "" << 0x13 << 0 << true << false;
+
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testplayStandardTone
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testplayDoubleTone()
+{
+ QFETCH(QString, text);
+ QFETCH(int, tone);
+ QFETCH(int, duration);
+ QFETCH(bool, timer);
+ QFETCH(bool, active);
+
+ ToneProviderTest test;
+ TSatUiResponse resp(ESatSuccess);
+ if(timer){
+ test.ConstructTimer(active);
+ }
+
+ SatAppAction action(ESatPlayToneAction);
+ action.set(KeyToneId,tone);
+ action.set(KeyDuration,duration);
+ action.set(KeyText,text);
+ test.mTone->playTone(action);
+ action.waitUntilCompleted();
+ resp = action.response();
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testPlayToneAndClearScreen
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testPlayToneAndClearScreen()
+{
+ ToneProviderTest test;
+
+ // timer for clearing screen after 1 sec.
+ QTimer::singleShot(1000, test.mTone, SLOT(clearScreen()));
+
+ // start playing
+ TSatUiResponse result(ESatFailure);
+ SatAppAction action(ESatPlayToneAction);
+ action.set(KeyToneId,0x01);
+ action.set(KeyDuration,3000);
+ action.set(KeyText,QString("play"));
+ test.mTone->playTone(action);
+ action.waitUntilCompleted();
+ result = action.response();
+
+// QCOMPARE(result, ESatSuccessToneNotPlayed); TODO:which?
+ QCOMPARE(result, ESatSuccess);
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testMatoPlayComplete_data
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testMatoPrepareComplete_data()
+{
+ QTest::addColumn<int>("error");
+ QTest::addColumn<bool>("tone");
+ QTest::newRow("error_0") << 0 << true;
+ QTest::newRow("error_-1") << -1 << false;
+ QTest::newRow("error_-2") << 0 << false;
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testMatoPlayComplete
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testMatoPrepareComplete()
+{
+ QFETCH(int, error);
+ QFETCH(bool, tone);
+ ToneProviderTest test;
+
+ if(tone)
+ test.ConstructAudioTone();
+
+ test.mTone->MatoPrepareComplete(error);
+
+ test.DestroyAudioTone();
+}
+
+//// -----------------------------------------------------------------------------
+//// Ut_SatAppToneProvider::testMatoPlayComplete_data
+////
+//// Connects to test object signal and verifies received data.
+//// -----------------------------------------------------------------------------
+//void Ut_SatAppToneProvider::testMatoPlayComplete_data()
+//{
+// QTest::addColumn<int>("error");
+// QTest::addColumn<bool>("tone");
+// QTest::newRow("error_0") << 0 << true;
+// QTest::newRow("error_-1") << -1 << false;
+// QTest::newRow("error_-2") << 0 << false;
+//}
+//
+//// -----------------------------------------------------------------------------
+//// Ut_SatAppToneProvider::testMatoPlayComplete
+////
+//// Connects to test object signal and verifies received data.
+//// -----------------------------------------------------------------------------
+//void Ut_SatAppToneProvider::testMatoPlayComplete()
+//{
+// QFETCH(int, error);
+// QFETCH(bool, tone);
+// ToneProviderTest test;
+//
+// if(tone)
+// test.ConstructAudioTone();
+//
+// test.mTone->MatoPrepareComplete(error);
+// test.mTone->MatoPlayComplete(error);
+//
+// test.DestroyAudioTone();
+//}
+//
+//// -----------------------------------------------------------------------------
+//// Ut_SatAppToneProvider::testMapcPlayComplete_data
+////
+//// Connects to test object signal and verifies received data.
+//// -----------------------------------------------------------------------------
+//void Ut_SatAppToneProvider::testMapcPlayComplete_data()
+//{
+// QTest::addColumn<bool>("player");
+// QTest::newRow("t_true") << true;
+// QTest::newRow("t_false") << false;
+//}
+//
+//// -----------------------------------------------------------------------------
+//// Ut_SatAppToneProvider::testMapcPlayComplete
+////
+//// Connects to test object signal and verifies received data.
+//// -----------------------------------------------------------------------------
+//void Ut_SatAppToneProvider::testMapcPlayComplete()
+//{
+// QFETCH(bool, player);
+// TInt error = 0;
+// ToneProviderTest test;
+//
+// if(player)
+// test.ConstructAudioPlayer();
+//
+// test.mTone->MapcPlayComplete(error);
+//
+// test.DestroyAudioPlayer();
+//}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testMapcInitComplete_data
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testMapcInitComplete_data()
+{
+ QTest::addColumn<int>("error");
+ QTest::addColumn<bool>("player");
+ QTest::newRow("error_0") << 0 << false;
+ QTest::newRow("error_-6") << -6 << true;
+ QTest::newRow("error_-6") << -6 << false;
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testMapcInitComplete
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testMapcInitComplete()
+{
+ QFETCH(int, error);
+ QFETCH(bool, player);
+ ToneProviderTest test;
+
+ if(player)
+ test.ConstructAudioPlayer();
+
+ test.mTone->MapcInitComplete(error, 0);
+
+ test.DestroyAudioPlayer();
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testRecognizeTone_data
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testRecognizeTone_data()
+{
+ QTest::addColumn<int>("tone");
+ QTest::addColumn<int>("duration");
+
+ QTest::newRow("t01") << -1 << 0;
+ QTest::newRow("t01") << -1 << 1;
+ QTest::newRow("t01") << 0x01 << 0;
+ QTest::newRow("t01") << 0x01 << 1;
+ QTest::newRow("t01") << 0x02 << 0;
+ QTest::newRow("t01") << 0x02 << 1;
+ QTest::newRow("t01") << 0x03 << 0;
+ QTest::newRow("t01") << 0x03 << 1;
+ QTest::newRow("t01") << 0x04 << 0;
+ QTest::newRow("t01") << 0x04 << 1;
+ QTest::newRow("t01") << 0x05 << 0;
+ QTest::newRow("t01") << 0x05 << 1;
+ QTest::newRow("t01") << 0x06 << 0;
+ QTest::newRow("t01") << 0x06 << 1;
+ QTest::newRow("t01") << 0x07 << 0;
+ QTest::newRow("t01") << 0x07 << 1;
+ QTest::newRow("t01") << 0x08 << 0;
+ QTest::newRow("t01") << 0x08 << 1;
+ QTest::newRow("t01") << 0x09 << 0;
+
+ QTest::newRow("t01") << 0x10 << 0;
+ QTest::newRow("t01") << 0x10 << 1;
+ QTest::newRow("t01") << 0x11 << 0;
+ QTest::newRow("t01") << 0x11 << 1;
+ QTest::newRow("t01") << 0x12 << 0;
+ QTest::newRow("t01") << 0x12 << 1;
+ QTest::newRow("t02") << 0x13 << 0;
+
+ QTest::newRow("t02") << 0x14 << 0;
+
+
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testRecognizeTone
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testRecognizeTone()
+{
+ QFETCH(int, tone);
+ QFETCH(int, duration);
+
+ ToneProviderTest test;
+ test.TestRecognizeTone(tone, duration);
+}
+
+// -----------------------------------------------------------------------------
+// Ut_SatAppToneProvider::testPrepareAudioToneUtility
+//
+// Connects to test object signal and verifies received data.
+// -----------------------------------------------------------------------------
+void Ut_SatAppToneProvider::testPrepareAudioToneUtility()
+{
+ ToneProviderTest test;
+ test.ConstructAudioTone();
+ test.ConstructAudioTone();
+}
+
+// ---------------------------------------------------------------
+// internal helper class
+// ---------------------------------------------------------------
+
+ToneProviderTest::ToneProviderTest()
+{
+ mTone = new SatAppToneProvider(this);
+}
+
+ToneProviderTest::~ToneProviderTest()
+{
+ cleanup();
+}
+
+/**
+ * Singleton Pattern - not used
+ */
+SatAppToneProvider* ToneProviderTest::getToneInstance()
+{
+
+}
+
+bool ToneProviderTest::isMessageBoxShown()
+{
+ if (mTone->mPermanentNote) {
+ return true;
+ }
+ return false;
+}
+
+bool ToneProviderTest::isTimerActive()
+{
+ if (mTone->mTimer && mTone->mTimer->isActive()) {
+ return true;
+ }
+ return false;
+}
+
+void ToneProviderTest::ConstructAudioTone()
+{
+ QByteArray sequence;
+ sequence = KNetToneSeqDial;
+ TPtrC8 seq((unsigned char*)sequence.constData(),sequence.length());
+ if(mTone)
+ QT_TRAP_THROWING(mTone->SymbianPrepareAudioToneUtilityL(seq));
+}
+
+void ToneProviderTest::DestroyAudioTone()
+{
+ if(mTone)
+ mTone->SymbianStopAudioToneUtility();
+}
+
+void ToneProviderTest::ConstructAudioPlayer()
+{
+ int tone = ESatToneNotSet;
+ int duration = 0;
+ if(mTone)
+ QT_TRAP_THROWING(mTone->SymbianPrepareAudioPlayerL(tone,duration));
+}
+
+void ToneProviderTest::DestroyAudioPlayer()
+{
+ if(mTone)
+ mTone->SymbianStopAudioPlayer();
+}
+
+void ToneProviderTest::ConstructTimer(bool active)
+{
+ mTone->mTimer = new QTimer(mTone);
+ connect(mTone->mTimer, SIGNAL(timeout()),
+ mTone, SLOT(stopPlayTone()));
+ if(active)
+ mTone->mTimer->start(3000);
+}
+
+void ToneProviderTest::DestroyTimer()
+{
+
+}
+
+void ToneProviderTest::SetPlayToneResult(TSatUiResponse error)
+{
+ mTone->mPlayToneError = error;
+}
+
+void ToneProviderTest::TestRecognizeTone(int tone, int duration)
+{
+ QByteArray sequence;
+ mTone->recognizeTone(tone, sequence, duration);
+}
+
+void ToneProviderTest::cleanup()
+{
+ delete mTone;
+ mTone = 0;
+}
+
+// ****************************************************************************
+// * ************************************************************************ *
+// * * SYMBIAN MOC PART * *
+// * ************************************************************************ *
+// ****************************************************************************
+
+
+// includes
+#include <e32cmn.h>
+#include <MProfile.h>
+#include <MProfileEngine.h>
+#include <MProfileTones.h>
+#include <TProfileToneSettings.h>
+#include <mdaaudiotoneplayer.h> //MMdaAudioToneObserver
+
+class CMocProfileTones : public MProfileTones
+ {
+ public:
+ CMocProfileTones()
+ {
+ // Set TProfileToneSettings with specified value
+ iToneSettings.iWarningAndGameTones = EFalse;
+ TBuf<256> ringTone(_L("Z:\\Data\\Sounds\\Digital\\Nokia tune.aac"));
+ TBuf<256> alertTone(_L("Z:\\Data\\Sounds\\Digital\\Message 1.aac"));
+ iTone = ringTone;
+ }
+ virtual ~CMocProfileTones() {}
+
+ public:
+ virtual const TDesC& RingingTone1() const
+ {
+ //DONE
+ return iTone;
+ }
+ virtual const TDesC& RingingTone2() const
+ {
+ //DONE
+ return iTone;
+ }
+ virtual const TDesC& MessageAlertTone() const
+ {
+ //DONE
+ return iTone;
+ }
+ virtual const TProfileToneSettings& ToneSettings() const
+ {
+ //DONE: Return TProfileToneSettings
+ return iToneSettings;
+ }
+ private:
+ TProfileToneSettings iToneSettings;
+ TBuf<256> iTone;
+ };
+
+class CMocProFile : public MProfile
+ {
+ public:
+ static CMocProFile* NewLC()
+ {
+ CMocProFile* self = new( ELeave ) CMocProFile;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+ virtual ~CMocProFile() {}
+ protected:
+ CMocProFile() {}
+ void ConstructL()
+ {
+ iTones = new(ELeave) CMocProfileTones;
+ }
+
+ public: // New functions
+ virtual void Release() {}
+ virtual const TArray<TContactItemId> AlertForL() {}
+ virtual TBool IsSilent() const { return EFalse; }
+ virtual const MProfileName& ProfileName() const {}
+ virtual const MProfileTones& ProfileTones() const
+ {
+ //DONE: return an MProfileTones object
+ return *iTones;
+ }
+ virtual const MProfileExtraTones& ProfileExtraTones() const {}
+ virtual const MProfileExtraSettings& ProfileExtraSettings() const {}
+
+ private:
+ MProfileTones* iTones;
+ };
+
+class CMocProfileEngine : public MProfileEngine
+ {
+ public:
+ CMocProfileEngine() {};
+ virtual ~CMocProfileEngine() {};
+ public:
+ virtual void Release() {};
+ virtual MProfile* ActiveProfileLC()
+ {
+ //DONE: Create an MProfile object
+ MProfile* pf = CMocProFile::NewLC();
+ return pf;
+ }
+ virtual MProfile* ActiveProfileL() { return NULL; };
+ virtual TInt ActiveProfileId() { return 0; };
+ virtual MProfilesNamesArray* ProfilesNamesArrayLC() { return NULL; };
+ virtual void SetActiveProfileL( TInt /*aId*/ ) {};
+ virtual void SetTempRingingVolumeL( TProfileRingingVolume /*aVolume*/ ) {};
+ virtual TProfileRingingVolume TempRingingVolumeL() const {
+ return EProfileRingingVolumeLevel1;
+ }
+ virtual void SetTempMediaVolumeL( TProfileRingingVolume /*aVolume*/ ) {};
+ virtual TProfileRingingVolume TempMediaVolumeL() const {
+ return EProfileRingingVolumeLevel1;
+ }
+ virtual TBool IsFeatureSupported(
+ TProfileFeatureId /*aFeatureId*/ ) const { return EFalse; };
+ virtual TBool IsActiveProfileTimedL() { return EFalse; };
+
+ };
+
+// ----------------------------------------------------------------------------
+// CreateProfileEngineL moc
+// create profile engine
+// ----------------------------------------------------------------------------
+//
+//MProfileEngine* CreateProfileEngineL()
+// {
+//
+// MProfileEngine* pe = new( ELeave ) CMocProfileEngine;
+// return pe;
+// }
+
+// End of file
+