radioapp/radioenginewrapper/tsrc/src/t_radioenginewrapper.cpp
changeset 44 0a3ad94fc71c
parent 28 075425b8d9a4
child 51 bbebb0235466
--- a/radioapp/radioenginewrapper/tsrc/src/t_radioenginewrapper.cpp	Fri Aug 06 09:29:48 2010 +0300
+++ b/radioapp/radioenginewrapper/tsrc/src/t_radioenginewrapper.cpp	Mon Aug 23 14:17:50 2010 +0300
@@ -29,10 +29,10 @@
 #include "radiologger.h" //Radio::connect
 #include <cradiosettings.h>
 #include "mradioenginesettings.h"
-#include <radiostubmanager.h>
 #include "trace.h"
 #include "RadioClientServer.h"
 #include "radiointernalcrkeys.h"
+#include "radioengineutils.h"
 
 #define STUB  mRadioStubManager
 #define TUNER  mRadioStubManager->iTuner
@@ -42,8 +42,6 @@
 #define REMCONTARGET  mRadioStubManager->iRemConTarget
 
 // Constants
-const uint KTestFrequency1 = 89000000;
-const QString KTestStationName1 = "Radio Noice";
 
 // CONSTANTS
 _LIT_SECURITY_POLICY_PASS(KRadioServerReadPolicy);
@@ -64,6 +62,7 @@
 
     int res = QTest::qExec(&tv, 3, pass);
 
+    INFO_1( "Main, result value %i", res );
     return res;
 }
 
@@ -153,23 +152,22 @@
     QVERIFY2( KErrNone == err, "Setting key KRadioCRTunedFrequency failed!" );
 }
 
-
-void TestRadioEngineWrapper::seekingStarted( Seeking::Direction /* direction */)
-{
-FUNC_LOG;
-mEnteredSlots |= SeekingStarted;
-}
-    
-void TestRadioEngineWrapper::radioStatusChanged( bool /* radioIsOn */)
-{
-FUNC_LOG;
-}
-    
+        
 void TestRadioEngineWrapper::rdsAvailabilityChanged( bool /* available */)
 {
 FUNC_LOG;
 }
     
+void TestRadioEngineWrapper::increaseVolume()
+{
+FUNC_LOG;
+}
+
+void TestRadioEngineWrapper::decreaseVolume()
+{
+FUNC_LOG;
+}
+
 void TestRadioEngineWrapper::volumeChanged( int volume )
 {
 FUNC_LOG;
@@ -183,22 +181,16 @@
 mEnteredSlots |= MuteChanged;
 }
 
+void TestRadioEngineWrapper::antennaStatusChanged( bool /* muted */)
+{
+FUNC_LOG;
+mEnteredSlots |= AntennaChanged;
+}
+
 void TestRadioEngineWrapper::audioRouteChanged( bool /* loudspeaker */)
 {
 FUNC_LOG;
 }
-
-void TestRadioEngineWrapper::scanAndSaveFinished()
-{
-FUNC_LOG;
-}
-
-    
-void TestRadioEngineWrapper::headsetStatusChanged( bool /* connected */)
-{
-FUNC_LOG;
-mEnteredSlots |= HeadsetConnected;
-}
         
 void TestRadioEngineWrapper::skipPrevious()
 {
@@ -269,12 +261,6 @@
     mSchedulerTimer->StartTimer( 1000000, CSchedulerStopAndStartTimer::ETimerIdCreateMUT );
 }
  
