radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:15:02 +0300
branchRCL_3
changeset 19 cce62ebc198e
permissions -rw-r--r--
Revision: 201031 Kit: 201035

/*
* 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");
}