diff -r 594d59766373 -r 7d48bed6ce0c satui/satapp/tsrc/ut_satapp/src/ut_satappmenuprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satui/satapp/tsrc/ut_satapp/src/ut_satappmenuprovider.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,268 @@ +/* +* 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: Unit test for satappmainhandler +* +*/ + +#include +#include +#include + +#include "ut_satappmenuprovider.h" +#include "satappmenuprovider.h" +#include "satappaction.h" + + + +// -------------------------------------------------------- +// The unit tests begin here +// -------------------------------------------------------- + +Ut_SatAppMenuProvider::Ut_SatAppMenuProvider( + HbMainWindow* mainWindow, QObject *parent) + :QObject(parent) +{ + mMainWindow = mainWindow; +} + +void Ut_SatAppMenuProvider::testResetState() +{ + MenuProviderTest test(mMainWindow); + test.mMenu->resetState(); +} + +void Ut_SatAppMenuProvider::testSetUpMenu_data() +{ + QTest::addColumn("text"); + QTest::addColumn("menuitems"); + QTest::addColumn("selection"); + + QTest::newRow("t1") << "title" << 1 << 0; + QTest::newRow("t2") << "a very long title that does not fit to screen" << 2 << 1; + QTest::newRow("t3") << "manyrows" << 999 << 444; + QTest::newRow("t4") << "" << 1 << 0; + QTest::newRow("t5") << "" << 10 << 1; + QTest::newRow("t6") << "a" << 10 << 9; +} + +void Ut_SatAppMenuProvider::testSetUpMenu() +{ + QFETCH(QString, text); + QFETCH(int, menuitems); + QFETCH(int, selection); + + SatAppAction a(ESatSetUpMenuAction); + a.set(KeyText,text); + QStringList list; + for(int i=0; isetUpMenu(a); + + test.mItemIndexToBeSelected = selection; + test.simulateItemSelected(); + + QCOMPARE(a.response(), ESatSuccess); + QVERIFY(a.hasValue(KeySelection)); + +} + +void Ut_SatAppMenuProvider::testSetUpMenuAndReset() +{ + SatAppAction a(ESatSetUpMenuAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<setUpMenu(a); + + test.mMenu->resetState(); + + QCOMPARE(a.response(), ESatSuccess); + +} + +void Ut_SatAppMenuProvider::testSetUpMenuAndDelete() +{ + SatAppAction a(ESatSetUpMenuAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<setUpMenu(a); + } + // now SatAppMenuProvider is out of scope and deleted. + QCOMPARE(a.response(), ESatSuccess); +} + +void Ut_SatAppMenuProvider::testSelectItem_data() +{ + QTest::addColumn("text"); + QTest::addColumn("menuitems"); + QTest::addColumn("defaultitem"); + QTest::addColumn("selection"); + + QTest::newRow("t1") << "title" << 1 << 0 << 0; + QTest::newRow("t2") << "a very long title that does not fit to screen" << 2 << 0 << 1; + QTest::newRow("t3") << "manyrows" << 999 << 333 << 444 ; + QTest::newRow("t4") << "" << 3 << 2 << 1 ; + QTest::newRow("t5") << "" << 4 << 3 << 0 ; + QTest::newRow("t6") << "default out of range" << 5 << 7 << 1 ; +} + +void Ut_SatAppMenuProvider::testSelectItem() +{ + QFETCH(QString, text); + QFETCH(int, menuitems); + QFETCH(int, defaultitem); + QFETCH(int, selection); + + SatAppAction a(ESatSelectItemAction); + a.set(KeyText,text); + QStringList list; + for(int i=0; iselectItem(a); + + test.mItemIndexToBeSelected = selection; + test.simulateItemSelected(); + + QCOMPARE(a.response(), ESatSuccess); + QVERIFY(a.hasValue(KeySelection)); + +} + +void Ut_SatAppMenuProvider::testSelectItemAndBack() +{ + SatAppAction a(ESatSelectItemAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<selectItem(a); + test.simulateBackButtonClicked(); + + QCOMPARE(a.response(), ESatBackwardModeRequestedByUser); + +} + + +void Ut_SatAppMenuProvider::testSelectItemAndTimeout() +{ + SatAppAction a(ESatSelectItemAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<selectItem(a); + a.waitUntilCompleted(); // wait selectItem timeout + + QCOMPARE(a.response(), ESatNoResponseFromUser); + +} + +void Ut_SatAppMenuProvider::testSelectItemAndReset() +{ + SatAppAction a(ESatSelectItemAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<selectItem(a); + test.mMenu->resetState(); + + QCOMPARE(a.response(), ESatSuccess); + +} + +void Ut_SatAppMenuProvider::testSelectItemAndDelete() +{ + SatAppAction a(ESatSelectItemAction); + a.set(KeyText,"hello"); + QStringList list; + for(int i=0; i<10; ++i) {list<selectItem(a); + } + + // object deleted, blocking function should return safely + QCOMPARE(a.response(), ESatSuccess); +} + +// --------------------------------------------------------------- +// internal helper class +// --------------------------------------------------------------- + +MenuProviderTest::MenuProviderTest(HbMainWindow* mainWindow) +{ + mMenu = new SatAppMenuProvider(mainWindow,this); +} + +MenuProviderTest::~MenuProviderTest() +{ + cleanup(); +} + +void MenuProviderTest::loadMainview() +{ + mMenu->loadMainView(); +} + +void MenuProviderTest::simulateItemSelected() +{ + mMenu->menuItemSelected(mMenu->mSelectListWidget->item( + mItemIndexToBeSelected)); +} + +void MenuProviderTest::simulateBackButtonClicked() +{ + mMenu->mSoftKeyBackAction->trigger(); +} + + +void MenuProviderTest::cleanup() +{ + delete mMenu; + mMenu = 0; +} + +// End of file