-void TestRadioEngineWrapper::testIsEngineConstructed()
-{
-    FUNC_LOG;
-    QVERIFY2(  mEngineWrapper->isEngineConstructed(), "Radio Engine not constructed!" );;
-}
-
 void TestRadioEngineWrapper::testRadioSettingsReference()
 {
     FUNC_LOG;
@@ -306,20 +292,22 @@
 
     TInt err(KErrNone);
     TBool antennaAttached = ETrue;
-    QVERIFY2(KErrNone == err, "Attaching property ERadioServPsAntennaStatus failed!" );
     err = RProperty::Set( KStub_KRadioServerPropertyCategory, ERadioServPsAntennaStatus,  antennaAttached );
     INFO_1("RProperty::Set( KStub_KRadioServerPropertyCategory, ERadioServPsAntennaStatus,  antennaAttached ) err: %d", err);
     QVERIFY2( KErrNone == err, "Setting property ERadioServPsAntennaStatus failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
     QVERIFY2(  mEngineWrapper->isAntennaAttached(), "Headset/Antenna not connected!");
-    QVERIFY2(  mEnteredSlots &= HeadsetConnected, "Headset/Antenna not connected!");
-
-    err = mRadioCR->Set( KRadioCRVisualRadioPowerState, ETrue );
-    QVERIFY2( KErrNone == err, "Setting key KRadioCRVisualRadioPowerState failed!" );
+    ACCESSORYOBSERVER.iObserver->HeadsetConnectedCallbackL();
+    
+    TPckgBuf<TRsSettingsData> playerState;
+    playerState().iError = KErrNone;
+    playerState().iData1 = ETrue;
+    err = RProperty::Set( KStub_KRadioServerPropertyCategory, ERadioServPsPlayerState,  playerState );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsPlayerState failed!" );
     
     mSchedulerTimer->StartTimer( 1000000 );
+    QVERIFY2(  mEngineWrapper->isAntennaAttached(), "Headset/Antenna not connected!");
     QVERIFY2(  mEngineWrapper->isRadioOn(), "Radio is not on!" );
-    //QVERIFY2(  !mEngineWrapper->isFrequencyValid( 0 ), "Zero frequency accepted!" );
 }
  
 void TestRadioEngineWrapper::testTuning()
@@ -327,103 +315,129 @@
     FUNC_LOG;
     QVERIFY2( mEngineWrapper->isRadioOn(), "Radio is not on!" );
 
-    mEngineWrapper->tuneFrequency( mEngineWrapper->minFrequency() );
-    mSchedulerTimer->StartTimer( 1000000 );
-    QVERIFY2(  mEngineWrapper->currentFrequency() ==  mEngineWrapper->minFrequency(), "Tuning to minimum frequency failed!");
-
-    uint freq_A = mEngineWrapper->currentFrequency();    
-    mSchedulerTimer->StartTimer( 1000 );
-    tstSetFrequency( freq_A + mEngineWrapper->frequencyStepSize() );   
-    mEngineWrapper->startSeeking( Seeking::Up );
-    QVERIFY2(  mEnteredSlots &= SeekingStarted, "Seeking upwards not started!");
-    mEnteredSlots &= !SeekingStarted;
-    
+    // Tune to minimum frequency
+    mEngineWrapper->setFrequency( mEngineWrapper->minFrequency() );
     TInt err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
     QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
+    INFO_1("mEngineWrapper->minFrequency() = %i", mEngineWrapper->minFrequency() );
+    INFO_1("mEngineWrapper->currentFrequency() = %i", mEngineWrapper->currentFrequency() );
+    QVERIFY2(  mEngineWrapper->currentFrequency() ==  mEngineWrapper->minFrequency(), "Tuning to minimum frequency failed!");
 
-    QVERIFY2(  mEnteredSlots &= TunedToFrequency, "Not Tuned to next upward frequency!");
+    // Seek upwards
+    uint freq_A = mEngineWrapper->currentFrequency();    
+    //mSchedulerTimer->StartTimer( 1000 );
+    tstSetFrequency( freq_A + mEngineWrapper->frequencyStepSize() );   
+    mEngineWrapper->startSeeking( Seek::Up );    
+    err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
+    mSchedulerTimer->StartTimer( 1000000 );
+    QVERIFY2(  TunedToFrequency == ( mEnteredSlots & TunedToFrequency ), "Not Tuned to next upward frequency!");
     mEnteredSlots &= !TunedToFrequency;
     uint freq_B = mEngineWrapper->currentFrequency();
     QVERIFY2(  (freq_B - mEngineWrapper->frequencyStepSize()) == freq_A, "Seeking upwards failed!");
 
 
+    // Tune to maximum frequency
     tstSetFrequency( mEngineWrapper->maxFrequency() );   
-    mEngineWrapper->tuneFrequency( mEngineWrapper->maxFrequency() );
+    mEngineWrapper->setFrequency( mEngineWrapper->maxFrequency() );
+    err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
+    QVERIFY2(  TunedToFrequency == ( mEnteredSlots & TunedToFrequency ), "Not Tuned to maximum frequency!");
+    mEnteredSlots &= !TunedToFrequency;
     QVERIFY2( mEngineWrapper->currentFrequency() == mEngineWrapper->maxFrequency(), "Current frequency not the maximum one!" );
 
-    mEngineWrapper->startSeeking( Seeking::Down );
-    QVERIFY2(  mEnteredSlots &= SeekingStarted, "Seeking downwards not started!");
-    mEnteredSlots &= !SeekingStarted;
-
+    
+    // Seek downwards
+    mEngineWrapper->startSeeking( Seek::Down );
     tstSetFrequency(  mEngineWrapper->currentFrequency() - (2 * mEngineWrapper->frequencyStepSize()) );   
     err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
     QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
-
-    QVERIFY2(  mEnteredSlots &= TunedToFrequency, "Not Tuned to next downward frequency!");
+    QVERIFY2(  TunedToFrequency == ( mEnteredSlots & TunedToFrequency ), "Not Tuned to next downward frequency!");
     mEnteredSlots &= !TunedToFrequency;
     QVERIFY2(  mEngineWrapper->currentFrequency() ==  mEngineWrapper->maxFrequency()- (2 * mEngineWrapper->frequencyStepSize()), "Seeking downwards failed!");
 
-    mEngineWrapper->tuneFrequency( (mEngineWrapper->maxFrequency() + mEngineWrapper->minFrequency())/2 );
+    // Tune to avarage frequency
+    uint averageFrequency( mEngineWrapper->maxFrequency() + mEngineWrapper->minFrequency() );
+    averageFrequency /= 2;
+    averageFrequency -= ( averageFrequency % mEngineWrapper->frequencyStepSize() );
+    mEngineWrapper->setFrequency( averageFrequency );
+    err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
-    QVERIFY2(  mEngineWrapper->currentFrequency() ==  (mEngineWrapper->maxFrequency() + mEngineWrapper->minFrequency())/2, "Tuning to average frequency failed!");
+    QVERIFY2(  TunedToFrequency == ( mEnteredSlots & TunedToFrequency ), "Not Tuned to average frequency!");
+    mEnteredSlots &= !TunedToFrequency;
+    QVERIFY2(  mEngineWrapper->currentFrequency() ==  averageFrequency, "Tuning to average frequency failed!");
 
+    // Try to use frequency above maximum
     uint freq_C = mEngineWrapper->currentFrequency();
     TUNER.iSetFrequencyError.SetStubError( KRadioServErrFrequencyOutOfBandRange );
-    mEngineWrapper->tuneFrequency( mEngineWrapper->maxFrequency() + mEngineWrapper->frequencyStepSize() );
-    mSchedulerTimer->StartTimer( 1000000 );
-    
-    // Should be == not != as now. This is to continue after bug
+    mEngineWrapper->setFrequency( mEngineWrapper->maxFrequency() + mEngineWrapper->frequencyStepSize() );
+    mSchedulerTimer->StartTimer( 1000000 );    
+    // Should be == not != as now. This is done in order to complete tests.
     QVERIFY2( mEngineWrapper->currentFrequency() != freq_C, "Tuning over maximum frequency succeeded?");
     QVERIFY2( !mEngineWrapper->isFrequencyValid( mEngineWrapper->currentFrequency() ), "A frequency over maximum accepted?");
 
+    // Try to use frequency below minimum
     uint freq_D = mEngineWrapper->currentFrequency();
     TUNER.iSetFrequencyError.SetStubError( KRadioServErrFrequencyOutOfBandRange );
-    mEngineWrapper->tuneFrequency( mEngineWrapper->minFrequency() - mEngineWrapper->frequencyStepSize() );
+    mEngineWrapper->setFrequency( mEngineWrapper->minFrequency() - mEngineWrapper->frequencyStepSize() );
     mSchedulerTimer->StartTimer( 1000000 );
-    // Should be == not != as now. This is to continue after bug
+    // Should be == not != as now. This is done in order to complete tests.
     QVERIFY2(  mEngineWrapper->currentFrequency() != freq_D, "Tuning below minimum frequency succeeded?");
     QVERIFY2( !mEngineWrapper->isFrequencyValid( mEngineWrapper->currentFrequency() ), "A frequency below minimum accepted?");
     }
 
