tests/auto/qlistwidget/tst_qlistwidget.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    44 #include <QtGui/QtGui>
    44 #include <QtGui/QtGui>
    45 #include <qeventloop.h>
    45 #include <qeventloop.h>
    46 #include <qlist.h>
    46 #include <qlist.h>
    47 
    47 
    48 #include <qlistwidget.h>
    48 #include <qlistwidget.h>
       
    49 #include <private/qlistwidget_p.h>
    49 
    50 
    50 //TESTED_CLASS=
    51 //TESTED_CLASS=
    51 //TESTED_FILES=
    52 //TESTED_FILES=
    52 
    53 
    53 class tst_QListWidget : public QObject
    54 class tst_QListWidget : public QObject
    93     void findItems();
    94     void findItems();
    94     void insertItem_data();
    95     void insertItem_data();
    95     void insertItem();
    96     void insertItem();
    96     void insertItems_data();
    97     void insertItems_data();
    97     void insertItems();
    98     void insertItems();
       
    99     void moveItemsPriv_data();
       
   100     void moveItemsPriv();
    98 
   101 
    99     void itemAssignment();
   102     void itemAssignment();
   100     void item_data();
   103     void item_data();
   101     void item();
   104     void item();
   102     void takeItem_data();
   105     void takeItem_data();
   845             QCOMPARE(testWidget->item(r)->text(), QString::number(r));
   848             QCOMPARE(testWidget->item(r)->text(), QString::number(r));
   846         else
   849         else
   847             QCOMPARE(testWidget->item(r)->text(), QString::number(r + removeRows));
   850             QCOMPARE(testWidget->item(r)->text(), QString::number(r + removeRows));
   848 
   851 
   849 
   852 
       
   853 }
       
   854 
       
   855 void tst_QListWidget::moveItemsPriv_data()
       
   856 {
       
   857     QTest::addColumn<int>("rowCount");
       
   858     QTest::addColumn<int>("srcRow");
       
   859     QTest::addColumn<int>("dstRow");
       
   860     QTest::addColumn<bool>("shouldHaveSignaled");
       
   861 
       
   862     QTest::newRow("Empty") << 0 << 0 << 0 << false;
       
   863     QTest::newRow("Overflow src") << 5 << 5 << 2 << false;
       
   864     QTest::newRow("Underflow src") << 5 << -1 << 2 << false;
       
   865     QTest::newRow("Overflow dst") << 5 << 2 << 6 << false;
       
   866     QTest::newRow("Underflow dst") << 5 << 2 << -1 << false;
       
   867     QTest::newRow("Same place") << 5 << 2 << 2 << false;
       
   868     QTest::newRow("Up") << 5 << 4 << 2 << true;
       
   869     QTest::newRow("Down") << 5 << 2 << 4 << true;
       
   870     QTest::newRow("QTBUG-6532 assert") << 5 << 0 << 1 << false;
       
   871     QTest::newRow("QTBUG-6565 to the end") << 5 << 3 << 5 << true;
       
   872     QTest::newRow("Same place 2") << 2 << 0 << 1 << false;
       
   873     QTest::newRow("swap") << 2 << 0 << 2 << true;
       
   874     QTest::newRow("swap2") << 4 << 1 << 3 << true;
       
   875     QTest::newRow("swap3") << 4 << 3 << 2 << true;
       
   876     QTest::newRow("swap4") << 2 << 1 << 0 << true;
       
   877 }
       
   878 
       
   879 void tst_QListWidget::moveItemsPriv()
       
   880 {
       
   881     QFETCH(int, rowCount);
       
   882     QFETCH(int, srcRow);
       
   883     QFETCH(int, dstRow);
       
   884     QFETCH(bool, shouldHaveSignaled);
       
   885 
       
   886     for (int r = 0; r < rowCount; ++r)
       
   887         new QListWidgetItem(QString::number(r), testWidget);
       
   888 
       
   889     QListModel *model = qobject_cast<QListModel *>(testWidget->model());
       
   890     QVERIFY(model);
       
   891     QSignalSpy beginMoveSpy(model, SIGNAL(rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
       
   892     QSignalSpy movedSpy(model, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)));
       
   893     model->move(srcRow, dstRow);
       
   894 
       
   895     if (shouldHaveSignaled) {
       
   896         if (srcRow < dstRow)
       
   897             QCOMPARE(testWidget->item(dstRow - 1)->text(), QString::number(srcRow));
       
   898         else
       
   899             QCOMPARE(testWidget->item(dstRow)->text(), QString::number(srcRow));
       
   900 
       
   901         QCOMPARE(beginMoveSpy.count(), 1);
       
   902         const QList<QVariant> &beginMoveArgs = beginMoveSpy.takeFirst();
       
   903         QCOMPARE(beginMoveArgs.at(1).toInt(), srcRow);
       
   904         QCOMPARE(beginMoveArgs.at(2).toInt(), srcRow);
       
   905         QCOMPARE(beginMoveArgs.at(4).toInt(), dstRow);
       
   906 
       
   907         QCOMPARE(movedSpy.count(), 1);
       
   908         const QList<QVariant> &movedArgs = movedSpy.takeFirst();
       
   909         QCOMPARE(movedArgs.at(1).toInt(), srcRow);
       
   910         QCOMPARE(movedArgs.at(2).toInt(), srcRow);
       
   911         QCOMPARE(movedArgs.at(4).toInt(), dstRow);
       
   912     } else {
       
   913         QCOMPARE(beginMoveSpy.count(), 0);
       
   914         QCOMPARE(movedSpy.count(), 0);
       
   915     }
   850 }
   916 }
   851 
   917 
   852 void tst_QListWidget::itemStreaming_data()
   918 void tst_QListWidget::itemStreaming_data()
   853 {
   919 {
   854     QTest::addColumn<QString>("text");
   920     QTest::addColumn<QString>("text");