summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2014-10-30 18:40:03 +0100
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2014-11-04 15:31:09 +0100
commit29c4913b02f3970070af2ef18340dfea0b8fa4c7 (patch)
tree035f4fab887d8e584f140bee77ad4081b88dc88d /tests/auto
parent7afc6d627743427f0ba765045a7f93e480fa7c19 (diff)
QFrame: introduce initStyleOption (and use it)
For some reason lost in time QFrame was missing that method. Of course that led to duplicated code and to subtle sizing miscalculations. Task-number: QTBUG-29330 Change-Id: I81163f5def6661e01cb2ecc49c1169449a3e3758 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/widgets/qframe/tst_qframe.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp
index fdd7f0afda..a94ea2ed68 100644
--- a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp
+++ b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp
@@ -34,12 +34,15 @@
#include <QTest>
#include <QFrame>
+#include <QStyleOptionFrame>
class tst_QFrame : public QObject
{
Q_OBJECT
private slots:
void testDefaults();
+ void testInitStyleOption_data();
+ void testInitStyleOption();
};
Q_DECLARE_METATYPE(QFrame::Shape)
@@ -55,6 +58,85 @@ void tst_QFrame::testDefaults()
QCOMPARE(frame.frameStyle(), int(QFrame::Box));
}
+class Frame : public QFrame
+{
+public:
+ using QFrame::initStyleOption;
+};
+
+void tst_QFrame::testInitStyleOption_data()
+{
+ QTest::addColumn<QString>("basename");
+ QTest::addColumn<int>("lineWidth");
+ QTest::addColumn<int>("midLineWidth");
+ QTest::addColumn<QFrame::Shape>("shape");
+ QTest::addColumn<QFrame::Shadow>("shadow");
+
+ for (int lineWidth = 0; lineWidth < 3; ++lineWidth) {
+ for (int midLineWidth = 0; midLineWidth < 3; ++midLineWidth) {
+ QTest::newRow(qPrintable(QStringLiteral("box_noshadow_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "box_noshadow" << lineWidth << midLineWidth << QFrame::Box << (QFrame::Shadow)0;
+ QTest::newRow(qPrintable(QStringLiteral("box_plain_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "box_plain" << lineWidth << midLineWidth << QFrame::Box << QFrame::Plain;
+ QTest::newRow(qPrintable(QStringLiteral("box_raised_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "box_raised" << lineWidth << midLineWidth << QFrame::Box << QFrame::Raised;
+ QTest::newRow(qPrintable(QStringLiteral("box_sunken_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "box_sunken" << lineWidth << midLineWidth << QFrame::Box << QFrame::Sunken;
+
+ QTest::newRow(qPrintable(QStringLiteral("winpanel_noshadow_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "winpanel_noshadow" << lineWidth << midLineWidth << QFrame::WinPanel << (QFrame::Shadow)0;
+ QTest::newRow(qPrintable(QStringLiteral("winpanel_plain_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "winpanel_plain" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Plain;
+ QTest::newRow(qPrintable(QStringLiteral("winpanel_raised_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "winpanel_raised" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Raised;
+ QTest::newRow(qPrintable(QStringLiteral("winpanel_sunken_%1_%2").arg(lineWidth).arg(midLineWidth)))
+ << "winpanel_sunken" << lineWidth << midLineWidth << QFrame::WinPanel << QFrame::Sunken;
+ }
+ }
+}
+
+void tst_QFrame::testInitStyleOption()
+{
+ QFETCH(QString, basename);
+ QFETCH(int, lineWidth);
+ QFETCH(int, midLineWidth);
+ QFETCH(QFrame::Shape, shape);
+ QFETCH(QFrame::Shadow, shadow);
+
+ Frame frame;
+ frame.setFrameStyle(shape | shadow);
+ frame.setLineWidth(lineWidth);
+ frame.setMidLineWidth(midLineWidth);
+ frame.resize(16, 16);
+
+ QStyleOptionFrame styleOption;
+ frame.initStyleOption(&styleOption);
+
+ switch (shape) {
+ case QFrame::Box:
+ case QFrame::Panel:
+ case QFrame::StyledPanel:
+ case QFrame::HLine:
+ case QFrame::VLine:
+ QCOMPARE(styleOption.lineWidth, lineWidth);
+ QCOMPARE(styleOption.midLineWidth, midLineWidth);
+ break;
+
+ case QFrame::NoFrame:
+ case QFrame::WinPanel:
+ QCOMPARE(styleOption.lineWidth, frame.frameWidth());
+ QCOMPARE(styleOption.midLineWidth, 0);
+ break;
+ }
+
+ QCOMPARE(styleOption.features, QStyleOptionFrame::None);
+ QCOMPARE(styleOption.frameShape, shape);
+ if (shadow == QFrame::Sunken)
+ QVERIFY(styleOption.state & QStyle::State_Sunken);
+ else if (shadow == QFrame::Raised)
+ QVERIFY(styleOption.state & QStyle::State_Raised);
+}
+
QTEST_MAIN(tst_QFrame)
#include "tst_qframe.moc"