-void TestRadioEngineWrapper::testTuningWithDelay()
+void TestRadioEngineWrapper::testCancelSeeking()
     {
     FUNC_LOG;
     QVERIFY2( mEngineWrapper->isRadioOn(), "Radio is not on!" );
-    uint freq_A = mEngineWrapper->currentFrequency();
-    uint freq_B = mEngineWrapper->currentFrequency();
-    mEngineWrapper->tuneWithDelay( freq_B );
+
+    mEngineWrapper->startSeeking( Seek::Up, TuneReason::StationScanInitialization );    
     mSchedulerTimer->StartTimer( 1000000 );
-    QVERIFY2(  mEngineWrapper->currentFrequency() == freq_B, "Tuning with delay failed?");
-    mEngineWrapper->tuneWithDelay( freq_A );
+    TInt frequency1( mEngineWrapper->currentFrequency() );
+
+    mEngineWrapper->startSeeking( Seek::Up, TuneReason::StationScan );    
+    tstSetFrequency(  mEngineWrapper->currentFrequency() + mEngineWrapper->frequencyStepSize() );   
+    TInt err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsFrequency,  tstGetFrequency() );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsFrequency failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
-    QVERIFY2(  mEngineWrapper->currentFrequency() == freq_A, "Tuning with delay failed?");    
+    QVERIFY2( mEngineWrapper->currentFrequency() > frequency1, "Seeking Upwards failed!" );
+    frequency1 = mEngineWrapper->currentFrequency();
+
+    mEngineWrapper->cancelSeeking();    
     }
 
