QTabBar test: refactor: extract checkPositions helper function
Extract checkPositions helper function to re-use in the new test. Task-number: QTBUG-86898 Change-Id: I5c8241b5701cd8c8c3e21607c385217d4b75e728 Reviewed-by: Jordi Pujol Foyo <jordi@vikingsoftware.com> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
parent
a02ea26b46
commit
9f9275f82f
@ -35,6 +35,8 @@
|
|||||||
#include <qstyle.h>
|
#include <qstyle.h>
|
||||||
#include <qstyleoption.h>
|
#include <qstyleoption.h>
|
||||||
|
|
||||||
|
class TabBar;
|
||||||
|
|
||||||
class tst_QTabBar : public QObject
|
class tst_QTabBar : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -94,6 +96,9 @@ private slots:
|
|||||||
void autoHide();
|
void autoHide();
|
||||||
|
|
||||||
void mouseReleaseOutsideTabBar();
|
void mouseReleaseOutsideTabBar();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void checkPositions(const TabBar &tabbar, const QList<int> &positions);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Testing get/set functions
|
// Testing get/set functions
|
||||||
@ -210,6 +215,14 @@ void tst_QTabBar::testCurrentChanged()
|
|||||||
QCOMPARE(spy.count(), expectedCount);
|
QCOMPARE(spy.count(), expectedCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TabBar : public QTabBar
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using QTabBar::initStyleOption;
|
||||||
|
using QTabBar::moveTab;
|
||||||
|
using QTabBar::QTabBar;
|
||||||
|
};
|
||||||
|
|
||||||
void tst_QTabBar::insertAtCurrentIndex()
|
void tst_QTabBar::insertAtCurrentIndex()
|
||||||
{
|
{
|
||||||
QTabBar tabBar;
|
QTabBar tabBar;
|
||||||
@ -282,52 +295,36 @@ void tst_QTabBar::hideTab()
|
|||||||
QTEST(tabbar.currentIndex(), "finalIndex");
|
QTEST(tabbar.currentIndex(), "finalIndex");
|
||||||
}
|
}
|
||||||
|
|
||||||
class TabBar : public QTabBar
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
using QTabBar::QTabBar;
|
|
||||||
using QTabBar::initStyleOption;
|
|
||||||
using QTabBar::moveTab;
|
|
||||||
};
|
|
||||||
|
|
||||||
void tst_QTabBar::hideAllTabs()
|
void tst_QTabBar::hideAllTabs()
|
||||||
{
|
{
|
||||||
TabBar tabbar;
|
TabBar tabbar;
|
||||||
auto checkPositions = [&tabbar](const QList<int> &positions) {
|
|
||||||
QStyleOptionTab option;
|
|
||||||
int iPos = 0;
|
|
||||||
for (int i = 0; i < tabbar.count(); ++i) {
|
|
||||||
if (!tabbar.isTabVisible(i))
|
|
||||||
continue;
|
|
||||||
tabbar.initStyleOption(&option, i);
|
|
||||||
QCOMPARE(option.position, positions.at(iPos++));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
tabbar.addTab("foo");
|
tabbar.addTab("foo");
|
||||||
tabbar.addTab("bar");
|
tabbar.addTab("bar");
|
||||||
tabbar.addTab("baz");
|
tabbar.addTab("baz");
|
||||||
tabbar.setCurrentIndex(0);
|
tabbar.setCurrentIndex(0);
|
||||||
checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End});
|
checkPositions(tabbar,
|
||||||
|
{ QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End });
|
||||||
|
|
||||||
// Check we don't crash trying to hide an unexistant tab
|
// Check we don't crash trying to hide an unexistant tab
|
||||||
QSize prevSizeHint = tabbar.sizeHint();
|
QSize prevSizeHint = tabbar.sizeHint();
|
||||||
tabbar.setTabVisible(3, false);
|
tabbar.setTabVisible(3, false);
|
||||||
checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End});
|
checkPositions(tabbar,
|
||||||
|
{ QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End });
|
||||||
QCOMPARE(tabbar.currentIndex(), 0);
|
QCOMPARE(tabbar.currentIndex(), 0);
|
||||||
QSize sizeHint = tabbar.sizeHint();
|
QSize sizeHint = tabbar.sizeHint();
|
||||||
QVERIFY(sizeHint.width() == prevSizeHint.width());
|
QVERIFY(sizeHint.width() == prevSizeHint.width());
|
||||||
prevSizeHint = sizeHint;
|
prevSizeHint = sizeHint;
|
||||||
|
|
||||||
tabbar.setTabVisible(1, false);
|
tabbar.setTabVisible(1, false);
|
||||||
checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::End});
|
checkPositions(tabbar, { QStyleOptionTab::Beginning, QStyleOptionTab::End });
|
||||||
QCOMPARE(tabbar.currentIndex(), 0);
|
QCOMPARE(tabbar.currentIndex(), 0);
|
||||||
sizeHint = tabbar.sizeHint();
|
sizeHint = tabbar.sizeHint();
|
||||||
QVERIFY(sizeHint.width() < prevSizeHint.width());
|
QVERIFY(sizeHint.width() < prevSizeHint.width());
|
||||||
prevSizeHint = sizeHint;
|
prevSizeHint = sizeHint;
|
||||||
|
|
||||||
tabbar.setTabVisible(2, false);
|
tabbar.setTabVisible(2, false);
|
||||||
checkPositions({QStyleOptionTab::OnlyOneTab});
|
checkPositions(tabbar, { QStyleOptionTab::OnlyOneTab });
|
||||||
QCOMPARE(tabbar.currentIndex(), 0);
|
QCOMPARE(tabbar.currentIndex(), 0);
|
||||||
sizeHint = tabbar.sizeHint();
|
sizeHint = tabbar.sizeHint();
|
||||||
QVERIFY(sizeHint.width() < prevSizeHint.width());
|
QVERIFY(sizeHint.width() < prevSizeHint.width());
|
||||||
@ -834,5 +831,17 @@ void tst_QTabBar::mouseReleaseOutsideTabBar()
|
|||||||
QTRY_VERIFY(repaintChecker.repainted);
|
QTRY_VERIFY(repaintChecker.repainted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QTabBar::checkPositions(const TabBar &tabbar, const QList<int> &positions)
|
||||||
|
{
|
||||||
|
QStyleOptionTab option;
|
||||||
|
int iPos = 0;
|
||||||
|
for (int i = 0; i < tabbar.count(); ++i) {
|
||||||
|
if (!tabbar.isTabVisible(i))
|
||||||
|
continue;
|
||||||
|
tabbar.initStyleOption(&option, i);
|
||||||
|
QCOMPARE(option.position, positions.at(iPos++));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QTabBar)
|
QTEST_MAIN(tst_QTabBar)
|
||||||
#include "tst_qtabbar.moc"
|
#include "tst_qtabbar.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user