diff -r 1a6714c53019 -r cce62ebc198e radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp --- /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( station.data_ptr() ); + mPresetStorage->readPreset( KFirstPresetIndex, *preset ); + QVERIFY2(( preset->frequency() == KTestFrequency1 ), "API:RadioPresetStorage testReadPreset 1"); + + RadioStation station1; + RadioStationIf* preset1 = static_cast( station1.data_ptr() ); + mPresetStorage->readPreset( KSecondPresetIndex, *preset1 ); + QVERIFY2(( preset->frequency() == KTestFrequency2 ), "API:RadioPresetStorage testReadPreset 2"); + + RadioStation station2; + RadioStationIf* preset2 = static_cast( station2.data_ptr() ); + mPresetStorage->readPreset( KThirdPresetIndex, *preset2 ); + QVERIFY2(( preset->frequency() == KTestFrequency3 ), "API:RadioPresetStorage testReadPreset 3"); + + RadioStation station3; + RadioStationIf* preset3 = static_cast( 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( 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"); +}