summaryrefslogtreecommitdiffstats
path: root/tests/auto/qtableview
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dietrich-de@nokia.com>2009-10-28 15:10:36 +0100
committerGabriel de Dietrich <gabriel.dietrich-de@nokia.com>2009-10-28 16:00:02 +0100
commitd560894ad085ac8c6266fd1af66139db950f473f (patch)
tree1b74d63950a7c1accc2c0c97b8de105b637f65e7 /tests/auto/qtableview
parent6e228d57da9d5dd9b7365d5539f6ed88cafb5d97 (diff)
Fixed bug in QTableView spans.
In some cases, the spans internal structure was left in an inconsistent state. Auto-test included. Bonus: spans consistency checking method. Task-number: QTBUG-5062 Reviewed-by: Olivier
Diffstat (limited to 'tests/auto/qtableview')
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp
index 8f8781da70..fe2794fe16 100644
--- a/tests/auto/qtableview/tst_qtableview.cpp
+++ b/tests/auto/qtableview/tst_qtableview.cpp
@@ -41,6 +41,7 @@
#include <QtGui/QtGui>
+#include <private/qtablewidget_p.h>
#include <QtTest/QtTest>
#include "../../shared/util.h"
#include "private/qapplication_p.h"
@@ -58,6 +59,13 @@
} \
} while(0)
+#ifdef QT_BUILD_INTERNAL
+#define VERIFY_SPANS_CONSISTENCY(TEST_VIEW_) \
+ QVERIFY(static_cast<QTableViewPrivate*>(QObjectPrivate::get(TEST_VIEW_))->spans.checkConsistency())
+#else
+#define VERIFY_SPANS_CONSISTENCY(TEST_VIEW_) (void)false
+#endif
+
typedef QList<int> IntList;
Q_DECLARE_METATYPE(IntList)
@@ -188,6 +196,7 @@ private slots:
void task248688_autoScrollNavigation();
void task259308_scrollVerticalHeaderSwappedSections();
void task191545_dragSelectRows();
+ void taskQTBUG_5062_spansInconsistency();
void mouseWheel_data();
void mouseWheel();
@@ -2899,6 +2908,8 @@ void tst_QTableView::span()
view.clearSpans();
QCOMPARE(view.rowSpan(row, column), 1);
QCOMPARE(view.columnSpan(row, column), 1);
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
typedef QVector<QRect> SpanList;
@@ -3034,6 +3045,8 @@ void tst_QTableView::spans()
QCOMPARE(view.columnSpan(pos.x(), pos.y()), expectedColumnSpan);
QCOMPARE(view.rowSpan(pos.x(), pos.y()), expectedRowSpan);
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
void tst_QTableView::spansAfterRowInsertion()
@@ -3068,6 +3081,8 @@ void tst_QTableView::spansAfterRowInsertion()
view.model()->insertRows(12, 2);
QCOMPARE(view.rowSpan(7, 3), 5);
QCOMPARE(view.columnSpan(7, 3), 3);
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
void tst_QTableView::spansAfterColumnInsertion()
@@ -3102,6 +3117,8 @@ void tst_QTableView::spansAfterColumnInsertion()
view.model()->insertColumns(12, 2);
QCOMPARE(view.rowSpan(3, 7), 3);
QCOMPARE(view.columnSpan(3, 7), 5);
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
void tst_QTableView::spansAfterRowRemoval()
@@ -3139,6 +3156,8 @@ void tst_QTableView::spansAfterRowRemoval()
QCOMPARE(view.columnSpan(span.top(), span.left()), span.width());
QCOMPARE(view.rowSpan(span.top(), span.left()), span.height());
}
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
void tst_QTableView::spansAfterColumnRemoval()
@@ -3177,6 +3196,8 @@ void tst_QTableView::spansAfterColumnRemoval()
QCOMPARE(view.columnSpan(span.left(), span.top()), span.height());
QCOMPARE(view.rowSpan(span.left(), span.top()), span.width());
}
+
+ VERIFY_SPANS_CONSISTENCY(&view);
}
class Model : public QAbstractTableModel {
@@ -3845,5 +3866,22 @@ void tst_QTableView::task234926_setHeaderSorting()
QCOMPARE(model.stringList() , sortedDataD);
}
+void tst_QTableView::taskQTBUG_5062_spansInconsistency()
+{
+ const int nRows = 5;
+ const int nColumns = 5;
+
+ QtTestTableModel model(nRows, nColumns);
+ QtTestTableView view;
+ view.setModel(&model);
+
+ for (int i = 0; i < nRows; ++i)
+ view.setSpan(i, 0, 1, nColumns);
+ view.setSpan(2, 0, 1, 1);
+ view.setSpan(3, 0, 1, 1);
+
+ VERIFY_SPANS_CONSISTENCY(&view);
+}
+
QTEST_MAIN(tst_QTableView)
#include "tst_qtableview.moc"