--- /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 <QtTest/QtTest>
+
+// 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<LocationInfo> 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<int> offsetList = mTimezoneClient->getAllTimeZoneOffsets();
+ QVERIFY(offsetList.count());
+ QVERIFY(offsetList.contains(indiaOffset));
+}
+
+/*!
+ Tests the api TimeZoneClient::getCountriesForUTCOffset
+ */
+void TestTimezoneClient::testGetCountriesForUTCOffset()
+{
+ int offset = 330;
+ QList<QString> expectedList;
+ expectedList.append("India");
+ expectedList.append("Sri Lanka");
+ QList<LocationInfo> countryList =
+ mTimezoneClient->getCountriesForUTCOffset(offset);
+ int count = countryList.count();
+ QVERIFY(expectedList.count() == count);
+
+ QList<QString> 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<LocationInfo> &list = mTimezoneClient->getLocations();
+ QList<QString> 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<LocationInfo> locationList = mTimezoneClient->getSavedLocations();
+ int firstcount = locationList.count();
+ LocationInfo testLocationInfo1 = {"Japan", "Tokyo", "", 540, 2192, 53,
+ false};
+ QList<LocationInfo> testList;
+ testList << testLocationInfo1;
+ mTimezoneClient->saveLocations(testList);
+
+ locationList.clear();
+ locationList = mTimezoneClient->getSavedLocations();
+ int cnt = locationList.count();
+ QVERIFY((firstcount + 1) == locationList.count());
+
+ QList<QString> 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<LocationInfo> testList;
+ testList << testLocationInfo;
+ mTimezoneClient->saveLocations(testList);
+ QList<LocationInfo> 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.