summaryrefslogtreecommitdiffstats
path: root/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
diff options
context:
space:
mode:
authorJo Asplin <jo.asplin@nokia.com>2011-10-20 13:17:26 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-20 19:45:41 +0200
commit9f1aa866bda7678261f2f441d4cfd5bb524c2411 (patch)
tree5028f578122e7feb9200d571405494c73d96db89 /tests/auto/qbuttongroup/tst_qbuttongroup.cpp
parent78d02e93aca5325fc5be9bfd275862795207abaa (diff)
Moved tests into integrationtests/ and widgets/
Task-number: QTBUG-19013 Change-Id: Ibb776f5967c0645ce6d22ef7afdc40657c575461 Reviewed-by: Holger Ihrig <holger.ihrig@nokia.com>
Diffstat (limited to 'tests/auto/qbuttongroup/tst_qbuttongroup.cpp')
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp525
1 files changed, 0 insertions, 525 deletions
diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
deleted file mode 100644
index f9f6ec0a54..0000000000
--- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
+++ /dev/null
@@ -1,525 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-
-#include "qbuttongroup.h"
-#include <qaction.h>
-#include <qapplication.h>
-#include <qdialog.h>
-#include <qlayout.h>
-#include <qgroupbox.h>
-#include <qradiobutton.h>
-#include <qpushbutton.h>
-#include <qlineedit.h>
-#include <qtoolbutton.h>
-#ifdef Q_WS_MAC
-#include <qsettings.h>
-#endif
-
-class SpecialRadioButton: public QRadioButton
-{
-public:
- SpecialRadioButton(QWidget *parent) : QRadioButton(parent)
- { }
-
-protected:
- void focusInEvent(QFocusEvent *)
- {
- QCoreApplication::postEvent(this, new QKeyEvent(QEvent::KeyPress,
- Qt::Key_Down, Qt::NoModifier));
- }
-};
-
-#include <qbuttongroup.h>
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QButtonGroup : public QObject
-{
-Q_OBJECT
-public:
- tst_QButtonGroup();
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void arrowKeyNavigation();
- void exclusive();
- void exclusiveWithActions();
- void testSignals();
- void checkedButton();
-
- void task106609();
-
- void autoIncrementId();
-
- void task209485_removeFromGroupInEventHandler_data();
- void task209485_removeFromGroupInEventHandler();
-};
-
-tst_QButtonGroup::tst_QButtonGroup()
-{
-}
-
-
-void tst_QButtonGroup::initTestCase()
-{
-}
-
-void tst_QButtonGroup::cleanupTestCase()
-{
-}
-
-void tst_QButtonGroup::init()
-{
-}
-
-void tst_QButtonGroup::cleanup()
-{
-}
-
-QT_BEGIN_NAMESPACE
-extern bool Q_GUI_EXPORT qt_tab_all_widgets;
-QT_END_NAMESPACE
-
-
-void tst_QButtonGroup::arrowKeyNavigation()
-{
- if (!qt_tab_all_widgets)
- QSKIP("This test requires full keyboard control to be enabled.", SkipAll);
-
- QDialog dlg(0);
- QHBoxLayout layout(&dlg);
- QGroupBox g1("1", &dlg);
- QHBoxLayout g1layout(&g1);
- QRadioButton bt1("Radio1", &g1);
- QPushButton pb("PB", &g1);
- QLineEdit le(&g1);
- QRadioButton bt2("Radio2", &g1);
- g1layout.addWidget(&bt1);
- g1layout.addWidget(&pb);
- g1layout.addWidget(&le);
- g1layout.addWidget(&bt2);
-
- // create a mixed button group with radion buttons and push
- // buttons. Not very useful, but it tests borderline cases wrt
- // focus handling.
- QButtonGroup bgrp1(&g1);
- bgrp1.addButton(&bt1);
- bgrp1.addButton(&pb);
- bgrp1.addButton(&bt2);
-
- QGroupBox g2("2", &dlg);
- QVBoxLayout g2layout(&g2);
- // we don't need a button group here, because radio buttons are
- // auto exclusive, i.e. they group themselves in he same parent
- // widget.
- QRadioButton bt3("Radio3", &g2);
- QRadioButton bt4("Radio4", &g2);
- g2layout.addWidget(&bt3);
- g2layout.addWidget(&bt4);
-
- layout.addWidget(&g1);
- layout.addWidget(&g2);
-
- dlg.show();
- qApp->setActiveWindow(&dlg);
- QTest::qWaitForWindowShown(&dlg);
-
- bt1.setFocus();
-
- QTRY_VERIFY(bt1.hasFocus());
-
- QTest::keyClick(&bt1, Qt::Key_Right);
- QVERIFY(pb.hasFocus());
- QTest::keyClick(&pb, Qt::Key_Right);
- QVERIFY(bt2.hasFocus());
- QTest::keyClick(&bt2, Qt::Key_Right);
- QVERIFY(bt2.hasFocus());
- QTest::keyClick(&bt2, Qt::Key_Left);
- QVERIFY(pb.hasFocus());
- QTest::keyClick(&pb, Qt::Key_Left);
- QVERIFY(bt1.hasFocus());
-
- QTest::keyClick(&bt1, Qt::Key_Tab);
- QVERIFY(pb.hasFocus());
- QTest::keyClick(&pb, Qt::Key_Tab);
-
- QVERIFY(le.hasFocus());
- QCOMPARE(le.selectedText(), le.text());
- QTest::keyClick(&le, Qt::Key_Tab);
-
- QVERIFY(bt2.hasFocus());
- QTest::keyClick(&bt2, Qt::Key_Tab);
- QVERIFY(bt3.hasFocus());
-
- QTest::keyClick(&bt3, Qt::Key_Down);
- QVERIFY(bt4.hasFocus());
- QTest::keyClick(&bt4, Qt::Key_Down);
- QVERIFY(bt4.hasFocus());
-
- QTest::keyClick(&bt4, Qt::Key_Up);
- QVERIFY(bt3.hasFocus());
- QTest::keyClick(&bt3, Qt::Key_Up);
- QVERIFY(bt3.hasFocus());
-}
-
-void tst_QButtonGroup::exclusiveWithActions()
-{
- QDialog dlg(0);
- QHBoxLayout layout(&dlg);
- QAction *action1 = new QAction("Action 1", &dlg);
- action1->setCheckable(true);
- QAction *action2 = new QAction("Action 2", &dlg);
- action2->setCheckable(true);
- QAction *action3 = new QAction("Action 3", &dlg);
- action3->setCheckable(true);
- QToolButton *toolButton1 = new QToolButton(&dlg);
- QToolButton *toolButton2 = new QToolButton(&dlg);
- QToolButton *toolButton3 = new QToolButton(&dlg);
- toolButton1->setDefaultAction(action1);
- toolButton2->setDefaultAction(action2);
- toolButton3->setDefaultAction(action3);
- layout.addWidget(toolButton1);
- layout.addWidget(toolButton2);
- layout.addWidget(toolButton3);
- QButtonGroup *buttonGroup = new QButtonGroup( &dlg );
- buttonGroup->setExclusive(true);
- buttonGroup->addButton(toolButton1, 1);
- buttonGroup->addButton(toolButton2, 2);
- buttonGroup->addButton(toolButton3, 3);
- dlg.show();
-
- QTest::mouseClick(toolButton1, Qt::LeftButton);
- QVERIFY(toolButton1->isChecked());
- QVERIFY(action1->isChecked());
- QVERIFY(!toolButton2->isChecked());
- QVERIFY(!toolButton3->isChecked());
- QVERIFY(!action2->isChecked());
- QVERIFY(!action3->isChecked());
-
- QTest::mouseClick(toolButton2, Qt::LeftButton);
- QVERIFY(toolButton2->isChecked());
- QVERIFY(action2->isChecked());
- QVERIFY(!toolButton1->isChecked());
- QVERIFY(!toolButton3->isChecked());
- QVERIFY(!action1->isChecked());
- QVERIFY(!action3->isChecked());
-
- QTest::mouseClick(toolButton3, Qt::LeftButton);
- QVERIFY(toolButton3->isChecked());
- QVERIFY(action3->isChecked());
- QVERIFY(!toolButton1->isChecked());
- QVERIFY(!toolButton2->isChecked());
- QVERIFY(!action1->isChecked());
- QVERIFY(!action2->isChecked());
-
- QTest::mouseClick(toolButton2, Qt::LeftButton);
- QVERIFY(toolButton2->isChecked());
- QVERIFY(action2->isChecked());
- QVERIFY(!toolButton1->isChecked());
- QVERIFY(!toolButton3->isChecked());
- QVERIFY(!action1->isChecked());
- QVERIFY(!action3->isChecked());
-}
-
-void tst_QButtonGroup::exclusive()
-{
- QDialog dlg(0);
- QHBoxLayout layout(&dlg);
- QPushButton *pushButton1 = new QPushButton(&dlg);
- QPushButton *pushButton2 = new QPushButton(&dlg);
- QPushButton *pushButton3 = new QPushButton(&dlg);
- pushButton1->setCheckable(true);
- pushButton2->setCheckable(true);
- pushButton3->setCheckable(true);
- layout.addWidget(pushButton1);
- layout.addWidget(pushButton2);
- layout.addWidget(pushButton3);
- QButtonGroup *buttonGroup = new QButtonGroup( &dlg );
- buttonGroup->setExclusive(true);
- buttonGroup->addButton(pushButton1, 1);
- buttonGroup->addButton(pushButton2, 2);
- buttonGroup->addButton(pushButton3, 3);
- dlg.show();
-
- QTest::mouseClick(pushButton1, Qt::LeftButton);
- QVERIFY(pushButton1->isChecked());
- QVERIFY(!pushButton2->isChecked());
- QVERIFY(!pushButton3->isChecked());
-
- QTest::mouseClick(pushButton2, Qt::LeftButton);
- QVERIFY(pushButton2->isChecked());
- QVERIFY(!pushButton1->isChecked());
- QVERIFY(!pushButton3->isChecked());
-
- QTest::mouseClick(pushButton3, Qt::LeftButton);
- QVERIFY(pushButton3->isChecked());
- QVERIFY(!pushButton1->isChecked());
- QVERIFY(!pushButton2->isChecked());
-
- QTest::mouseClick(pushButton2, Qt::LeftButton);
- QVERIFY(pushButton2->isChecked());
- QVERIFY(!pushButton1->isChecked());
- QVERIFY(!pushButton3->isChecked());
-}
-
-void tst_QButtonGroup::testSignals()
-{
- QButtonGroup buttons;
- QPushButton pb1;
- QPushButton pb2;
- QPushButton pb3;
- buttons.addButton(&pb1);
- buttons.addButton(&pb2, 23);
- buttons.addButton(&pb3);
-
- qRegisterMetaType<QAbstractButton *>("QAbstractButton *");
- QSignalSpy clickedSpy(&buttons, SIGNAL(buttonClicked(QAbstractButton *)));
- QSignalSpy clickedIdSpy(&buttons, SIGNAL(buttonClicked(int)));
- QSignalSpy pressedSpy(&buttons, SIGNAL(buttonPressed(QAbstractButton *)));
- QSignalSpy pressedIdSpy(&buttons, SIGNAL(buttonPressed(int)));
- QSignalSpy releasedSpy(&buttons, SIGNAL(buttonReleased(QAbstractButton *)));
- QSignalSpy releasedIdSpy(&buttons, SIGNAL(buttonReleased(int)));
-
- pb1.animateClick();
- QTestEventLoop::instance().enterLoop(1);
-
- QCOMPARE(clickedSpy.count(), 1);
- QCOMPARE(clickedIdSpy.count(), 1);
-
- int expectedId = -2;
-
- QVERIFY(clickedIdSpy.takeFirst().at(0).toInt() == expectedId);
- QCOMPARE(pressedSpy.count(), 1);
- QCOMPARE(pressedIdSpy.count(), 1);
- QVERIFY(pressedIdSpy.takeFirst().at(0).toInt() == expectedId);
- QCOMPARE(releasedSpy.count(), 1);
- QCOMPARE(releasedIdSpy.count(), 1);
- QVERIFY(releasedIdSpy.takeFirst().at(0).toInt() == expectedId);
-
- clickedSpy.clear();
- clickedIdSpy.clear();
- pressedSpy.clear();
- pressedIdSpy.clear();
- releasedSpy.clear();
- releasedIdSpy.clear();
-
- pb2.animateClick();
- QTestEventLoop::instance().enterLoop(1);
-
- QCOMPARE(clickedSpy.count(), 1);
- QCOMPARE(clickedIdSpy.count(), 1);
- QVERIFY(clickedIdSpy.takeFirst().at(0).toInt() == 23);
- QCOMPARE(pressedSpy.count(), 1);
- QCOMPARE(pressedIdSpy.count(), 1);
- QVERIFY(pressedIdSpy.takeFirst().at(0).toInt() == 23);
- QCOMPARE(releasedSpy.count(), 1);
- QCOMPARE(releasedIdSpy.count(), 1);
- QVERIFY(releasedIdSpy.takeFirst().at(0).toInt() == 23);
-}
-
-void tst_QButtonGroup::task106609()
-{
- // task is:
- // sometimes, only one of the two signals in QButtonGroup get emitted
- // they get emitted when using the mouse, but when using the keyboard, only one is
- //
-
- QDialog dlg(0);
- QButtonGroup *buttons = new QButtonGroup(&dlg);
- QVBoxLayout *vbox = new QVBoxLayout(&dlg);
-
- SpecialRadioButton *radio1 = new SpecialRadioButton(&dlg);
- radio1->setText("radio1");
- SpecialRadioButton *radio2 = new SpecialRadioButton(&dlg);
- radio2->setText("radio2");
- QRadioButton *radio3 = new QRadioButton(&dlg);
- radio3->setText("radio3");
-
- buttons->addButton(radio1, 1);
- vbox->addWidget(radio1);
- buttons->addButton(radio2, 2);
- vbox->addWidget(radio2);
- buttons->addButton(radio3, 3);
- vbox->addWidget(radio3);
- dlg.show();
- QTest::qWaitForWindowShown(&dlg);
-
- qRegisterMetaType<QAbstractButton*>("QAbstractButton*");
- QSignalSpy spy1(buttons, SIGNAL(buttonClicked(QAbstractButton*)));
- QSignalSpy spy2(buttons, SIGNAL(buttonClicked(int)));
-
- QApplication::setActiveWindow(&dlg);
- QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&dlg));
-
- radio1->setFocus();
- radio1->setChecked(true);
- QTestEventLoop::instance().enterLoop(1);
-
- //qDebug() << "int:" << spy2.count() << "QAbstractButton*:" << spy1.count();
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy1.count(), 2);
-}
-
-void tst_QButtonGroup::checkedButton()
-{
- QButtonGroup buttons;
- buttons.setExclusive(false);
- QPushButton pb1;
- pb1.setCheckable(true);
- QPushButton pb2;
- pb2.setCheckable(true);
- buttons.addButton(&pb1);
- buttons.addButton(&pb2, 23);
-
- QVERIFY(buttons.checkedButton() == 0);
- pb1.setChecked(true);
- QVERIFY(buttons.checkedButton() == &pb1);
- pb2.setChecked(true);
- QVERIFY(buttons.checkedButton() == &pb2);
- pb2.setChecked(false);
- QVERIFY(buttons.checkedButton() == &pb1);
- pb1.setChecked(false);
- QVERIFY(buttons.checkedButton() == 0);
-
- buttons.setExclusive(true);
- QVERIFY(buttons.checkedButton() == 0);
- pb1.setChecked(true);
- QVERIFY(buttons.checkedButton() == &pb1);
- pb2.setChecked(true);
- QVERIFY(buttons.checkedButton() == &pb2);
- // checked button cannot be unchecked
- pb2.setChecked(false);
- QVERIFY(buttons.checkedButton() == &pb2);
-}
-
-class task209485_ButtonDeleter : public QObject
-{
- Q_OBJECT
-
-public:
- task209485_ButtonDeleter(QButtonGroup *group, bool deleteButton)
- : group(group)
- , deleteButton(deleteButton)
- {
- connect(group, SIGNAL(buttonClicked(int)), SLOT(buttonClicked(int)));
- }
-
-private slots:
- void buttonClicked(int)
- {
- if (deleteButton)
- group->removeButton(group->buttons().first());
- }
-
-private:
- QButtonGroup *group;
- bool deleteButton;
-};
-
-void tst_QButtonGroup::task209485_removeFromGroupInEventHandler_data()
-{
- QTest::addColumn<bool>("deleteButton");
- QTest::addColumn<int>("signalCount");
- QTest::newRow("buttonPress 1") << true << 1;
- QTest::newRow("buttonPress 2") << false << 2;
-}
-
-void tst_QButtonGroup::task209485_removeFromGroupInEventHandler()
-{
- QFETCH(bool, deleteButton);
- QFETCH(int, signalCount);
- qRegisterMetaType<QAbstractButton *>("QAbstractButton *");
-
- QPushButton *button = new QPushButton;
- QButtonGroup group;
- group.addButton(button);
-
- task209485_ButtonDeleter buttonDeleter(&group, deleteButton);
-
- QSignalSpy spy1(&group, SIGNAL(buttonClicked(QAbstractButton *)));
- QSignalSpy spy2(&group, SIGNAL(buttonClicked(int)));
-
- // NOTE: Reintroducing the bug of this task will cause the following line to crash:
- QTest::mouseClick(button, Qt::LeftButton);
-
- QCOMPARE(spy1.count() + spy2.count(), signalCount);
-}
-
-void tst_QButtonGroup::autoIncrementId()
-{
- QDialog dlg(0);
- QButtonGroup *buttons = new QButtonGroup(&dlg);
- QVBoxLayout *vbox = new QVBoxLayout(&dlg);
-
- QRadioButton *radio1 = new QRadioButton(&dlg);
- radio1->setText("radio1");
- QRadioButton *radio2 = new QRadioButton(&dlg);
- radio2->setText("radio2");
- QRadioButton *radio3 = new QRadioButton(&dlg);
- radio3->setText("radio3");
-
- buttons->addButton(radio1);
- vbox->addWidget(radio1);
- buttons->addButton(radio2);
- vbox->addWidget(radio2);
- buttons->addButton(radio3);
- vbox->addWidget(radio3);
-
- radio1->setChecked(true);
-
- QVERIFY(buttons->id(radio1) == -2);
- QVERIFY(buttons->id(radio2) == -3);
- QVERIFY(buttons->id(radio3) == -4);
-
- dlg.show();
-}
-
-QTEST_MAIN(tst_QButtonGroup)
-#include "tst_qbuttongroup.moc"