phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtbuttonscontroller/unit_tests.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:16:48 +0300
changeset 77 2be0b271d017
parent 21 92ab7f8d0eab
child 76 cfea66083b62
permissions -rw-r--r--
Revision: 201037 Kit: 201039

/*!
* 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 "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 tests for PhoneUIQtButtonsController.
*
*/

#include <QtTest/QtTest>
#include <QtGui>
#include <hbapplication.h>
#include <QSignalSpy>
#include "qtestmains60.h"
#include "phoneuiqtbuttonscontroller.h"

class TestPhoneUIQtButtonsController : public QObject
{
    Q_OBJECT
public:
    TestPhoneUIQtButtonsController();
    virtual ~TestPhoneUIQtButtonsController();

public slots:
    void initTestCase ();
    void cleanupTestCase ();
    void init ();
    void cleanup (); 
    
private slots:
    void testSetButtonFlags();
    void testUnsetButtonFlags();
    void testGetButtonFlags();

private:
    // Helper functions
    bool checkFlags(bool hold, bool ihf, bool wired, bool btaa);
    void setFlags(bool hold, bool ihf, bool wired, bool btaa);
    
private:
    PhoneUIQtButtonsController *m_buttonsCtrl; // class under test
};

TestPhoneUIQtButtonsController::TestPhoneUIQtButtonsController ()
{
}

TestPhoneUIQtButtonsController::~TestPhoneUIQtButtonsController ()
{
}

void TestPhoneUIQtButtonsController::initTestCase ()
{

}

void TestPhoneUIQtButtonsController::cleanupTestCase ()
{

}

void TestPhoneUIQtButtonsController::init ()
{
    m_buttonsCtrl = new PhoneUIQtButtonsController ();
}

void TestPhoneUIQtButtonsController::cleanup ()
{
    delete m_buttonsCtrl;
}

void TestPhoneUIQtButtonsController::testSetButtonFlags()
{
    // Set one flag
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    QVERIFY(checkFlags(true,false,false,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    QVERIFY(checkFlags(false,true,false,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    QVERIFY(checkFlags(false,false,true,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(false,false,false,true) == true);
    
    // Two flags combinations
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    QVERIFY(checkFlags(true,true,false,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    QVERIFY(checkFlags(true,false,true,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(true,false,false,true) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    QVERIFY(checkFlags(false,true,true,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(false,true,false,true) == true);
    
    // Three flags combinations
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);    
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    QVERIFY(checkFlags(true,true,true,false) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);        
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(true,true,false,true) == true);

    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(true,false,true,true) == true);
    
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(false,true,true,true) == true);
    
    // All flags set
    setFlags(false,false,false,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,true);
    QVERIFY(checkFlags(true,true,true,true) == true);    
}

void TestPhoneUIQtButtonsController::testUnsetButtonFlags()
{
    // Unset one flag
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    QVERIFY(checkFlags(false,true,true,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    QVERIFY(checkFlags(true,false,true,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    QVERIFY(checkFlags(true,true,false,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(true,true,true,false) == true);
    
    // Two flags combinations
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    QVERIFY(checkFlags(false,false,true,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    QVERIFY(checkFlags(false,true,false,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(false,true,true,false) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    QVERIFY(checkFlags(true,false,false,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(true,false,true,false) == true);
    
    // Three flags combinations
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);    
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    QVERIFY(checkFlags(false,false,false,true) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);        
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(false,false,true,false) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(false,true,false,false) == true);
    
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(true,false,false,false) == true);
    
    // All flags unset
    setFlags(true,true,true,true);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,false);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,false);
    QVERIFY(checkFlags(false,false,false,false) == true);    
}

void TestPhoneUIQtButtonsController::testGetButtonFlags()
{
    setFlags(true,false,false,false);
    QVERIFY((m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold) == true &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Wired) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Btaa) == false) == true);
    
    setFlags(false,true,false,false);
    QVERIFY((m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf) == true &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Wired) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Btaa) == false) == true);
    
    setFlags(false,false,true,false);
    QVERIFY((m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Wired) == true &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Btaa) == false) == true);

    setFlags(false,false,false,true);
    QVERIFY((m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Wired) == false &&
    m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Btaa) == true) == true);
}

bool TestPhoneUIQtButtonsController::checkFlags(bool hold, bool ihf, bool wired, bool btaa)
{
    return (hold == m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Hold) &&
             ihf == m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf) &&
           wired == m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Wired) &&
            btaa == m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Btaa) );
}

void TestPhoneUIQtButtonsController::setFlags(bool hold, bool ihf, bool wired, bool btaa)
{
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Hold,hold);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Ihf,ihf);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Wired,wired);
    m_buttonsCtrl->setButtonFlags(PhoneUIQtButtonsController::Btaa,btaa);    
}

QTEST_MAIN_S60(TestPhoneUIQtButtonsController)
#include "unit_tests.moc"