From 9f1aa866bda7678261f2f441d4cfd5bb524c2411 Mon Sep 17 00:00:00 2001 From: Jo Asplin Date: Thu, 20 Oct 2011 13:17:26 +0200 Subject: Moved tests into integrationtests/ and widgets/ Task-number: QTBUG-19013 Change-Id: Ibb776f5967c0645ce6d22ef7afdc40657c575461 Reviewed-by: Holger Ihrig --- tests/auto/qformlayout/.gitignore | 1 - tests/auto/qformlayout/qformlayout.pro | 3 - tests/auto/qformlayout/tst_qformlayout.cpp | 913 ----------------------------- 3 files changed, 917 deletions(-) delete mode 100644 tests/auto/qformlayout/.gitignore delete mode 100644 tests/auto/qformlayout/qformlayout.pro delete mode 100644 tests/auto/qformlayout/tst_qformlayout.cpp (limited to 'tests/auto/qformlayout') diff --git a/tests/auto/qformlayout/.gitignore b/tests/auto/qformlayout/.gitignore deleted file mode 100644 index 24e93d561f..0000000000 --- a/tests/auto/qformlayout/.gitignore +++ /dev/null @@ -1 +0,0 @@ -tst_qformlayout diff --git a/tests/auto/qformlayout/qformlayout.pro b/tests/auto/qformlayout/qformlayout.pro deleted file mode 100644 index 24c452af9f..0000000000 --- a/tests/auto/qformlayout/qformlayout.pro +++ /dev/null @@ -1,3 +0,0 @@ -load(qttest_p4) -QT += widgets -SOURCES += tst_qformlayout.cpp diff --git a/tests/auto/qformlayout/tst_qformlayout.cpp b/tests/auto/qformlayout/tst_qformlayout.cpp deleted file mode 100644 index 4425205eb9..0000000000 --- a/tests/auto/qformlayout/tst_qformlayout.cpp +++ /dev/null @@ -1,913 +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 -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -//TESTED_CLASS= -//TESTED_FILES= - -class tst_QFormLayout : public QObject -{ - Q_OBJECT - -public: - tst_QFormLayout(); - ~tst_QFormLayout(); - -public slots: - void initTestCase(); - void cleanupTestCase(); - void init(); - void cleanup(); - -private slots: - void rowCount(); - void buddies(); - void getItemPosition(); - void wrapping(); - void spacing(); - void contentsRect(); - - void setFormStyle(); - void setFieldGrowthPolicy(); - void setRowWrapPolicy(); - void setLabelAlignment(); - void setFormAlignment(); - -/* - void setHorizontalSpacing(int spacing); - int horizontalSpacing() const; - void setVerticalSpacing(int spacing); - int verticalSpacing() const; -*/ - - void addRow(); - void insertRow_QWidget_QWidget(); - void insertRow_QWidget_QLayout(); - void insertRow_QString_QWidget(); - void insertRow_QString_QLayout(); - void insertRow_QWidget(); - void insertRow_QLayout(); - void setWidget(); - void setLayout(); - -/* - QLayoutItem *itemAt(int row, ItemRole role) const; - void getItemPosition(int index, int *rowPtr, ItemRole *rolePtr) const; - void getLayoutPosition(QWidget *widget, int *rowPtr, ItemRole *rolePtr) const; - void getItemPosition(QLayoutItem *item, int *rowPtr, ItemRole *rolePtr) const; - QWidget *labelForField(QWidget *widget) const; - QWidget *labelForField(QLayoutItem *item) const; - - void addItem(QLayoutItem *item); -*/ - - void itemAt(); - void takeAt(); - void layoutAlone(); -/* - void setGeometry(const QRect &rect); - QSize minimumSize() const; - QSize sizeHint() const; - - bool hasHeightForWidth() const; - int heightForWidth(int width) const; - Qt::Orientations expandingDirections() const; -*/ - -}; - -tst_QFormLayout::tst_QFormLayout() -{ -} - -tst_QFormLayout::~tst_QFormLayout() -{ -} - -void tst_QFormLayout::initTestCase() -{ -} - -void tst_QFormLayout::cleanupTestCase() -{ -} - -void tst_QFormLayout::init() -{ -} - -void tst_QFormLayout::cleanup() -{ -} - -void tst_QFormLayout::rowCount() -{ - QWidget *w = new QWidget; - QFormLayout *fl = new QFormLayout(w); - - fl->addRow(tr("Label 1"), new QLineEdit); - fl->addRow(tr("Label 2"), new QLineEdit); - fl->addRow(tr("Label 3"), new QLineEdit); - QCOMPARE(fl->rowCount(), 3); - - fl->addRow(new QWidget); - fl->addRow(new QHBoxLayout); - QCOMPARE(fl->rowCount(), 5); - - fl->insertRow(1, tr("Label 0.5"), new QLineEdit); - QCOMPARE(fl->rowCount(), 6); - - //TODO: remove items - - delete w; -} - -void tst_QFormLayout::buddies() -{ - QWidget *w = new QWidget; - QFormLayout *fl = new QFormLayout(w); - - //normal buddy case - QLineEdit *le = new QLineEdit; - fl->addRow(tr("Label 1"), le); - QLabel *label = qobject_cast(fl->labelForField(le)); - QVERIFY(label); - QWidget *lew = le; - QCOMPARE(label->buddy(), lew); - - //null label - QLineEdit *le2 = new QLineEdit; - fl->addRow(0, le2); - QWidget *label2 = fl->labelForField(le2); - QVERIFY(label2 == 0); - - //no label - QLineEdit *le3 = new QLineEdit; - fl->addRow(le3); - QWidget *label3 = fl->labelForField(le3); - QVERIFY(label3 == 0); - - //TODO: empty label? - - delete w; -} - -void tst_QFormLayout::getItemPosition() -{ - QWidget *w = new QWidget; - QFormLayout *fl = new QFormLayout(w); - - QList labels; - QList fields; - for (int i = 0; i < 5; ++i) { - labels.append(new QLabel(QString("Label %1").arg(i+1))); - fields.append(new QLineEdit); - fl->addRow(labels[i], fields[i]); - } - - //a field - { - int row; - QFormLayout::ItemRole role; - fl->getWidgetPosition(fields[3], &row, &role); - QCOMPARE(row, 3); - QCOMPARE(role, QFormLayout::FieldRole); - } - - //a label - { - int row; - QFormLayout::ItemRole role; - fl->getWidgetPosition(labels[2], &row, &role); - QCOMPARE(row, 2); - QCOMPARE(role, QFormLayout::LabelRole); - } - - //a layout that's been inserted - { - QVBoxLayout *vbl = new QVBoxLayout; - fl->insertRow(2, "Label 1.5", vbl); - int row; - QFormLayout::ItemRole role; - fl->getLayoutPosition(vbl, &row, &role); - QCOMPARE(row, 2); - QCOMPARE(role, QFormLayout::FieldRole); - } - - delete w; -} - -void tst_QFormLayout::wrapping() -{ - QWidget *w = new QWidget; - QFormLayout *fl = new QFormLayout(w); - fl->setRowWrapPolicy(QFormLayout::WrapLongRows); - - QLineEdit *le = new QLineEdit; - QLabel *lbl = new QLabel("A long label"); - le->setMinimumWidth(200); - fl->addRow(lbl, le); - - w->setFixedWidth(240); - w->show(); - - QCOMPARE(le->geometry().y() > lbl->geometry().y(), true); - - //TODO: additional tests covering different wrapping cases - - delete w; -} - -class CustomLayoutStyle : public QWindowsStyle -{ - Q_OBJECT -public: - CustomLayoutStyle() - { - hspacing = 5; - vspacing = 10; - } - - virtual int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, - const QWidget * widget = 0 ) const; - - int hspacing; - int vspacing; -}; - -int CustomLayoutStyle::pixelMetric(PixelMetric metric, const QStyleOption * option /*= 0*/, - const QWidget * widget /*= 0*/ ) const -{ - switch (metric) { - case PM_LayoutHorizontalSpacing: - return hspacing; - case PM_LayoutVerticalSpacing: - return vspacing; - break; - default: - break; - } - return QWindowsStyle::pixelMetric(metric, option, widget); -} - -void tst_QFormLayout::spacing() -{ - //TODO: confirm spacing behavior - QWidget *w = new QWidget; - CustomLayoutStyle *style = new CustomLayoutStyle; - style->hspacing = 5; - style->vspacing = 10; - w->setStyle(style); - QFormLayout *fl = new QFormLayout(w); - QCOMPARE(style->hspacing, fl->horizontalSpacing()); - QCOMPARE(style->vspacing, fl->verticalSpacing()); - - //QCOMPARE(fl->spacing(), -1); - fl->setVerticalSpacing(5); - QCOMPARE(5, fl->horizontalSpacing()); - QCOMPARE(5, fl->verticalSpacing()); - //QCOMPARE(fl->spacing(), 5); - fl->setVerticalSpacing(-1); - QCOMPARE(style->hspacing, fl->horizontalSpacing()); - QCOMPARE(style->vspacing, fl->verticalSpacing()); - - style->hspacing = 5; - style->vspacing = 5; - //QCOMPARE(fl->spacing(), 5); - - fl->setHorizontalSpacing(20); - //QCOMPARE(fl->spacing(), -1); - style->vspacing = 20; - QCOMPARE(fl->horizontalSpacing(), 20); - QCOMPARE(fl->verticalSpacing(), 20); - //QCOMPARE(fl->spacing(), 20); - fl->setHorizontalSpacing(-1); - //QCOMPARE(fl->spacing(), -1); - style->hspacing = 20; - //QCOMPARE(fl->spacing(), 20); - - delete w; - delete style; -} - -void tst_QFormLayout::contentsRect() -{ - QWidget w; - QFormLayout form; - w.setLayout(&form); - form.addRow("Label", new QPushButton(&w)); - w.show(); -/*#if defined(Q_WS_X11) - qt_x11_wait_for_window_manager(&w); // wait for the show -#endif*/ - int l, t, r, b; - form.getContentsMargins(&l, &t, &r, &b); - QRect geom = form.geometry(); - - QCOMPARE(geom.adjusted(+l, +t, -r, -b), form.contentsRect()); -} - - -class DummyMacStyle : public QCommonStyle -{ -public: - virtual int styleHint ( StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0 ) const - { - switch(hint) { - case SH_FormLayoutFormAlignment: - return Qt::AlignHCenter | Qt::AlignTop; - case SH_FormLayoutLabelAlignment: - return Qt::AlignRight; - case SH_FormLayoutWrapPolicy: - return QFormLayout::DontWrapRows; - case SH_FormLayoutFieldGrowthPolicy: - return QFormLayout::FieldsStayAtSizeHint; - default: - return QCommonStyle::styleHint(hint, option, widget, returnData); - } - } -}; - -class DummyQtopiaStyle : public QCommonStyle -{ -public: - virtual int styleHint ( StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0 ) const - { - switch(hint) { - case SH_FormLayoutFormAlignment: - return Qt::AlignLeft | Qt::AlignTop; - case SH_FormLayoutLabelAlignment: - return Qt::AlignRight; - case SH_FormLayoutWrapPolicy: - return QFormLayout::WrapLongRows; - case SH_FormLayoutFieldGrowthPolicy: - return QFormLayout::AllNonFixedFieldsGrow; - default: - return QCommonStyle::styleHint(hint, option, widget, returnData); - } - } -}; - -void tst_QFormLayout::setFormStyle() -{ - QWidget widget; - QFormLayout layout; - widget.setLayout(&layout); - -#ifndef QT_NO_STYLE_PLASTIQUE - widget.setStyle(new QPlastiqueStyle()); - - QVERIFY(layout.labelAlignment() == Qt::AlignRight); - QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop)); - QVERIFY(layout.fieldGrowthPolicy() == QFormLayout::ExpandingFieldsGrow); - QVERIFY(layout.rowWrapPolicy() == QFormLayout::DontWrapRows); -#endif - - widget.setStyle(new QWindowsStyle()); - - QVERIFY(layout.labelAlignment() == Qt::AlignLeft); - QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop)); - QVERIFY(layout.fieldGrowthPolicy() == QFormLayout::AllNonFixedFieldsGrow); - QVERIFY(layout.rowWrapPolicy() == QFormLayout::DontWrapRows); - - /* can't directly create mac style or qtopia style, since - this test is cross platform.. so create dummy styles that - return all the right stylehints. - */ - widget.setStyle(new DummyMacStyle()); - - QVERIFY(layout.labelAlignment() == Qt::AlignRight); - QVERIFY(layout.formAlignment() == (Qt::AlignHCenter | Qt::AlignTop)); - QVERIFY(layout.fieldGrowthPolicy() == QFormLayout::FieldsStayAtSizeHint); - QVERIFY(layout.rowWrapPolicy() == QFormLayout::DontWrapRows); - - widget.setStyle(new DummyQtopiaStyle()); - - QVERIFY(layout.labelAlignment() == Qt::AlignRight); - QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop)); - QVERIFY(layout.fieldGrowthPolicy() == QFormLayout::AllNonFixedFieldsGrow); - QVERIFY(layout.rowWrapPolicy() == QFormLayout::WrapLongRows); -} - -void tst_QFormLayout::setFieldGrowthPolicy() -{ - QWidget window; - QLineEdit fld1, fld2, fld3; - fld1.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - fld2.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - fld3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - QFormLayout layout; - layout.addRow("One:", &fld1); - layout.addRow("Two:", &fld2); - layout.addRow("Three:", &fld3); - window.setLayout(&layout); - window.resize(1000, 200); - - for (int i = 0; i < 3; ++i) { - layout.setFieldGrowthPolicy(i == 0 ? QFormLayout::FieldsStayAtSizeHint : - i == 1 ? QFormLayout::ExpandingFieldsGrow : - QFormLayout::AllNonFixedFieldsGrow); - layout.activate(); - - if (i == 0) { - QVERIFY(fld1.width() == fld2.width()); - QVERIFY(fld2.width() == fld3.width()); - } else if (i == 1) { - QVERIFY(fld1.width() == fld2.width()); - QVERIFY(fld2.width() < fld3.width()); - } else { - QVERIFY(fld1.width() < fld2.width()); - QVERIFY(fld2.width() == fld3.width()); - } - } -} - -void tst_QFormLayout::setRowWrapPolicy() -{ -} - -void tst_QFormLayout::setLabelAlignment() -{ -} - -void tst_QFormLayout::setFormAlignment() -{ -} - -void tst_QFormLayout::addRow() -{ - QFormLayout layout; - QWidget w1, w2, w3; - QHBoxLayout l1, l2, l3; - QLabel lbl1, lbl2; - - QCOMPARE(layout.rowCount(), 0); - - layout.addRow(&lbl1, &w1); - layout.addRow(&lbl2, &l1); - layout.addRow("Foo:", &w2); - layout.addRow("Bar:", &l2); - layout.addRow(&w3); - layout.addRow(&l3); - - QCOMPARE(layout.rowCount(), 6); - - QVERIFY(layout.itemAt(0, QFormLayout::LabelRole)->widget() == &lbl1); - QVERIFY(layout.itemAt(1, QFormLayout::LabelRole)->widget() == &lbl2); - QVERIFY(layout.itemAt(2, QFormLayout::LabelRole)->widget()->property("text") == "Foo:"); - QVERIFY(layout.itemAt(3, QFormLayout::LabelRole)->widget()->property("text") == "Bar:"); - QVERIFY(layout.itemAt(4, QFormLayout::LabelRole) == 0); - QVERIFY(layout.itemAt(5, QFormLayout::LabelRole) == 0); - - QVERIFY(layout.itemAt(0, QFormLayout::FieldRole)->widget() == &w1); - QVERIFY(layout.itemAt(1, QFormLayout::FieldRole)->layout() == &l1); - QVERIFY(layout.itemAt(2, QFormLayout::FieldRole)->widget() == &w2); - QVERIFY(layout.itemAt(3, QFormLayout::FieldRole)->layout() == &l2); -// ### should have a third role, FullRowRole? -// QVERIFY(layout.itemAt(4, QFormLayout::FieldRole) == 0); -// QVERIFY(layout.itemAt(5, QFormLayout::FieldRole) == 0); -} - -void tst_QFormLayout::insertRow_QWidget_QWidget() -{ - QFormLayout layout; - QLabel lbl1, lbl2, lbl3, lbl4; - QLineEdit fld1, fld2, fld3, fld4; - - layout.insertRow(0, &lbl1, &fld1); - QCOMPARE(layout.rowCount(), 1); - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&lbl1, &row, &role); - QCOMPARE(row, 0); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&fld1, &row, &role); - QCOMPARE(row, 0); - QCOMPARE(int(role), int(QFormLayout::FieldRole)); - } - - // check that negative values append - layout.insertRow(-2, &lbl2, &fld2); - QCOMPARE(layout.rowCount(), 2); - - QVERIFY(layout.itemAt(0, QFormLayout::LabelRole)->widget() == &lbl1); - QVERIFY(layout.itemAt(1, QFormLayout::LabelRole)->widget() == &lbl2); - - // check that too large values append - layout.insertRow(100, &lbl3, &fld3); - QCOMPARE(layout.rowCount(), 3); - QCOMPARE(layout.count(), 6); - - layout.insertRow(3, (QWidget *)0, (QWidget *)0); - QCOMPARE(layout.rowCount(), 4); - QCOMPARE(layout.count(), 6); - - layout.insertRow(4, (QWidget *)0, &fld4); - QCOMPARE(layout.rowCount(), 5); - QCOMPARE(layout.count(), 7); - - layout.insertRow(5, &lbl4, (QWidget *)0); - QCOMPARE(layout.rowCount(), 6); - QCOMPARE(layout.count(), 8); - - QVERIFY(layout.itemAt(0, QFormLayout::LabelRole)->widget() == &lbl1); - QVERIFY(layout.itemAt(1, QFormLayout::LabelRole)->widget() == &lbl2); - QVERIFY(layout.itemAt(2, QFormLayout::LabelRole)->widget() == &lbl3); - QVERIFY(layout.itemAt(3, QFormLayout::LabelRole) == 0); - QVERIFY(layout.itemAt(4, QFormLayout::LabelRole) == 0); - QVERIFY(layout.itemAt(5, QFormLayout::LabelRole)->widget() == &lbl4); - - QVERIFY(layout.itemAt(0, QFormLayout::FieldRole)->widget() == &fld1); - QVERIFY(layout.itemAt(1, QFormLayout::FieldRole)->widget() == &fld2); - QVERIFY(layout.itemAt(2, QFormLayout::FieldRole)->widget() == &fld3); - QVERIFY(layout.itemAt(3, QFormLayout::FieldRole) == 0); - QVERIFY(layout.itemAt(4, QFormLayout::FieldRole)->widget() == &fld4); - QVERIFY(layout.itemAt(5, QFormLayout::FieldRole) == 0); -} - -void tst_QFormLayout::insertRow_QWidget_QLayout() -{ - QFormLayout layout; - QLabel lbl1, lbl2, lbl3, lbl4; - QHBoxLayout fld1, fld2, fld3, fld4; - - layout.insertRow(0, &lbl1, &fld1); - QCOMPARE(layout.rowCount(), 1); - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&lbl1, &row, &role); - QCOMPARE(row, 0); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(&fld1, &row, &role); - QCOMPARE(row, 0); - QCOMPARE(int(role), int(QFormLayout::FieldRole)); - } - - // check that negative values append - layout.insertRow(-2, &lbl2, &fld2); - QCOMPARE(layout.rowCount(), 2); - - QVERIFY(layout.itemAt(0, QFormLayout::LabelRole)->widget() == &lbl1); - QVERIFY(layout.itemAt(1, QFormLayout::LabelRole)->widget() == &lbl2); - - // check that too large values append - layout.insertRow(100, &lbl3, &fld3); - QCOMPARE(layout.rowCount(), 3); - - QVERIFY(layout.itemAt(0, QFormLayout::LabelRole)->widget() == &lbl1); - QVERIFY(layout.itemAt(1, QFormLayout::LabelRole)->widget() == &lbl2); - QVERIFY(layout.itemAt(2, QFormLayout::LabelRole)->widget() == &lbl3); - - QVERIFY(layout.itemAt(0, QFormLayout::FieldRole)->layout() == &fld1); - QVERIFY(layout.itemAt(1, QFormLayout::FieldRole)->layout() == &fld2); - QVERIFY(layout.itemAt(2, QFormLayout::FieldRole)->layout() == &fld3); -} - -void tst_QFormLayout::insertRow_QString_QWidget() -{ - QFormLayout layout; - QLineEdit fld1, fld2, fld3; - - layout.insertRow(-5, "&Name:", &fld1); - QLabel *label1 = qobject_cast(layout.itemAt(0, QFormLayout::LabelRole)->widget()); - QVERIFY(label1 != 0); - QVERIFY(label1->buddy() == &fld1); - - layout.insertRow(0, "&Email:", &fld2); - QLabel *label2 = qobject_cast(layout.itemAt(0, QFormLayout::LabelRole)->widget()); - QVERIFY(label2 != 0); - QVERIFY(label2->buddy() == &fld2); - - layout.insertRow(5, "&Age:", &fld3); - QLabel *label3 = qobject_cast(layout.itemAt(2, QFormLayout::LabelRole)->widget()); - QVERIFY(label3 != 0); - QVERIFY(label3->buddy() == &fld3); -} - -void tst_QFormLayout::insertRow_QString_QLayout() -{ - QFormLayout layout; - QHBoxLayout fld1, fld2, fld3; - - layout.insertRow(-5, "&Name:", &fld1); - QLabel *label1 = qobject_cast(layout.itemAt(0, QFormLayout::LabelRole)->widget()); - QVERIFY(label1 != 0); - QVERIFY(label1->buddy() == 0); - - QCOMPARE(layout.rowCount(), 1); - - layout.insertRow(0, "&Email:", &fld2); - QLabel *label2 = qobject_cast(layout.itemAt(0, QFormLayout::LabelRole)->widget()); - QVERIFY(label2 != 0); - QVERIFY(label2->buddy() == 0); - - QCOMPARE(layout.rowCount(), 2); - - layout.insertRow(5, "&Age:", &fld3); - QLabel *label3 = qobject_cast(layout.itemAt(2, QFormLayout::LabelRole)->widget()); - QVERIFY(label3 != 0); - QVERIFY(label3->buddy() == 0); - - QCOMPARE(layout.rowCount(), 3); -} - -void tst_QFormLayout::insertRow_QWidget() -{ - // ### come back to this later -} - -void tst_QFormLayout::insertRow_QLayout() -{ - // ### come back to this later -} - -void tst_QFormLayout::setWidget() -{ - QFormLayout layout; - - QWidget w1; - QWidget w2; - QWidget w3; - QWidget w4; - - QCOMPARE(layout.count(), 0); - QCOMPARE(layout.rowCount(), 0); - - layout.setWidget(5, QFormLayout::LabelRole, &w1); - QCOMPARE(layout.count(), 1); - QCOMPARE(layout.rowCount(), 6); - - layout.setWidget(3, QFormLayout::FieldRole, &w2); - layout.setWidget(3, QFormLayout::LabelRole, &w3); - QCOMPARE(layout.count(), 3); - QCOMPARE(layout.rowCount(), 6); - - // should be ignored and generate warnings - layout.setWidget(3, QFormLayout::FieldRole, &w4); - layout.setWidget(-1, QFormLayout::FieldRole, &w4); - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&w1, &row, &role); - QCOMPARE(row, 5); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&w2, &row, &role); - QCOMPARE(row, 3); - QCOMPARE(int(role), int(QFormLayout::FieldRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&w3, &row, &role); - QCOMPARE(row, 3); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(&w4, &row, &role); - QCOMPARE(row, -1); - QCOMPARE(int(role), -123); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getWidgetPosition(0, &row, &role); - QCOMPARE(row, -1); - QCOMPARE(int(role), -123); - } -} - -void tst_QFormLayout::setLayout() -{ - QFormLayout layout; - - QHBoxLayout l1; - QHBoxLayout l2; - QHBoxLayout l3; - QHBoxLayout l4; - - QCOMPARE(layout.count(), 0); - QCOMPARE(layout.rowCount(), 0); - - layout.setLayout(5, QFormLayout::LabelRole, &l1); - QCOMPARE(layout.count(), 1); - QCOMPARE(layout.rowCount(), 6); - - layout.setLayout(3, QFormLayout::FieldRole, &l2); - layout.setLayout(3, QFormLayout::LabelRole, &l3); - QCOMPARE(layout.count(), 3); - QCOMPARE(layout.rowCount(), 6); - - // should be ignored and generate warnings - layout.setLayout(3, QFormLayout::FieldRole, &l4); - layout.setLayout(-1, QFormLayout::FieldRole, &l4); - QCOMPARE(layout.count(), 3); - QCOMPARE(layout.rowCount(), 6); - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(&l1, &row, &role); - QCOMPARE(row, 5); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(&l2, &row, &role); - QCOMPARE(row, 3); - QCOMPARE(int(role), int(QFormLayout::FieldRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(&l3, &row, &role); - QCOMPARE(row, 3); - QCOMPARE(int(role), int(QFormLayout::LabelRole)); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(&l4, &row, &role); - QCOMPARE(row, -1); - QCOMPARE(int(role), -123); - } - - { - int row = -1; - QFormLayout::ItemRole role = QFormLayout::ItemRole(-123); - layout.getLayoutPosition(0, &row, &role); - QCOMPARE(row, -1); - QCOMPARE(int(role), -123); - } -} - -void tst_QFormLayout::itemAt() -{ - QFormLayout layout; - - QWidget w1; - QWidget w2; - QWidget w3; - QWidget w4; - QWidget w5; - QHBoxLayout l6; - - layout.setWidget(5, QFormLayout::LabelRole, &w1); - layout.setWidget(3, QFormLayout::FieldRole, &w2); - layout.setWidget(3, QFormLayout::LabelRole, &w3); - layout.addRow(&w4, &w5); - layout.addRow("Foo:", &l6); - - QCOMPARE(layout.count(), 7); - - QBitArray scoreBoard(7); - for (int i = 0; i < 7; ++i) { - QLayoutItem *item = layout.itemAt(i); - QVERIFY(item != 0); - - if (item->widget() == &w1) { - scoreBoard[0] = true; - } else if (item->widget() == &w2) { - scoreBoard[1] = true; - } else if (item->widget() == &w3) { - scoreBoard[2] = true; - } else if (item->widget() == &w4) { - scoreBoard[3] = true; - } else if (item->widget() == &w5) { - scoreBoard[4] = true; - } else if (item->layout() == &l6) { - scoreBoard[5] = true; - } else if (qobject_cast(item->widget())) { - scoreBoard[6] = true; - } - } - QCOMPARE(scoreBoard.count(false), 0); -} - -void tst_QFormLayout::takeAt() -{ - QFormLayout layout; - - QWidget w1; - QWidget w2; - QWidget w3; - QWidget w4; - QWidget w5; - QHBoxLayout l6; - - layout.setWidget(5, QFormLayout::LabelRole, &w1); - layout.setWidget(3, QFormLayout::FieldRole, &w2); - layout.setWidget(3, QFormLayout::LabelRole, &w3); - layout.addRow(&w4, &w5); - layout.addRow("Foo:", &l6); - - QCOMPARE(layout.count(), 7); - - for (int i = 6; i >= 0; --i) { - layout.takeAt(0); - QCOMPARE(layout.count(), i); - } -} - -void tst_QFormLayout::layoutAlone() -{ - QWidget w; - QFormLayout layout; - layout.setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); - w.setLayout(&layout); - QLabel label("Here is a strange test case"); - layout.setWidget(0, QFormLayout::LabelRole, &label); - QHBoxLayout hlay; - layout.setLayout(1, QFormLayout::LabelRole, &hlay); - QCOMPARE(layout.count(), 2); - w.show(); - layout.activate(); - QTest::qWait(500); -} - -QTEST_MAIN(tst_QFormLayout) - -#include "tst_qformlayout.moc" -- cgit v1.2.3