radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp
branchRCL_3
changeset 19 cce62ebc198e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp	Tue Aug 31 15:15:02 2010 +0300
@@ -0,0 +1,225 @@
+/*
+* 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:
+*
+*/
+#include "t_radiopresetstorage.h"
+#include "radiopresetstorage.h"
+#include "radiostation.h"
+#include "radiostation_p.h"
+
+// Constants
+const uint KTestFrequency1 = 89000000;
+const uint KTestFrequency2 = 89500000;
+const uint KTestFrequency3 = 90000000;
+const uint KTestFrequency4 = 90500000;
+const uint KMaxNumberOfPresets = 100;
+const uint KInvalidPresetIndex = -2;
+const uint KFirstPresetIndex = 0;
+const uint KSecondPresetIndex = 1;
+const uint KThirdPresetIndex = 2;
+const uint KFrequencyStep = 100000;
+
+/*!
+ *
+ */
+int main(int /* argc*/, char *argv[])
+{
+    TestRadioPresetStorage tv;
+
+    char *pass[3];
+    pass[0] = argv[0];
+    pass[1] = "-o";
+    pass[2] = "c:\\data\\testradiopresetstorage.txt";
+
+    int res = QTest::qExec(&tv, 3, pass);
+
+    return res;
+}
+
+
+TestRadioPresetStorage::TestRadioPresetStorage()
+{
+}
+
+
+/*!
+ * Destructor
+ */
+TestRadioPresetStorage::~TestRadioPresetStorage()
+{
+}
+
+/*!
+ * called before each testfunction is executed
+ */
+void TestRadioPresetStorage::init()
+{
+}
+
+/*!
+ * called after every testfunction
+ */
+void TestRadioPresetStorage::cleanup()
+{
+}
+
+/*!
+ * called before the first testfunction is executed
+ */
+void TestRadioPresetStorage::initTestCase()
+{
+    mPresetStorage.reset( new RadioPresetStorage() );
+    // this is the range used in this test module
+    for(int i = 0; i <= mPresetStorage->maxNumberOfPresets(); i++)
+    {
+        mPresetStorage->deletePreset( i );        
+    }    
+    QVERIFY2(( mPresetStorage->presetCount() == 0 ), "API:RadioPresetStorage initTestCase 1");    
+    // TODO: replace the local constant with the constand defined in preset utility header  
+    QVERIFY2(( mPresetStorage->maxNumberOfPresets() == KMaxNumberOfPresets ), "API:RadioPresetStorage initTestCase 2");
+}
+
+/*!
+ * called after the last testfunction was executed
+ */
+void TestRadioPresetStorage::cleanupTestCase()
+{
+	
+}
+
+/*!
+ * Test saving preset 
+ */
+void TestRadioPresetStorage::testSavePreset()
+{
+  int test = mPresetStorage->maxNumberOfPresets();
+  int initialPresetCount( 0 );
+  //int initialPresetindex( KFirstPresetIndex );  
+  RadioStation station;  
+  station.setFrequency( KTestFrequency1 );
+  station.setPresetIndex( KFirstPresetIndex );
+  mPresetStorage->savePreset( *station.data_ptr() );
+  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 1 ), "API:RadioPresetStorage testSavePreset 1");
+  QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == 0 ), "API:RadioPresetStorage testSavePreset 2");
+  
+  station.setFrequency( KTestFrequency2 );
+  station.setPresetIndex( KSecondPresetIndex );
+  mPresetStorage->savePreset( *station.data_ptr() );
+  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 3");
+  QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KSecondPresetIndex ), "API:RadioPresetStorage testSavePreset 4");
+  
+  // check that saving preset fails if preset index and frequency are allready in use
+  station.setFrequency( KTestFrequency2 );
+  station.setPresetIndex( KSecondPresetIndex );
+  mPresetStorage->savePreset( *station.data_ptr() );
+  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 5");
+  
+  // check that saving preset success when new preset index and frequency are not in use
+  station.setFrequency( KTestFrequency3 );
+  station.setPresetIndex( KThirdPresetIndex );  
+  mPresetStorage->savePreset( *station.data_ptr() );
+  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 3 ), "API:RadioPresetStorage testSavePreset 6");
+  
+  // check that saving with invalid preset index fails
+  station.setFrequency( KTestFrequency4 );
+  station.setPresetIndex( KInvalidPresetIndex );  
+  mPresetStorage->savePreset( *station.data_ptr() );
+  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 3 ), "API:RadioPresetStorage testSavePreset 6");
+}
+
+/*!
+ * Test reading preset 
+ */
+void TestRadioPresetStorage::testReadPreset()
+{
+  RadioStation station;
+  RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
+  mPresetStorage->readPreset( KFirstPresetIndex, *preset );  
+  QVERIFY2(( preset->frequency() == KTestFrequency1 ), "API:RadioPresetStorage testReadPreset 1");
+  
+  RadioStation station1;
+  RadioStationIf* preset1 = static_cast<RadioStationIf*>( station1.data_ptr() );
+  mPresetStorage->readPreset( KSecondPresetIndex, *preset1 );
+  QVERIFY2(( preset->frequency() == KTestFrequency2 ), "API:RadioPresetStorage testReadPreset 2");  
+  
+  RadioStation station2;
+  RadioStationIf* preset2 = static_cast<RadioStationIf*>( station2.data_ptr() );
+  mPresetStorage->readPreset( KThirdPresetIndex, *preset2 );
+  QVERIFY2(( preset->frequency() == KTestFrequency3 ), "API:RadioPresetStorage testReadPreset 3");
+  
+  RadioStation station3;
+  RadioStationIf* preset3 = static_cast<RadioStationIf*>( station3.data_ptr() );
+  // test the value returned with invalid preset index
+  mPresetStorage->readPreset( KThirdPresetIndex + 1, *preset3 );
+  // TODO: change the value to KErrNotFound when preset utility update done
+  QVERIFY2(( preset->frequency() == 87500000 ), "API:RadioPresetStorage testReadPreset 4");
+}
+
+/*!
+ * Test deleting preset
+ */
+void TestRadioPresetStorage::testDeletePreset()
+{   
+    int initialPresetCount( mPresetStorage->presetCount() );
+    
+    QVERIFY2(( mPresetStorage->firstPreset() == KFirstPresetIndex ), "API:RadioPresetStorage testDeletePreset 1");
+    QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KSecondPresetIndex ), "API:RadioPresetStorage testDeletePreset 2");
+    mPresetStorage->deletePreset( KSecondPresetIndex );
+    QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KThirdPresetIndex ), "API:RadioPresetStorage testDeletePreset 3");
+    QVERIFY2(( mPresetStorage->presetCount() == (initialPresetCount - 1)), "API:RadioPresetStorage testDeletePreset 4");       
+    
+    RadioStation station;
+    RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
+    mPresetStorage->readPreset( KSecondPresetIndex, *preset );
+    // TODO: change the value to KErrNotFound when preset utility update done
+    QVERIFY2(( preset->frequency() == 87500000 ), "API:RadioPresetStorage testDeletePreset 5");
+    
+    mPresetStorage->deletePreset( KFirstPresetIndex );
+    QVERIFY2(( mPresetStorage->firstPreset() == KThirdPresetIndex ), "API:RadioPresetStorage testDeletePreset 6");
+    mPresetStorage->deletePreset( KThirdPresetIndex );
+    QVERIFY2(( mPresetStorage->presetCount() == 0), "API:RadioPresetStorage testDeletePreset 7");
+}
+  
+/*!
+ * Test filling preset storage and handling boundary values
+ */
+void TestRadioPresetStorage::testStessTest()
+{
+    for(int i = 0; i < mPresetStorage->maxNumberOfPresets(); i++)
+    {
+        RadioStation station;
+        station.setFrequency( 87500000 + i*KFrequencyStep );
+        station.setPresetIndex( i );  
+        mPresetStorage->savePreset( *station.data_ptr() );
+    }
+    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStessTest 1");
+    int test = mPresetStorage->presetCount();
+    RadioStation station;
+    station.setFrequency( 87500000 + mPresetStorage->maxNumberOfPresets()*KFrequencyStep + KFrequencyStep);
+    station.setPresetIndex( mPresetStorage->maxNumberOfPresets() );  
+    mPresetStorage->savePreset( *station.data_ptr() );
+    int r = mPresetStorage->presetCount();
+    // preset count must not increase
+    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStessTest 2");
+    
+    for(int i = 0; i <= mPresetStorage->maxNumberOfPresets(); i++)
+    {
+        mPresetStorage->deletePreset( i );        
+    }  
+
+    // test deleting with invalid preset index
+    mPresetStorage->deletePreset( KInvalidPresetIndex );
+    QVERIFY2(( mPresetStorage->presetCount() == 0), "API:RadioPresetStorage testStessTest 3");
+}