homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/src/t_applibrarystate.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/src/t_applibrarystate.cpp Mon Sep 20 10:19:07 2010 +0300
@@ -0,0 +1,441 @@
+/*
+* 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: Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <hbaction.h>
+#include <hblistviewitem.h>
+#include <qscopedpointer>
+#include <hbmessagebox.h>
+
+#include "hsapplibrarystate.h"
+#include "hscollectionstate.h"
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuview.h"
+#include "hsmenuevent.h"
+#include "hsallcollectionsstate.h"
+#include "hsmenueventtransition.h"
+#include "hsallappsstate.h"
+#include "hsinstalledappsstate.h"
+#include "hsoperatorhandler_p.h"
+#include "hsoperatorhandler.h"
+#include "hsmenuservice.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_applibrarystate.h"
+
+#include "hsmenumodetransition.h"
+
+#ifdef QT_EXTENSIONS
+#include <XQSettingsManager>
+
+const int IncludeOperatorStore = 0x00000001;
+const int RemoveOviStore = 0x00000008;
+//const char *operatorStoreIconPath
+// = "z:/private/20022F35/customsvg/operatorstore.svg";
+
+void MenuStatesTest::OperatorHandler_storesPresent()
+{
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+
+ bool value = oviHandler.m_q->storeValue(&man, IncludeOperatorStore);
+ oviHandler.m_q->mOperatorStorePresent = value;
+ QCOMPARE(oviHandler.operatorStorePresent(), value);
+
+ bool value1 = !oviHandler.m_q->storeValue(&man, RemoveOviStore);
+ oviHandler.m_q->mOviStorePresent = value1;
+ QCOMPARE(oviHandler.oviStorePresent(), value1);
+
+}
+
+void MenuStatesTest::OperatorHandler_first()
+{
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+
+ bool value = oviHandler.m_q->operatorStoreFirst(&man);
+ oviHandler.m_q->mOperatorStoreFirst = value;
+ QCOMPARE(oviHandler.operatorStoreFirst(), value);
+}
+
+void MenuStatesTest::OperatorHandler_type()
+{
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+
+ HsOperatorHandlerPrivate::HsStoreType value
+ = oviHandler.m_q->operatorStoreType(&man);
+ QVERIFY(value == HsOperatorHandlerPrivate::ApplicationType
+ || value == HsOperatorHandlerPrivate::UrlType
+ || value == HsOperatorHandlerPrivate::NoneType);
+}
+
+void MenuStatesTest::OperatorHandler_createAction()
+{
+ HsOperatorHandler oviHandler;
+ oviHandler.m_q->mIcon = HbIcon();
+ HbAction *action = oviHandler.prepareOperatorStoreAction(new HbAction);
+ QVERIFY(action->icon().isNull());
+}
+
+#endif//QT_EXTENSIONS
+
+
+
+
+class HsMainWindowMock : public HsMainWindow
+{
+ virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+ Q_UNUSED(view);
+ // do nothing
+}
+
+void MenuStatesTest::cleanup()
+{
+ qApp->processEvents();
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+ {
+ QString qApplications(hbTrId("txt_applib_title_applications"));
+
+ QScopedPointer<HsAppLibraryState > appLibraryState(new HsAppLibraryState);
+
+ QCOMPARE(appLibraryState->mMenuViewBuilder.currentView()->title(),
+ qApplications);
+ QVERIFY(appLibraryState->mAllAppsState);
+ QVERIFY(appLibraryState->mAllCollectionsState);
+ }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_historySlots()
+{
+#ifdef Q_OS_SYMBIAN
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+ {
+ HsAppLibraryState appLibrary;
+
+ appLibrary.allCollectionsStateEntered();
+ QCOMPARE(qobject_cast<QAbstractState *>(appLibrary.mAllCollectionsState),
+ appLibrary.mHistoryTransaction->targetState());
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+ qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+ qobject_cast<QAbstractState *>(appLibrary.mAllCollectionsState));
+
+ appLibrary.allAppsStateEntered();
+ QCOMPARE(qobject_cast<QAbstractState *>(appLibrary.mAllAppsState),
+ appLibrary.mHistoryTransaction->targetState());
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+ qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+ qobject_cast<QAbstractState *>(appLibrary.mAllAppsState));
+
+ appLibrary.collectionStateEntered();
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+ qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+ QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+ qobject_cast<QAbstractState *>(appLibrary.mCollectionState));
+
+ }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_backSteppingAction()
+{
+#ifdef Q_OS_SYMBIAN
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+ {
+ QScopedPointer<HbMainWindow> wind(new HbMainWindow);
+ //create statemachine to perform transitions
+ QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+ HsAppLibraryState *appLibrary = new HsAppLibraryState(machine.data());
+
+ machine->setInitialState(appLibrary);
+
+ machine->start();
+
+ qApp->sendPostedEvents();
+ //initiate transition from collection state
+ appLibrary->mCollectionState->openAppLibrary();
+
+ qApp->sendPostedEvents();
+
+ QVERIFY(appLibrary->mAllAppsState->mMenuView->view()->menu());
+ machine->stop();
+ qApp->removePostedEvents(0);
+ disconnect(appLibrary,SIGNAL(initialize()),this,SLOT(appLibraryEntered()));
+
+ qApp->processEvents();
+ }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_clearToolbarLatch()
+{
+#ifdef Q_OS_SYMBIAN
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+ {
+ HsAppLibraryState appLibrary;
+ appLibrary.mMenuViewBuilder.allAppsAction()->setChecked(true);
+ appLibrary.mMenuViewBuilder.toolBarActionGroup()->checkedAction()->setChecked(true);
+ appLibrary.clearToolbarLatch();
+ QVERIFY(appLibrary.mMenuViewBuilder.toolBarActionGroup()->checkedAction() == NULL);
+ }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef QT_EXTENSIONS
+void MenuStatesTest::ApplicationLibraryState_oviStoreAction()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+ HsAppLibraryState appLibrary;
+ QVERIFY(appLibrary.oviStoreAction()==0);
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_icon()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+ HbIcon testIcon = oviHandler.m_q->createIcon(&man);
+ oviHandler.m_q->mIcon = testIcon;
+ QCOMPARE(oviHandler.icon(), testIcon);
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_text()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+
+ QString testText = oviHandler.m_q->operatorStoreTitle(&man);
+ oviHandler.m_q->mOperatorStoreTitle = testText;
+ QCOMPARE(oviHandler.text(), testText);
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_action()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+ HsOperatorHandler oviHandler;
+ HbIcon testIcon;
+ oviHandler.m_q->mIcon = testIcon;
+ oviHandler.m_q->mOperatorEntry = new CaEntry;;
+ QCOMPARE(oviHandler.icon(), testIcon);
+ oviHandler.action();
+ QCOMPARE(oviHandler.icon(), testIcon);
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_entry()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+ HsOperatorHandler oviHandler;
+ XQSettingsManager man;
+
+ CaEntry *testAppEntry = oviHandler.m_q->createAppEntry(&man);
+ oviHandler.m_q->mOperatorEntry = testAppEntry;
+ //if entry is NULL then tahts because there were no key in CR
+ //if it is not NULL then it must be application
+ QVERIFY(!testAppEntry || testAppEntry->entryTypeName() ==
+ Hs::applicationTypeName);
+
+ CaEntry *testUrlEntry = oviHandler.m_q->createUrlEntry(&man);
+ oviHandler.m_q->mOperatorEntry = testUrlEntry;
+ //similar as for application above
+ QVERIFY(!testUrlEntry || testUrlEntry->entryTypeName() ==
+ Hs::urlTypeName);
+
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_noCrWriteAccess()
+{
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+ {
+// XQSettingsManager *crManager = new XQSettingsManager;
+// XQCentralRepositorySettingsKey urlKey(AppLibUid, OperatorUrl);
+// QVariant urlVarian = crManager->readItemValue(
+// urlKey, XQSettingsManager::TypeString);
+// QString dbg = urlVarian.toString();
+// bool result = crManager->writeItemValue(urlKey, QVariant("test"));
+// QCOMPARE(result, false);
+ }
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+#endif//QT_EXTENSIONS
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsBaseViewState_createApplicationLaunchFailMessage()
+{
+#ifdef Q_OS_SYMBIAN
+ User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+ {
+ HsMenuViewBuilder menuViewBuilder;
+ HsMenuModeWrapper menuMode;
+ HsMainWindow mainWindow;
+
+ HsAllAppsState viewState(menuViewBuilder, menuMode, mainWindow);
+
+ int errCode = -333;
+ int dummyItemId = 555;
+ viewState.createApplicationLaunchFailMessage(errCode,dummyItemId);
+ QVERIFY(!viewState.mApplicationLaunchFailMessage.isNull());
+
+ QVERIFY(viewState.mApplicationLaunchFailMessage->close());
+ QTest::qWait(2000);
+ }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+ __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+QTEST_MAIN(MenuStatesTest)