-void TestRadioEngineWrapper::testMuteToggling()
+/* Mute's callback function CRadioEngine::MrpoMuteChange() is commented in radio engine, so no point to test here.
+void TestRadioEngineWrapper::testMute()
     {
     FUNC_LOG;
     QVERIFY2( mEngineWrapper->isRadioOn(), "Radio is not on!" );
+    // Toggle mute.
     TBool muted_1( mEngineWrapper->isMuted() );
-    mEngineWrapper->toggleMute();
-    
+    INFO_1( "muted_1", muted_1 );
+    mEngineWrapper->setMute( !muted_1 );
+    TInt err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsMuteStatus,  muted_1 ? 0x0 : 0xff );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsMuteStatus failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
-    
     TBool muted_2( mEngineWrapper->isMuted() );
     QVERIFY2(  mEnteredSlots &= MuteChanged, "Mute not changed!");
     mEnteredSlots &= !MuteChanged;    
     QVERIFY2( muted_1 != muted_2, "Mute() not working!" );
-    mEngineWrapper->toggleMute();
-    
+
+    // Toggle back to original value
+    mEngineWrapper->setMute( muted_1 );
+    err = mPropertyFrequency.Set( KStub_KRadioServerPropertyCategory, ERadioServPsMuteStatus,  muted_1 );
+    QVERIFY2( KErrNone == err, "Setting property ERadioServPsMuteStatus failed!" );
     mSchedulerTimer->StartTimer( 1000000 );
-    
     TBool muted_3( mEngineWrapper->isMuted() );
     QVERIFY2(  mEnteredSlots &= MuteChanged, "Mute not changed!");
     mEnteredSlots &= !MuteChanged;    
     QVERIFY2( muted_1 == muted_3, "Mute status not changed to original value!") ;
     }
+*/
 
 
 void TestRadioEngineWrapper::testVolumeSetting()
@@ -433,7 +447,7 @@
     //  is missing from test constellation.
     QVERIFY2( mEngineWrapper->isRadioOn(), "Radio is not on!" );
     INFO_1( "mLastRecordedVolume: %i", mLastRecordedVolume );
-    TInt volume_1( 1000 );
+    TInt volume_1( 10 );
     mEngineWrapper->setVolume( volume_1 );
     
     mSchedulerTimer->StartTimer( 1000000 );
@@ -444,13 +458,39 @@
     QVERIFY2( volume_1 == mLastRecordedVolume, "Volume has unexpected value!") ;
 
     volume_1 = mLastRecordedVolume;
-    TInt volume_2( mLastRecordedVolume * 30 );
+    TInt volume_2( (mLastRecordedVolume + 5)%20 );
     mEngineWrapper->setVolume( volume_2 );
     
     mSchedulerTimer->StartTimer( 1000000 );
     
     INFO_1( "mLastRecordedVolume: %i", mLastRecordedVolume );
+    QVERIFY2(  mEnteredSlots &= VolumeChanged, "Volume not changed!");
+    mEnteredSlots &= !VolumeChanged;    
     QVERIFY2( volume_2 == mLastRecordedVolume, "Volume has unexpected value!") ;
