diff -r dcd0ca396fa1 -r 5aadd1120515 clock/tsrc/unittest_clockengines/src/unittest_clockengines.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock/tsrc/unittest_clockengines/src/unittest_clockengines.cpp Fri Oct 15 12:10:36 2010 +0530 @@ -0,0 +1,614 @@ +/* + * 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 +#include + +// User includes +#include "clockserverclt.h" +#include "clockserver.h" +#include "clocktimesourceinterface.h" +#include "clocktimesourceinterface.hrh" +#include "clocktimezoneresolver.h" +#include "clockdatatypes.h" +#include "unittest_clockengines.h" + +// constants +const int KNitzPluginId(0x200159A5); +static const TUid KInvalidID = {0xA001234C}; +const int KClockServerMajorVN(1); +const int KClockServerMinorVN(0); +const int KClockServerBuildVN(1); + +/*! + This function will be called before each testfunction is executed. + */ +void TestClockEngines::init() +{ + // Create a clockserver session. + TRAPD(mError, mClockServerCltHandle = new RClkSrvInterface()); + mClockServerCltHandle->Connect(); + Q_UNUSED(mError) + + Q_ASSERT(!mError); + Q_ASSERT(mClockServerCltHandle); +} + +/*! + This function will be called after every testfunction. + */ +void TestClockEngines::cleanup() +{ + if (mClockServerCltHandle) { + delete mClockServerCltHandle; + mClockServerCltHandle = NULL; + } +} + +/*! + Tests the api TestTimezoneClient::testConnectToServer. + */ +void TestClockEngines::testConnectToServer() +{ + int result = mClockServerCltHandle->Connect(); + QVERIFY(KErrNone == result); + + mClockServerCltHandle->Close(); +} + +/*! + Tests the api TestTimezoneClient::testActiveProtocol. + */ +void TestClockEngines::testActiveProtocol() +{ + int errorCode(KErrNotFound); + + errorCode = mClockServerCltHandle->Connect(); + if (errorCode == KErrNone) { + // To activate nitz protocol + errorCode = mClockServerCltHandle->ActivateProtocol(KNitzPluginId); + mClockServerCltHandle->Close(); + QVERIFY(KErrNone == errorCode); + } + else { + QVERIFY(false); + } +} + +/*! + Tests the api TestTimezoneClient::testActiveProtocol. + */ +void TestClockEngines::testActivateAllProtocols() +{ + TInt errorCode(KErrNotFound); + + errorCode = mClockServerCltHandle->Connect(); + if (errorCode == KErrNone) { + // To activate nitz protocol + errorCode = mClockServerCltHandle->ActivateAllProtocols();; + mClockServerCltHandle->Close(); + QVERIFY(KErrNone == errorCode); + } + else { + QVERIFY(false); + } +} + +/*! + Tests the api TestTimezoneClient::testIsProtocolActive. + */ +void TestClockEngines::testIsProtocolActive() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + if (KErrNone == errorCode) { + int protocolActive(false); + + errorCode = mClockServerCltHandle->IsProtocolActive(KNitzPluginId, protocolActive); + mClockServerCltHandle->Close(); + QVERIFY(true == protocolActive); + } + else{ + QVERIFY(false); + } +} + +/*! + Tests the api TestTimezoneClient::testGetProtocolInfo. + */ +void TestClockEngines::testGetProtocolInfo() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + errorCode = mClockServerCltHandle->ActivateProtocol(KNitzPluginId); + if (KErrNone == errorCode) { + STimeAttributes timeAttributes; + errorCode = mClockServerCltHandle->GetProtocolInfo(0x200159A5, timeAttributes); + } + QVERIFY(KErrNone == errorCode); + mClockServerCltHandle->Close(); + } +} + +/*! + Tests the api TestTimezoneClient::testGetCurrentMcc. + */ +void TestClockEngines::testGetCurrentMcc() +{ + + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + int currentMcc; + errorCode = mClockServerCltHandle->GetCurrentMcc(currentMcc); + mClockServerCltHandle->Close(); + QVERIFY(KErrNone == errorCode); + } +} + +/*! + Tests the api TestTimezoneClient::testGetCurrentTimeZoneId. + */ +void TestClockEngines::testGetCurrentTimeZoneId() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + errorCode = mClockServerCltHandle->ActivateProtocol(KNitzPluginId); + if (KErrNone == errorCode) { + int currentTimeZoneId; + errorCode = mClockServerCltHandle->GetCurrentTimeZondId(currentTimeZoneId); + QVERIFY(KErrNone == errorCode); + } + mClockServerCltHandle->Close(); + } +} + +/*! + Tests the api TestTimezoneClient::testDeActivateProtocol. + */ +void TestClockEngines::testDeActivateProtocol() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + errorCode = mClockServerCltHandle->DeActivateProtocol(KNitzPluginId); + mClockServerCltHandle->Close(); + QVERIFY(KErrNone == errorCode); + } +} + +/*! + Tests the api TestTimezoneClient::testDeActivateProtocol. + */ +void TestClockEngines::testDeActivateAllProtocols() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + if (KErrNone == errorCode) { + errorCode = mClockServerCltHandle->ActivateAllProtocols(); + + if (KErrNone == errorCode) { + errorCode = mClockServerCltHandle->DeActivateAllProtocols(); + mClockServerCltHandle->Close(); + QVERIFY(KErrNone == errorCode); + } + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone1. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone1() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 1944; + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth( EJanuary ), 27, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 330; + mTimeInfo.iDstOffset = 0; + mMCC = _L("404"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } +} +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone2. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone2() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth(EJanuary), 27, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 300; + mTimeInfo.iDstOffset = 0; + + mMCC = _L( "404" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone3. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone3() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth( EJanuary ), 27, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 330; + mTimeInfo.iDstOffset = 0; + mMCC = _L("310"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone4. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone4() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 3048; + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth(EJanuary), 27, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 300; + mTimeInfo.iDstOffset = 0; + mMCC = _L( "-1" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone5. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone5() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 1944; + + if(NULL != mTzResolver){ + mTimeInfo.iUtcDateTime = TTime(KErrNotFound).DateTime();//TDateTime( 2008, TMonth( EJanuary ), 27, 10, 0, 0, 0 ); + mTimeInfo.iTimeZoneOffset = KErrNotFound; + mTimeInfo.iDstOffset = KErrNotFound; + mMCC = _L( "404" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone6. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone6() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TTime(KErrNotFound).DateTime();//TDateTime( 2008, TMonth( EJanuary ), 27, 10, 0, 0, 0 ); + mTimeInfo.iTimeZoneOffset = KErrNotFound; + mTimeInfo.iDstOffset = KErrNotFound; + + mMCC = _L("-1"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone7. + */ +void TestClockEngines::tesTimeZoneResolverSingleZone7() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 2744; + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth(EApril), 2, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 0; + mTimeInfo.iDstOffset = 60; + mMCC = _L( "235" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverMultiZone1. +*/ +void TestClockEngines::tesTimeZoneResolverMultiZone1() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 2416; + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth(EApril), 2, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 480; + mTimeInfo.iDstOffset = 0; + mMCC = _L( "505" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } + +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone2. +*/ +void TestClockEngines::tesTimeZoneResolverMultiZone2() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if(NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth( EApril ), 2, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 480; + mTimeInfo.iDstOffset = 0; + mMCC = _L("9999"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } + +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone3. +*/ +void TestClockEngines::tesTimeZoneResolverMultiZone3() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TTime(KErrNotFound).DateTime(); + mTimeInfo.iTimeZoneOffset = KErrNotFound; + mTimeInfo.iDstOffset = KErrNotFound; + mMCC = _L("505"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } + +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone4. +*/ +void TestClockEngines::tesTimeZoneResolverMultiZone4() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TTime(KErrNotFound).DateTime(); + mTimeInfo.iTimeZoneOffset = KErrNotFound; + mTimeInfo.iDstOffset = KErrNotFound; + mMCC = _L("9999"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone5. +*/ +void TestClockEngines::tesTimeZoneResolverMultiZone5() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2010, TMonth(EApril), 2, 10, 0, 0, 0); + mTimeInfo.iTimeZoneOffset = 600; + mTimeInfo.iDstOffset = 1; + mMCC = _L( "505" ); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNotFound == errorCode); + QVERIFY(KErrNotFound == mTzId); + delete mTzResolver; + } +} + +/*! + Tests the api TestTimezoneClient::tesTimeZoneResolverSingleZone5. +*/ +void TestClockEngines::testTimeZoneResolverSingleZoneWrongMCC() +{ + int errorCode(KErrNotFound); + mTzResolver = CClockTimeZoneResolver::NewL(); + int actualTzId = 1944; + if (NULL != mTzResolver) { + mTimeInfo.iUtcDateTime = TDateTime(2008, TMonth(EJanuary), 27, 10, 0, 0, 0);; + mTimeInfo.iTimeZoneOffset = 330; + mTimeInfo.iDstOffset = 0; + mMCC = _L("9999"); + + errorCode = mTzResolver->GetTimeZoneL(mTimeInfo, mMCC, mTzId); + QVERIFY(KErrNone == errorCode); + QVERIFY(actualTzId == mTzId); + delete mTzResolver; + } +} + +//********************** TIMESOURCE INTERFACE****************************// + +/*! + Tests the api TestTimezoneClient::NotifyTimeChangeL. +*/ +void TestClockEngines::NotifyTimeChangeL( CClockTimeSourceInterface& plugin ) +{ + Q_UNUSED(plugin) +} + +/*! + Tests the api TestTimezoneClient::testVersion. +*/ +void TestClockEngines::testVersion() +{ + int errorCode = mClockServerCltHandle->Connect(); + if (KErrNone == errorCode) { + TVersion testVersion = mClockServerCltHandle->Version(); + mClockServerCltHandle->Close(); + + QVERIFY(KClockServerBuildVN == testVersion.iBuild); + QVERIFY(KClockServerMajorVN == testVersion.iMajor); + QVERIFY(KClockServerMinorVN == testVersion.iMinor); + } +} + +/*! + Tests the api TestTimezoneClient::testCreatePluginInstance. +*/ +void TestClockEngines::testCreatePluginInstance() +{ + mClkTimeUpdaterInterface = CClockTimeSourceInterface::NewL(TUid::Uid(KNitzPluginId), this); + Q_ASSERT(mClkTimeUpdaterInterface); + delete mClkTimeUpdaterInterface; +} + +/*! + Tests the api TestTimezoneClient::testGetNitzData. +*/ +void TestClockEngines::testGetNitzData() +{ + mNitzInfo.iUtcDateTime = TTime(KErrNotFound).DateTime(); + mNitzInfo.iTimeZoneOffset = KErrNotFound; + mNitzInfo.iDstOffset = KErrNotFound; + + mClkTimeUpdaterInterface = CClockTimeSourceInterface::NewL(TUid::Uid(KNitzPluginId), this); + + Q_ASSERT(mClkTimeUpdaterInterface); + if (NULL != mClkTimeUpdaterInterface) { + mClkTimeUpdaterInterface->GetTimeInformationL(EUTCTime, &mNitzInfo); + mClkTimeUpdaterInterface->GetTimeInformationL(ETZOffset, &mNitzInfo); + mClkTimeUpdaterInterface->GetTimeInformationL(EDSTOffset, &mNitzInfo); + + qDebug() << "UtcDate: " << QDate(mNitzInfo.iUtcDateTime.Year(),mNitzInfo.iUtcDateTime.Month(),mNitzInfo.iUtcDateTime.Day()); + qDebug() << "UtcTime: " << QTime(mNitzInfo.iUtcDateTime.Hour(),mNitzInfo.iUtcDateTime.Minute(),mNitzInfo.iUtcDateTime.Second()); + qDebug() << "Timzone Offset: " << mNitzInfo.iTimeZoneOffset.Int(); + qDebug() << "DST Offset: " << mNitzInfo.iDstOffset.Int(); + + delete mClkTimeUpdaterInterface; + } +} + +/*! + Tests the api TestTimezoneClient::testInvalidPlugin. +*/ +void TestClockEngines::testInvalidPlugin() +{ + mClkTimeUpdaterInterface = CClockTimeSourceInterface::NewL(KInvalidID, this); + QVERIFY(NULL == mClkTimeUpdaterInterface); +} + +/*! + Tests the api TestTimezoneClient::testTimeUpdateOn. +*/ +void TestClockEngines::testTimeUpdateOn() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + int timeUpdateOn( EFalse ); + + // Activate Nitz plugin. + errorCode = mClockServerCltHandle->ActivateProtocol(KNitzPluginId); + if (KErrNone == errorCode) { + // Check if auto time update is on. + errorCode = mClockServerCltHandle->IsAutoTimeUpdateOn(timeUpdateOn); + QVERIFY(true == timeUpdateOn); + } + mClockServerCltHandle->Close(); + } +} + +/*! + Tests the api TestTimezoneClient::testInvalidPlugin. +*/ +void TestClockEngines::testTimeUpdateOff() +{ + // First connect and test for it. + int errorCode = mClockServerCltHandle->Connect(); + + if (KErrNone == errorCode) { + int timeUpdateOn( ETrue ); + + // Activate Nitz plugin. + errorCode = mClockServerCltHandle->DeActivateProtocol(KNitzPluginId); + if (KErrNone == errorCode) { + // Check if auto time update is on. + errorCode = mClockServerCltHandle->IsAutoTimeUpdateOn(timeUpdateOn); + QVERIFY(false == timeUpdateOn); + } + mClockServerCltHandle->Close(); + } +} + +QTEST_MAIN(TestClockEngines) + +// End of file --Don't remove this.