diff -r dcd0ca396fa1 -r 5aadd1120515 clock/tsrc/unittest_timezoneclient/unittest_timezoneclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock/tsrc/unittest_timezoneclient/unittest_timezoneclient.cpp Fri Oct 15 12:10:36 2010 +0530 @@ -0,0 +1,465 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Symbian Foundation License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: TimeZoneClient unit test class. + * + */ + +// System includes +#include + +// User includes +#include "timezoneclient.h" +#include "clockdatatypes.h" +/*! + \class TestTimeZoneClient + + This object has functions to test the public apis in the class + TimeZoneClient. + */ +class TestTimezoneClient: public QObject +{ + Q_OBJECT + +private slots: + // Test case setup. + void init(); + void cleanup(); + + // Test cases. + void testGetLocations(); + void testGetCurrentZoneInfoL(); + void testSetAsCurrentLocation(); + void testSetAsCurrentLocationWithDst(); + void testIsDSTOnL(); + void testGetStandardOffset(); + void testTimeUpdateOn(); + void testSetTimeUpdateOn(); + void testSetDateTime(); + void testGetAllTimeZoneOffsets(); + void testGetCountriesForUTCOffset(); + void testAddCity(); + void testCheckForDstChange(); + void testGetSavedLocations(); + void testSaveLocations(); + //void testGetLocationInfo(); + //void testGetCityGroupIdByName(); + //void testGetCityOffsetByNameAndId(); +private: + void doCleanup(); +private: + TimezoneClient *mTimezoneClient; + int mError; +}; + +/*! + This function will be called before each testfunction is executed. + */ +void TestTimezoneClient::init() +{ + TRAPD(mError, mTimezoneClient = TimezoneClient::getInstance()); + Q_UNUSED(mError) + + Q_ASSERT(!mError); + Q_ASSERT(mTimezoneClient); +} + +/*! + This function will be called after every testfunction. + */ +void TestTimezoneClient::cleanup() +{ + if (!mTimezoneClient->isNull()) { + mTimezoneClient->deleteInstance(); + } +} + +/*! + Tests the api TimeZoneClient::getLocations + */ +void TestTimezoneClient::testGetLocations() +{ + QList locationList = mTimezoneClient->getLocations(); + QVERIFY(0 < locationList.count()); +} + +/*! + Tests the api TestTimezoneClient::getCurrentZoneInfoL + */ +void TestTimezoneClient::testGetCurrentZoneInfoL() +{ + //LocationInfo testLocationInfo = {"Canada", "Toronto", "", -300, 1528, true}; + + LocationInfo testLocationInfo = {"India", "Chennai", "", 330, 1944, 45, false}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + LocationInfo retrievedLocationInfo; + retrievedLocationInfo = mTimezoneClient->getCurrentZoneInfoL(); + + // Check the location info set with retrieved info. + QString temp = retrievedLocationInfo.countryName; + temp = retrievedLocationInfo.cityName; + QVERIFY(testLocationInfo.countryName == retrievedLocationInfo.countryName); + QVERIFY(testLocationInfo.cityName == retrievedLocationInfo.cityName); + QVERIFY(testLocationInfo.timezoneId == retrievedLocationInfo.timezoneId); +} + +/*! + Tests the api TestTimezoneClient::setAsCurrentLocation. + */ +void TestTimezoneClient::testSetAsCurrentLocation() +{ + LocationInfo testLocationInfo = {"India", "Kolkata", "", 330, 1944, false}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + LocationInfo retrievedLocationInfo; + retrievedLocationInfo = mTimezoneClient->getCurrentZoneInfoL(); + + // Check the location info set with retrieved info. + QVERIFY(testLocationInfo.countryName == retrievedLocationInfo.countryName); + QVERIFY(testLocationInfo.cityName == retrievedLocationInfo.cityName); + QVERIFY(testLocationInfo.listImageName + == retrievedLocationInfo.listImageName); + QVERIFY(testLocationInfo.zoneOffset == retrievedLocationInfo.zoneOffset); + QVERIFY(testLocationInfo.timezoneId == retrievedLocationInfo.timezoneId); + QVERIFY(testLocationInfo.dstOn == retrievedLocationInfo.dstOn); +} + +/*! + Tests the api TimeZoneClient::dstOn. + */ +void TestTimezoneClient::testSetAsCurrentLocationWithDst() +{ + //QDateTime currentDateTime(QDate(2009, 05, 15), QTime(12, 30)); + //QDateTime currentDateTime(QDate(2010, 03, 28), QTime(4, 0)); + QDateTime currentDateTime(QDate(2010, 03, 31), QTime(8, 30)); + mTimezoneClient->setDateTime(currentDateTime); + LocationInfo testLocationInfo = {"Finland", "Helsinki", "", 180, 2760, 33, + true}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + LocationInfo retrievedLocationInfo; + retrievedLocationInfo = mTimezoneClient->getCurrentZoneInfoL(); + + // Check the location info set with retrieved info. + QVERIFY(testLocationInfo.countryName == retrievedLocationInfo.countryName); + QVERIFY(testLocationInfo.cityName == retrievedLocationInfo.cityName); + QVERIFY(testLocationInfo.listImageName + == retrievedLocationInfo.listImageName); + QVERIFY(testLocationInfo.zoneOffset == retrievedLocationInfo.zoneOffset); + QVERIFY(testLocationInfo.timezoneId == retrievedLocationInfo.timezoneId); + QVERIFY(testLocationInfo.dstOn == retrievedLocationInfo.dstOn); +} + +/*! + Tests the api TestTimezoneClient::isDSTOnL + */ +void TestTimezoneClient::testIsDSTOnL() +{ + LocationInfo testLocationInfo = + {"Finland", "Helsinki", "", 180, 2760, 33, true}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + QDateTime dstOnDate(QDate(2010, 03, 31), QTime(8, 30)); + mTimezoneClient->setDateTime(dstOnDate); + QVERIFY(true == mTimezoneClient->isDSTOnL(2760)); + + QDateTime dstOffDate(QDate(2010, 03, 27), QTime(8, 30)); + mTimezoneClient->setDateTime(dstOffDate); + QVERIFY(false == mTimezoneClient->isDSTOnL(2760)); + + LocationInfo testLocationInfo1 = {"India", "Kolkata", "", 330, 1944, false}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo1); + QVERIFY(false == mTimezoneClient->isDSTOnL(1944)); +} + +/*! + Tests the api TimeZoneClient::getStandardOffset + */ +void TestTimezoneClient::testGetStandardOffset() +{ + // For India + int expectedOffset = 330; + int offset = mTimezoneClient->getStandardOffset(1944); + QVERIFY(expectedOffset == offset); + + // For London + expectedOffset = 345; + offset = mTimezoneClient->getStandardOffset(1936); + QVERIFY(expectedOffset == offset); +} + +/*! + Tests the api TimeZoneClient::timeUpdateOn + */ +void TestTimezoneClient::testTimeUpdateOn() +{ + mTimezoneClient->setTimeUpdateOn(true); + QVERIFY(true == mTimezoneClient->timeUpdateOn()); + mTimezoneClient->setTimeUpdateOn(false); + QVERIFY(false == mTimezoneClient->timeUpdateOn()); +} + +/*! + Tests the api TimeZoneClient::timeUpdateOn + */ +void TestTimezoneClient::testSetTimeUpdateOn() +{ + bool timeUpdate = mTimezoneClient->timeUpdateOn(); + mTimezoneClient->setTimeUpdateOn(!timeUpdate); + + QVERIFY(timeUpdate != mTimezoneClient->timeUpdateOn()); +} + +/*! + Tests the api TimeZoneClient::setDateTime + */ +void TestTimezoneClient::testSetDateTime() +{ + QDateTime currentDateTime = QDateTime::currentDateTime(); + + QDateTime expectedDateTime1 = currentDateTime.addDays(10).addSecs(3600); + mTimezoneClient->setDateTime(expectedDateTime1); + QVERIFY(currentDateTime.date() != QDate::currentDate()); + QVERIFY(currentDateTime.time().toString("hh:mm ap") != QTime::currentTime().toString("hh:mm ap")); + QVERIFY(expectedDateTime1.date() == QDate::currentDate()); + QVERIFY(expectedDateTime1.time().toString("hh:mm ap") == QTime::currentTime().toString("hh:mm ap")); + + QDateTime expectedDateTime2 = currentDateTime.addDays(100).addSecs(7200); + + mTimezoneClient->setDateTime(expectedDateTime2); + QVERIFY(expectedDateTime2.date() == QDate::currentDate()); + QVERIFY(expectedDateTime2.time().toString("hh:mm ap") == QTime::currentTime().toString("hh:mm ap")); +} + +/*! + Tests the api TimeZoneClient::getAllTimeZoneOffsets + */ +void TestTimezoneClient::testGetAllTimeZoneOffsets() +{ + int indiaOffset = 330; + QList offsetList = mTimezoneClient->getAllTimeZoneOffsets(); + QVERIFY(offsetList.count()); + QVERIFY(offsetList.contains(indiaOffset)); +} + +/*! + Tests the api TimeZoneClient::getCountriesForUTCOffset + */ +void TestTimezoneClient::testGetCountriesForUTCOffset() +{ + int offset = 330; + QList expectedList; + expectedList.append("India"); + expectedList.append("Sri Lanka"); + QList countryList = + mTimezoneClient->getCountriesForUTCOffset(offset); + int count = countryList.count(); + QVERIFY(expectedList.count() == count); + + QList nameList; + for(int i = 0; i < count; i++) { + nameList.append(countryList[i].countryName); + } + for(int i = 0; i < count; i++) { + QVERIFY(nameList.contains(expectedList[i])); + } + + // TODO: // Add negative + offset = -12; + countryList.clear(); + countryList = mTimezoneClient->getCountriesForUTCOffset(offset); + QVERIFY(!countryList.count()); +} + +/*! + Tests the api TimeZoneClient::addCity + */ +void TestTimezoneClient::testAddCity() +{ + QString cityName("Cochin"); + LocationInfo newLocInfo; + TRAPD(err, newLocInfo = mTimezoneClient->addCity(1944, cityName, 45)); + if(err == KErrAlreadyExists) { + // City is already existing. + } + QList &list = mTimezoneClient->getLocations(); + QList nameList; + for(int i = 0; i < list.count(); i++) { + nameList.append(list[i].cityName); + } + QVERIFY(nameList.contains(cityName)); +} + +/*! + Tests the api TimeZoneClient::checkForDstChange + */ +void TestTimezoneClient::testCheckForDstChange() +{ + LocationInfo testLocationInfo = + {"Finland", "Helsinki", "", 180, 2760, 33, true}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + // Finland, Helsinki + // DST started on Sunday, 28 March 2010, 03:00 local standard time + // DST ends on Sunday, 31 October 2010, 04:00 local daylight time + QDateTime dstOnDate(QDate(2010, 10, 31), QTime(3, 45)); + mTimezoneClient->setDateTime(dstOnDate); + mTimezoneClient->setAsCurrentLocationL(testLocationInfo); + + AlarmInfo alarmDetails; + alarmDetails.origAlarmTime = QTime::currentTime().addSecs(3600); + alarmDetails.alarmDateTime = QDate::currentDate(); + alarmDetails.repeatType = AlarmRepeatType(0); + alarmDetails.alarmDay = 1; + bool dstChange = mTimezoneClient->checkForDstChange(alarmDetails); + QVERIFY(dstChange == true); + + QDateTime dstOffDate(QDate(2010, 10, 31), QTime(04, 01)); + mTimezoneClient->setDateTime(dstOffDate); + AlarmInfo alarmDetails1; + alarmDetails1.origAlarmTime = QTime::currentTime().addSecs(3600); + alarmDetails1.alarmDateTime = QDate::currentDate(); + alarmDetails1.repeatType = AlarmRepeatType(0); + alarmDetails1.alarmDay = 1; + dstChange = mTimezoneClient->checkForDstChange(alarmDetails1); + QVERIFY(dstChange == false); + + LocationInfo testLocationInfo1 = + {"India", "Chennai", "", 330, 1944, 45, false}; + mTimezoneClient->setAsCurrentLocationL(testLocationInfo1); + mTimezoneClient->setDateTime(dstOnDate); + mTimezoneClient->setAsCurrentLocationL(testLocationInfo1); + dstChange = mTimezoneClient->checkForDstChange(alarmDetails1); + QVERIFY(dstChange == false); +} + +/*! + Tests the api TimeZoneClient::getSavedLocations + */ +void TestTimezoneClient::testGetSavedLocations() +{ + doCleanup(); + mTimezoneClient->setDateTime(QDateTime(QDate(2010, 8, 15), QTime(9,30))); + + QList locationList = mTimezoneClient->getSavedLocations(); + int firstcount = locationList.count(); + LocationInfo testLocationInfo1 = {"Japan", "Tokyo", "", 540, 2192, 53, + false}; + QList testList; + testList << testLocationInfo1; + mTimezoneClient->saveLocations(testList); + + locationList.clear(); + locationList = mTimezoneClient->getSavedLocations(); + int cnt = locationList.count(); + QVERIFY((firstcount + 1) == locationList.count()); + + QList nameList; + int index = 0; + for(int i = 0; i < locationList.count(); i++) { + if(testLocationInfo1.countryName == locationList[i].countryName) { + index = i; + } + } + QVERIFY(testLocationInfo1.countryName == locationList[index].countryName); + QVERIFY(testLocationInfo1.cityName == locationList[index].cityName); + QVERIFY(testLocationInfo1.listImageName + == locationList[index].listImageName); + QVERIFY(testLocationInfo1.zoneOffset == locationList[index].zoneOffset); + QVERIFY(testLocationInfo1.timezoneId == locationList[index].timezoneId); + QVERIFY(testLocationInfo1.dstOn == locationList[index].dstOn); + + LocationInfo testLocationInfo2 = {"Singapore", "Singapore", "", 480, 2144, 87, false}; + LocationInfo testLocationInfo3 = {"Finland", "Helsinki", "", 180, 2760, 33, true}; + testList << testLocationInfo2 + << testLocationInfo3; + mTimezoneClient->saveLocations(testList); + locationList.clear(); + locationList = mTimezoneClient->getSavedLocations(); + QVERIFY((firstcount + 3) == locationList.count()); + doCleanup(); + +} + +/*! + Tests the api TimeZoneClient::saveLocations. + */ +void TestTimezoneClient::testSaveLocations() +{ + doCleanup(); + LocationInfo testLocationInfo = {"India", "Kolkata", "", 330, 1944, 45, false}; + QList testList; + testList << testLocationInfo; + mTimezoneClient->saveLocations(testList); + QList resultantList = mTimezoneClient->getSavedLocations(); + + // Check the location info saved with retrieved info. + QVERIFY(resultantList.at(0).countryName == testList.at(0).countryName); + QVERIFY(resultantList.at(0).cityName == testList.at(0).cityName); + QVERIFY(resultantList.at(0).listImageName == testList.at(0).listImageName); + QVERIFY(resultantList.at(0).zoneOffset == testList.at(0).zoneOffset); + QVERIFY(resultantList.at(0).timezoneId == testList.at(0).timezoneId); + QVERIFY(resultantList.at(0).dstOn == testList.at(0).dstOn); + doCleanup(); +} +void TestTimezoneClient::doCleanup() +{ + // Cleanup + QString fileName("c:\\data\\clock\\cityInfo.dat"); + QFile cityInfoFile(fileName); + cityInfoFile.remove(); +} +/* +! + Tests the api TimeZoneClient::getLocationInfo. + +void TestTimezoneClient::testGetLocationInfo() +{ + LocationInfo gotInfo; + LocationInfo testInfo = {"India", "Mumbai", "", 330, 1624, false}; + mTimezoneClient->getLocationInfo(45, 2, gotInfo); + + // Check the location info got by specifying groupId and cityIndex + // with testInfo. + QVERIFY(testInfo.countryName == gotInfo.countryName); + QVERIFY(testInfo.cityName == gotInfo.cityName); + QVERIFY(testInfo.listImageName == gotInfo.listImageName); + QVERIFY(testInfo.zoneOffset == gotInfo.zoneOffset); + QVERIFY(testInfo.timezoneId == gotInfo.timezoneId); + QVERIFY(testInfo.dstOn == gotInfo.dstOn); +} + +! + Test the api TimeZoneClient::testGetCityGroupIdByName. + +void TestTimezoneClient::testGetCityGroupIdByName() +{ + int retrievedGroupId = mTimezoneClient->getCityGroupIdByName("India"); + mTimezoneClient->get + // Check the retrieved city group id with actual id. + QVERIFY(45 == retrievedGroupId); +} + +! + Test the api TestTimezoneClient::getCityOffsetByNameAndId. + +void TestTimezoneClient::testGetCityOffsetByNameAndId() +{ + int retrievedCityOffset = + mTimezoneClient->getCityOffsetByNameAndId("Mumbai",1624); + + // Check the retrieved city offset with actual offset. + QVERIFY(1 == retrievedCityOffset); +} +*/ + +QTEST_MAIN(TestTimezoneClient) +#include "unittest_timezoneclient.moc" + +// End of file --Don't remove this.