summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp')
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
index 7168a95397..24177e0859 100644
--- a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -79,6 +79,8 @@ private slots:
void insertColumns();
void removeRows();
void removeColumns();
+ void moveRows();
+ void moveColumns();
void reset();
@@ -142,6 +144,10 @@ public:
void setPersistent(const QModelIndex &from, const QModelIndex &to);
bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() );
bool removeColumns( int column, int count, const QModelIndex & parent = QModelIndex());
+ bool moveRows (const QModelIndex &sourceParent, int sourceRow, int count,
+ const QModelIndex &destinationParent, int destinationChild);
+ bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count,
+ const QModelIndex &destinationParent, int destinationChild);
void reset();
int cCount, rCount;
@@ -246,6 +252,64 @@ bool QtTestModel::removeColumns(int column, int count, const QModelIndex & paren
return true;
}
+bool QtTestModel::moveRows(const QModelIndex &sourceParent, int src, int cnt,
+ const QModelIndex &destinationParent, int dst)
+{
+ if (!QAbstractItemModel::beginMoveRows(sourceParent, src, src + cnt - 1,
+ destinationParent, dst))
+ return false;
+
+ QVector<QString> buf;
+ if (dst < src) {
+ for (int i = 0; i < cnt; ++i) {
+ buf.swap(table[src + i]);
+ table.remove(src + 1);
+ table.insert(dst, buf);
+ }
+ } else if (src < dst) {
+ for (int i = 0; i < cnt; ++i) {
+ buf.swap(table[src]);
+ table.remove(src);
+ table.insert(dst + i, buf);
+ }
+ }
+
+ rCount = table.count();
+
+ QAbstractItemModel::endMoveRows();
+ return true;
+}
+
+bool QtTestModel::moveColumns(const QModelIndex &sourceParent, int src, int cnt,
+ const QModelIndex &destinationParent, int dst)
+{
+ if (!QAbstractItemModel::beginMoveColumns(sourceParent, src, src + cnt - 1,
+ destinationParent, dst))
+ return false;
+
+ for (int r = 0; r < rCount; ++r) {
+ QString buf;
+ if (dst < src) {
+ for (int i = 0; i < cnt; ++i) {
+ buf = table[r][src + i];
+ table[r].remove(src + 1);
+ table[r].insert(dst, buf);
+ }
+ } else if (src < dst) {
+ for (int i = 0; i < cnt; ++i) {
+ buf = table[r][src];
+ table[r].remove(src);
+ table[r].insert(dst + i, buf);
+ }
+ }
+ }
+
+ cCount = table.at(0).count();
+
+ QAbstractItemModel::endMoveColumns();
+ return true;
+}
+
void QtTestModel::reset()
{
QAbstractItemModel::reset();
@@ -781,6 +845,36 @@ void tst_QAbstractItemModel::insertColumns()
QCOMPARE(columnsInsertedSpy.count(), 1);
}
+void tst_QAbstractItemModel::moveRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeMovedSpy(&model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+ QSignalSpy rowsMovedSpy(&model, SIGNAL(rowsMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+
+ QVERIFY(rowsAboutToBeMovedSpy.isValid());
+ QVERIFY(rowsMovedSpy.isValid());
+
+ QCOMPARE(model.moveRows(QModelIndex(), 6, 4, QModelIndex(), 1), true);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 1);
+ QCOMPARE(rowsMovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::moveColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeMovedSpy(&model, SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+ QSignalSpy columnsMovedSpy(&model, SIGNAL(columnsMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+
+ QVERIFY(columnsAboutToBeMovedSpy.isValid());
+ QVERIFY(columnsMovedSpy.isValid());
+
+ QCOMPARE(model.moveColumns(QModelIndex(), 6, 4, QModelIndex(), 1), true);
+ QCOMPARE(columnsAboutToBeMovedSpy.count(), 1);
+ QCOMPARE(columnsMovedSpy.count(), 1);
+}
+
void tst_QAbstractItemModel::reset()
{
QtTestModel model(10, 10);