diff options
author | Jo Asplin <jo.asplin@nokia.com> | 2011-10-20 13:17:26 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-20 19:45:41 +0200 |
commit | 9f1aa866bda7678261f2f441d4cfd5bb524c2411 (patch) | |
tree | 5028f578122e7feb9200d571405494c73d96db89 /tests/auto/qtabwidget | |
parent | 78d02e93aca5325fc5be9bfd275862795207abaa (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/qtabwidget')
-rw-r--r-- | tests/auto/qtabwidget/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/qtabwidget/qtabwidget.pro | 12 | ||||
-rw-r--r-- | tests/auto/qtabwidget/tst_qtabwidget.cpp | 680 |
3 files changed, 0 insertions, 693 deletions
diff --git a/tests/auto/qtabwidget/.gitignore b/tests/auto/qtabwidget/.gitignore deleted file mode 100644 index d8f924a3df..0000000000 --- a/tests/auto/qtabwidget/.gitignore +++ /dev/null @@ -1 +0,0 @@ -tst_qtabwidget diff --git a/tests/auto/qtabwidget/qtabwidget.pro b/tests/auto/qtabwidget/qtabwidget.pro deleted file mode 100644 index d551c66500..0000000000 --- a/tests/auto/qtabwidget/qtabwidget.pro +++ /dev/null @@ -1,12 +0,0 @@ -load(qttest_p4) - -QT += widgets widgets-private - -INCLUDEPATH += ../ - -HEADERS += -SOURCES += tst_qtabwidget.cpp - -win32:!wince*:LIBS += -luser32 - -CONFIG+=insignificant_test diff --git a/tests/auto/qtabwidget/tst_qtabwidget.cpp b/tests/auto/qtabwidget/tst_qtabwidget.cpp deleted file mode 100644 index 6d356dee9b..0000000000 --- a/tests/auto/qtabwidget/tst_qtabwidget.cpp +++ /dev/null @@ -1,680 +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 <qtabwidget.h> -#include <qdebug.h> -#include <qapplication.h> -#include <qlabel.h> -#include <QtWidgets/qboxlayout.h> - -//TESTED_CLASS= -//TESTED_FILES= - -#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) -# include <qt_windows.h> -#define Q_CHECK_PAINTEVENTS \ - if (::SwitchDesktop(::GetThreadDesktop(::GetCurrentThreadId())) == 0) \ - QSKIP("desktop is not visible, this test would fail", SkipSingle); -#else -#define Q_CHECK_PAINTEVENTS -#endif -#if defined(Q_WS_X11) -# include <private/qt_x11_p.h> -# include <qx11info_x11.h> -#elif defined(Q_WS_QWS) -# include <qwindowsystem_qws.h> -#endif - -class QTabWidgetChild:public QTabWidget { - public: - QTabWidgetChild():tabCount(0) { - QVERIFY(tabBar() != NULL); - QWidget *w = new QWidget; - int index = addTab(w, "test"); - QCOMPARE(tabCount, 1); - removeTab(index); - QCOMPARE(tabCount, 0); - - // Test bad arguments - // This will assert, so don't do it :) - //setTabBar(NULL); - }; - - protected: - virtual void tabInserted(int /*index */ ) { - tabCount++; - }; - virtual void tabRemoved(int /*index */ ) { - tabCount--; - }; - int tabCount; -}; - -class tst_QTabWidget:public QObject { - Q_OBJECT - public: - tst_QTabWidget(); - - public slots: - void init(); - void cleanup(); - private slots: - void getSetCheck(); - void testChild(); - void addRemoveTab(); - void tabPosition(); - void tabEnabled(); - void tabText(); - void tabShape(); - void tabTooltip(); - void tabIcon(); - void indexOf(); - void currentWidget(); - void currentIndex(); - void cornerWidget(); - void removeTab(); - void clear(); - void keyboardNavigation(); - void paintEventCount(); - void minimumSizeHint(); - void heightForWidth_data(); - void heightForWidth(); - - private: - int addPage(); - void removePage(int index); - QTabWidget *tw; -}; - -// Testing get/set functions -void tst_QTabWidget::getSetCheck() -{ - QTabWidget obj1; - QWidget *w1 = new QWidget; - QWidget *w2 = new QWidget; - QWidget *w3 = new QWidget; - QWidget *w4 = new QWidget; - QWidget *w5 = new QWidget; - - obj1.addTab(w1, "Page 1"); - obj1.addTab(w2, "Page 2"); - obj1.addTab(w3, "Page 3"); - obj1.addTab(w4, "Page 4"); - obj1.addTab(w5, "Page 5"); - - // TabShape QTabWidget::tabShape() - // void QTabWidget::setTabShape(TabShape) - obj1.setTabShape(QTabWidget::TabShape(QTabWidget::Rounded)); - QCOMPARE(QTabWidget::TabShape(QTabWidget::Rounded), obj1.tabShape()); - obj1.setTabShape(QTabWidget::TabShape(QTabWidget::Triangular)); - QCOMPARE(QTabWidget::TabShape(QTabWidget::Triangular), obj1.tabShape()); - - // int QTabWidget::currentIndex() - // void QTabWidget::setCurrentIndex(int) - obj1.setCurrentIndex(0); - QCOMPARE(0, obj1.currentIndex()); - obj1.setCurrentIndex(INT_MIN); - QCOMPARE(0, obj1.currentIndex()); - obj1.setCurrentIndex(INT_MAX); - QCOMPARE(0, obj1.currentIndex()); - obj1.setCurrentIndex(4); - QCOMPARE(4, obj1.currentIndex()); - - // QWidget * QTabWidget::currentWidget() - // void QTabWidget::setCurrentWidget(QWidget *) - obj1.setCurrentWidget(w1); - QCOMPARE(w1, obj1.currentWidget()); - obj1.setCurrentWidget(w5); - QCOMPARE(w5, obj1.currentWidget()); - obj1.setCurrentWidget((QWidget *)0); - QCOMPARE(w5, obj1.currentWidget()); // current not changed -} - -tst_QTabWidget::tst_QTabWidget() -{ -} - -void tst_QTabWidget::init() -{ - tw = new QTabWidget(0); - QCOMPARE(tw->count(), 0); - QCOMPARE(tw->currentIndex(), -1); - QVERIFY(tw->currentWidget() == NULL); -} - -void tst_QTabWidget::cleanup() -{ - delete tw; - tw = 0; -} - -void tst_QTabWidget::testChild() -{ - QTabWidgetChild t; -} - -#define LABEL "TEST" -#define TIP "TIP" -int tst_QTabWidget::addPage() -{ - QWidget *w = new QWidget(); - return tw->addTab(w, LABEL); -} - -void tst_QTabWidget::removePage(int index) -{ - QWidget *w = tw->widget(index); - tw->removeTab(index); - delete w; -} - -/** - * Tests: - * addTab(...) which really calls -> insertTab(...) - * widget(...) - * removeTab(...); - * If this fails then many others probably will too. - */ -void tst_QTabWidget::addRemoveTab() -{ - // Test bad arguments - tw->addTab(NULL, LABEL); - QCOMPARE(tw->count(), 0); - tw->removeTab(-1); - QCOMPARE(tw->count(), 0); - QVERIFY(tw->widget(-1) == 0); - - QWidget *w = new QWidget(); - int index = tw->addTab(w, LABEL); - // return value - QCOMPARE(tw->indexOf(w), index); - - QCOMPARE(tw->count(), 1); - QVERIFY(tw->widget(index) == w); - QCOMPARE(tw->tabText(index), QString(LABEL)); - - removePage(index); - QCOMPARE(tw->count(), 0); -} - -void tst_QTabWidget::tabPosition() -{ - tw->setTabPosition(QTabWidget::North); - QCOMPARE(tw->tabPosition(), QTabWidget::North); - tw->setTabPosition(QTabWidget::South); - QCOMPARE(tw->tabPosition(), QTabWidget::South); - tw->setTabPosition(QTabWidget::East); - QCOMPARE(tw->tabPosition(), QTabWidget::East); - tw->setTabPosition(QTabWidget::West); - QCOMPARE(tw->tabPosition(), QTabWidget::West); -} - -void tst_QTabWidget::tabEnabled() -{ - // Test bad arguments - QVERIFY(tw->isTabEnabled(-1) == false); - tw->setTabEnabled(-1, false); - - int index = addPage(); - - tw->setTabEnabled(index, true); - QVERIFY(tw->isTabEnabled(index)); - QVERIFY(tw->widget(index)->isEnabled()); - tw->setTabEnabled(index, false); - QVERIFY(!tw->isTabEnabled(index)); - QVERIFY(!tw->widget(index)->isEnabled()); - tw->setTabEnabled(index, true); - QVERIFY(tw->isTabEnabled(index)); - QVERIFY(tw->widget(index)->isEnabled()); - - removePage(index); -} - -void tst_QTabWidget::tabText() -{ - // Test bad arguments - QCOMPARE(tw->tabText(-1), QString("")); - tw->setTabText(-1, LABEL); - - int index = addPage(); - - tw->setTabText(index, "new"); - QCOMPARE(tw->tabText(index), QString("new")); - tw->setTabText(index, LABEL); - QCOMPARE(tw->tabText(index), QString(LABEL)); - - removePage(index); -} - -void tst_QTabWidget::tabShape() -{ - int index = addPage(); - - tw->setTabShape(QTabWidget::Rounded); - QCOMPARE(tw->tabShape(), QTabWidget::Rounded); - tw->setTabShape(QTabWidget::Triangular); - QCOMPARE(tw->tabShape(), QTabWidget::Triangular); - tw->setTabShape(QTabWidget::Rounded); - QCOMPARE(tw->tabShape(), QTabWidget::Rounded); - - removePage(index); -} - -void tst_QTabWidget::tabTooltip() -{ - // Test bad arguments - QCOMPARE(tw->tabToolTip(-1), QString("")); - tw->setTabText(-1, TIP); - - int index = addPage(); - - tw->setTabToolTip(index, "tip"); - QCOMPARE(tw->tabToolTip(index), QString("tip")); - tw->setTabToolTip(index, TIP); - QCOMPARE(tw->tabToolTip(index), QString(TIP)); - - removePage(index); -} - -void tst_QTabWidget::tabIcon() -{ - // Test bad arguments - QVERIFY(tw->tabToolTip(-1).isNull()); - tw->setTabIcon(-1, QIcon()); - - int index = addPage(); - - QIcon icon; - tw->setTabIcon(index, icon); - QVERIFY(tw->tabIcon(index).isNull()); - - removePage(index); -} - -void tst_QTabWidget::indexOf() -{ - // Test bad arguments - QCOMPARE(tw->indexOf(NULL), -1); - - int index = addPage(); - QWidget *w = tw->widget(index); - QCOMPARE(tw->indexOf(w), index); - - removePage(index); -} - -void tst_QTabWidget::currentWidget() -{ - // Test bad arguments - tw->setCurrentWidget(NULL); - QVERIFY(tw->currentWidget() == NULL); - - int index = addPage(); - QWidget *w = tw->widget(index); - QVERIFY(tw->currentWidget() == w); - QCOMPARE(tw->currentIndex(), index); - - tw->setCurrentWidget(NULL); - QVERIFY(tw->currentWidget() == w); - QCOMPARE(tw->currentIndex(), index); - - int index2 = addPage(); - QWidget *w2 = tw->widget(index2); - Q_UNUSED(w2); - QVERIFY(tw->currentWidget() == w); - QCOMPARE(tw->currentIndex(), index); - - removePage(index2); - removePage(index); -} - -/** - * setCurrentWidget(..) calls setCurrentIndex(..) - * currentChanged(..) SIGNAL - */ -void tst_QTabWidget::currentIndex() -{ - // Test bad arguments - QSignalSpy spy(tw, SIGNAL(currentChanged(int))); - QCOMPARE(tw->currentIndex(), -1); - tw->setCurrentIndex(-1); - QCOMPARE(tw->currentIndex(), -1); - QCOMPARE(spy.count(), 0); - - int firstIndex = addPage(); - tw->setCurrentIndex(firstIndex); - QCOMPARE(tw->currentIndex(), firstIndex); - QCOMPARE(spy.count(), 1); - QList<QVariant> arguments = spy.takeFirst(); - QVERIFY(arguments.at(0).toInt() == firstIndex); - - int index = addPage(); - QCOMPARE(tw->currentIndex(), firstIndex); - tw->setCurrentIndex(index); - QCOMPARE(tw->currentIndex(), index); - QCOMPARE(spy.count(), 1); - arguments = spy.takeFirst(); - QVERIFY(arguments.at(0).toInt() == index); - - removePage(index); - QCOMPARE(tw->currentIndex(), firstIndex); - QCOMPARE(spy.count(), 1); - arguments = spy.takeFirst(); - QVERIFY(arguments.at(0).toInt() == firstIndex); - - removePage(firstIndex); - QCOMPARE(tw->currentIndex(), -1); - QCOMPARE(spy.count(), 1); - arguments = spy.takeFirst(); - QVERIFY(arguments.at(0).toInt() == -1); -} - -void tst_QTabWidget::cornerWidget() -{ - // Test bad arguments - tw->setCornerWidget(NULL, Qt::TopRightCorner); - - QVERIFY(tw->cornerWidget(Qt::TopLeftCorner) == 0); - QVERIFY(tw->cornerWidget(Qt::TopRightCorner) == 0); - QVERIFY(tw->cornerWidget(Qt::BottomLeftCorner) == 0); - QVERIFY(tw->cornerWidget(Qt::BottomRightCorner) == 0); - - QWidget *w = new QWidget(0); - tw->setCornerWidget(w, Qt::TopLeftCorner); - QCOMPARE(w->parent(), (QObject *)tw); - QVERIFY(tw->cornerWidget(Qt::TopLeftCorner) == w); - tw->setCornerWidget(w, Qt::TopRightCorner); - QVERIFY(tw->cornerWidget(Qt::TopRightCorner) == w); - tw->setCornerWidget(w, Qt::BottomLeftCorner); - QVERIFY(tw->cornerWidget(Qt::BottomLeftCorner) == w); - tw->setCornerWidget(w, Qt::BottomRightCorner); - QVERIFY(tw->cornerWidget(Qt::BottomRightCorner) == w); - - tw->setCornerWidget(0, Qt::TopRightCorner); - QVERIFY(tw->cornerWidget(Qt::TopRightCorner) == 0); - QCOMPARE(w->isHidden(), true); -} - -//test that the QTabWidget::count() is correct at the moment the currentChanged signal is emit -class RemoveTabObject : public QObject -{ - Q_OBJECT - public: - RemoveTabObject(QTabWidget *_tw) : tw(_tw), count(-1) { - connect(tw, SIGNAL(currentChanged(int)), this, SLOT(currentChanged())); - } - - QTabWidget *tw; - int count; - public slots: - void currentChanged() { count = tw->count(); } -}; - -void tst_QTabWidget::removeTab() -{ - tw->show(); - QCOMPARE(tw->count(), 0); - RemoveTabObject ob(tw); - tw->addTab(new QLabel("1"), "1"); - QCOMPARE(ob.count, 1); - tw->addTab(new QLabel("2"), "2"); - tw->addTab(new QLabel("3"), "3"); - tw->addTab(new QLabel("4"), "4"); - tw->addTab(new QLabel("5"), "5"); - QCOMPARE(ob.count, 1); - QCOMPARE(tw->count(), 5); - - tw->setCurrentIndex(4); - QCOMPARE(ob.count,5); - tw->removeTab(4); - QCOMPARE(ob.count, 4); - QCOMPARE(tw->count(), 4); - QCOMPARE(tw->currentIndex(), 3); - - tw->setCurrentIndex(1); - tw->removeTab(1); - QCOMPARE(ob.count, 3); - QCOMPARE(tw->count(), 3); - QCOMPARE(tw->currentIndex(), 1); - - delete tw->widget(1); - QCOMPARE(tw->count(), 2); - QCOMPARE(ob.count, 2); - QCOMPARE(tw->currentIndex(), 1); - delete tw->widget(1); - QCOMPARE(tw->count(), 1); - QCOMPARE(ob.count, 1); - tw->removeTab(0); - QCOMPARE(tw->count(), 0); - QCOMPARE(ob.count, 0); -} - -void tst_QTabWidget::clear() -{ - tw->addTab(new QWidget, "1"); - tw->addTab(new QWidget, "2"); - tw->addTab(new QWidget, "3"); - tw->addTab(new QWidget, "4"); - tw->addTab(new QWidget, "5"); - tw->setCurrentIndex(4); - tw->clear(); - QCOMPARE(tw->count(), 0); - QCOMPARE(tw->currentIndex(), -1); -} - -void tst_QTabWidget::keyboardNavigation() -{ - int firstIndex = addPage(); - addPage(); - addPage(); - tw->setCurrentIndex(firstIndex); - QCOMPARE(tw->currentIndex(), firstIndex); - - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - QCOMPARE(tw->currentIndex(), 1); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - QCOMPARE(tw->currentIndex(), 2); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - QCOMPARE(tw->currentIndex(), 0); - tw->setTabEnabled(1, false); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - QCOMPARE(tw->currentIndex(), 2); - - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier | Qt::ShiftModifier); - QCOMPARE(tw->currentIndex(), 0); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier | Qt::ShiftModifier); - QCOMPARE(tw->currentIndex(), 2); - tw->setTabEnabled(1, true); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier | Qt::ShiftModifier); - QCOMPARE(tw->currentIndex(), 1); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier | Qt::ShiftModifier); - QCOMPARE(tw->currentIndex(), 0); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier | Qt::ShiftModifier); - QCOMPARE(tw->currentIndex(), 2); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - QCOMPARE(tw->currentIndex(), 0); - - // Disable all and try to go to the next. It should not move anywhere, and more importantly - // it should not loop forever. (a naive "search for the first enabled tabbar") implementation - // might do that) - tw->setTabEnabled(0, false); - tw->setTabEnabled(1, false); - tw->setTabEnabled(2, false); - QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier); - // TODO: Disabling the current tab will move current tab to the next, - // but what if next tab is also disabled. We should look into this. - QVERIFY(tw->currentIndex() < 3 && tw->currentIndex() >= 0); -} - -class PaintCounter : public QWidget -{ -public: - PaintCounter() :count(0) { setAttribute(Qt::WA_OpaquePaintEvent); } - int count; -protected: - void paintEvent(QPaintEvent*) { - ++count; - } -}; - - -void tst_QTabWidget::paintEventCount() -{ - Q_CHECK_PAINTEVENTS - - PaintCounter *tab1 = new PaintCounter; - PaintCounter *tab2 = new PaintCounter; - - tw->addTab(tab1, "one"); - tw->addTab(tab2, "two"); - - QCOMPARE(tab1->count, 0); - QCOMPARE(tab2->count, 0); - QCOMPARE(tw->currentIndex(), 0); - - tw->show(); - - QTest::qWait(1000); - - // Mac, Windows and Windows CE get multiple repaints on the first show, so use those as a starting point. - static const int MaxInitialPaintCount = -#if defined(Q_OS_WINCE) - 4; -#elif defined(Q_WS_WIN) - 2; -#elif defined(Q_WS_MAC) - 5; -#else - 2; -#endif - QVERIFY(tab1->count <= MaxInitialPaintCount); - QCOMPARE(tab2->count, 0); - - const int initalPaintCount = tab1->count; - - tw->setCurrentIndex(1); - - QTest::qWait(100); - - QCOMPARE(tab1->count, initalPaintCount); - QCOMPARE(tab2->count, 1); - - tw->setCurrentIndex(0); - - QTest::qWait(100); - - QCOMPARE(tab1->count, initalPaintCount + 1); - QCOMPARE(tab2->count, 1); -} - -void tst_QTabWidget::minimumSizeHint() -{ - QTabWidget tw; - QWidget *page = new QWidget; - QVBoxLayout *lay = new QVBoxLayout; - - QLabel *label = new QLabel(QLatin1String("XXgypq lorem ipsum must be long, must be long. lorem ipsumMMMW")); - lay->addWidget(label); - - page->setLayout(lay); - - tw.addTab(page, QLatin1String("page1")); - - tw.show(); - QTest::qWaitForWindowShown(&tw); - tw.resize(tw.minimumSizeHint()); - - QSize minSize = label->minimumSizeHint(); - QSize actSize = label->geometry().size(); - QVERIFY(minSize.width() <= actSize.width()); - QVERIFY(minSize.height() <= actSize.height()); -} - -void tst_QTabWidget::heightForWidth_data() -{ - QTest::addColumn<int>("tabPosition"); - QTest::newRow("West") << int(QTabWidget::West); - QTest::newRow("North") << int(QTabWidget::North); - QTest::newRow("East") << int(QTabWidget::East); - QTest::newRow("South") << int(QTabWidget::South); -} - -void tst_QTabWidget::heightForWidth() -{ - QFETCH(int, tabPosition); - - QWidget *window = new QWidget; - QVBoxLayout *lay = new QVBoxLayout(window); - lay->setMargin(0); - lay->setSpacing(0); - QTabWidget *tabWid = new QTabWidget(window); - QWidget *w = new QWidget; - tabWid->addTab(w, QLatin1String("HFW page")); - tabWid->setTabPosition(QTabWidget::TabPosition(tabPosition)); - QVBoxLayout *lay2 = new QVBoxLayout(w); - QLabel *label = new QLabel("Label with wordwrap turned on makes it trade height for width." - " Make it a really long text so that it spans on several lines" - " when the label is on its narrowest." - " I don't like to repeat myself." - " I don't like to repeat myself." - " I don't like to repeat myself." - " I don't like to repeat myself." - ); - label->setWordWrap(true); - lay2->addWidget(label); - lay2->setMargin(0); - - lay->addWidget(tabWid); - int h = window->heightForWidth(160); - window->resize(160, h); - window->show(); - - QTest::qWaitForWindowShown(window); - QVERIFY(label->height() >= label->heightForWidth(label->width())); - - delete window; -} - - -QTEST_MAIN(tst_QTabWidget) -#include "tst_qtabwidget.moc" |