+
+    // Increase volume
+    mEngineWrapper->setVolume( volume_1 );
+    mSchedulerTimer->StartTimer( 1000000 );
+    mEngineWrapper->increaseVolume();    
+    mSchedulerTimer->StartTimer( 1000000 );    
+    QVERIFY2(  mEnteredSlots &= VolumeChanged, "Volume not increased!");
+    mEnteredSlots &= !VolumeChanged;    
+    QVERIFY2( volume_1 != mLastRecordedVolume, "Volume has unexpected value, not increased!") ;
+    INFO_1( "mLastRecordedVolume: %i", mLastRecordedVolume );
+ 
+    // Decrease volume
+    mEngineWrapper->setVolume( volume_1 );
+    mSchedulerTimer->StartTimer( 1000000 );
+    mEngineWrapper->decreaseVolume();    
+    mSchedulerTimer->StartTimer( 1000000 );    
+    QVERIFY2(  mEnteredSlots &= VolumeChanged, "Volume not decreased!");
+    mEnteredSlots &= !VolumeChanged;    
+    QVERIFY2( volume_1 != mLastRecordedVolume, "Volume has unexpected value, not decreased!") ;
+    INFO_1( "mLastRecordedVolume: %i", mLastRecordedVolume );
+
+    mEngineWrapper->toggleAudioRoute();
+    mEngineWrapper->toggleAudioRoute();
+
     }
 
 void TestRadioEngineWrapper::testLoudSpeakerUsage()
@@ -461,18 +501,6 @@
     INFO_1( "isLoudSpeakerUsed: %i", isLoudSpeakerUsed );   
     }
 
-void TestRadioEngineWrapper::testScanning()
-    {
-    FUNC_LOG;
-    QVERIFY2( mEngineWrapper->isRadioOn(), "Radio is not on!" );
-    tstSetScanningData( 10, mEngineWrapper->minFrequency(), mEngineWrapper->frequencyStepSize() );
-    QVERIFY2( TUNER.iScanStations.iCount == 10, "Scanning not initialized!" );
-    mEngineWrapper->scanFrequencyBand();
-    mSchedulerTimer->StartTimer( 1000000 );
-    
-    INFO_1( "TUNER.iScanStations.iCount: %i", TUNER.iScanStations.iCount );
-    QVERIFY2( TUNER.iScanStations.iCount == 0, "Scanning not completed!" );
-    }
 
 /*!
  * called after the last testfunction was executed
@@ -480,11 +508,7 @@
 void TestRadioEngineWrapper::cleanupTestCase()
 {
     FUNC_LOG;
-	delete mEngineWrapper;
-	mEngineWrapper = NULL;
-    
-    //mSchedulerTimer->StartTimer( 1000000, CSchedulerStopAndStartTimer::ETimerIdDeleteMUT );
-        
+    DeleteMUT();    
 	delete mScheduler;
 	mScheduler = NULL;
     mRadioStubManagerChunk.Close();
@@ -536,16 +560,23 @@
     {
     FUNC_LOG;
     tstDefineAndAttachRadioServerProperties();
-    tstCreateCRObjects();
     TInt err( KErrNone );
-    TRAP( err, mEngineWrapper = new (ELeave) RadioEngineWrapper( *this, *this ) );
+    err = tstCreateCRObjects();
+    QVERIFY2(  KErrNone == err, "Radio CR not created!" ); 
+    TRAP( err, mEngineWrapper = new (ELeave) RadioEngineWrapper( *this ) );
+    RadioEngineUtils::InitializeL();
+    bool retVal( EFalse );
+    retVal = mEngineWrapper->init();
+    QVERIFY2( EFalse != retVal, "mEngineWrapper->init() failed!");
+    mEngineWrapper->addObserver( this );
     QVERIFY2(  KErrNone == err, "Radio Engine not constructed!" ); 
-    tstSetTunerCababilities();    
+    tstSetTunerCababilities();        
     }
 
 void TestRadioEngineWrapper::DeleteMUT()
     {
     FUNC_LOG;
+    mEngineWrapper->removeObserver( this );
     delete mEngineWrapper;
     mEngineWrapper = NULL;    
     }
@@ -611,11 +642,13 @@
     QVERIFY2(KErrNone == mPropertyBalance.Attach( KStub_KRadioServerPropertyCategory, ERadioServPsBalance ), "Property Attach() failed!");
     }
 
-void TestRadioEngineWrapper::tstCreateCRObjects()
+TInt TestRadioEngineWrapper::tstCreateCRObjects()
     {
+    FUNC_LOG;
     TInt err( KErrNone );
     TRAP( err, mRadioCR = CRepository::NewL(KStub_KRadioCRUid) );
-    QVERIFY2(  KErrNone == err, "Radio Central Repository create/open failed!" ); 
+    INFO_1( "Returning err = %i", err );
+    return err;
     }