tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    94     void setQueryWithNoRowsInResultSet_data() { generic_data(); }
    94     void setQueryWithNoRowsInResultSet_data() { generic_data(); }
    95     void setQueryWithNoRowsInResultSet();
    95     void setQueryWithNoRowsInResultSet();
    96 
    96 
    97     void task_180617();
    97     void task_180617();
    98     void task_180617_data() { generic_data(); }
    98     void task_180617_data() { generic_data(); }
       
    99     void task_QTBUG_4963_setHeaderDataWithProxyModel();
    99 
   100 
   100 private:
   101 private:
   101     void generic_data(const QString &engine=QString());
   102     void generic_data(const QString &engine=QString());
   102     void dropTestTables(QSqlDatabase db);
   103     void dropTestTables(QSqlDatabase db);
   103     void createTestTables(QSqlDatabase db);
   104     void createTestTables(QSqlDatabase db);
   426     QSqlQueryModel model;
   427     QSqlQueryModel model;
   427 
   428 
   428     QVERIFY(!model.setHeaderData(5, Qt::Vertical, "foo"));
   429     QVERIFY(!model.setHeaderData(5, Qt::Vertical, "foo"));
   429     QVERIFY(model.headerData(5, Qt::Vertical).isValid());
   430     QVERIFY(model.headerData(5, Qt::Vertical).isValid());
   430 
   431 
       
   432     model.setQuery(QSqlQuery("select * from " + qTableName("test"), db));
       
   433 
   431     qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
   434     qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
   432     QSignalSpy spy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
   435     QSignalSpy spy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
   433     QVERIFY(model.setHeaderData(2, Qt::Horizontal, "bar"));
   436     QVERIFY(model.setHeaderData(2, Qt::Horizontal, "bar"));
   434     QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
   437     QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
   435     QCOMPARE(spy.count(), 1);
   438     QCOMPARE(spy.count(), 1);
   436     QCOMPARE(qvariant_cast<Qt::Orientation>(spy.value(0).value(0)), Qt::Horizontal);
   439     QCOMPARE(qvariant_cast<Qt::Orientation>(spy.value(0).value(0)), Qt::Horizontal);
   437     QCOMPARE(spy.value(0).value(1).toInt(), 2);
   440     QCOMPARE(spy.value(0).value(1).toInt(), 2);
   438     QCOMPARE(spy.value(0).value(2).toInt(), 2);
   441     QCOMPARE(spy.value(0).value(2).toInt(), 2);
   439 
   442 
   440     QVERIFY(model.setHeaderData(7, Qt::Horizontal, "foo", Qt::ToolTipRole));
   443     QVERIFY(!model.setHeaderData(7, Qt::Horizontal, "foo", Qt::ToolTipRole));
   441     QVERIFY(model.headerData(7, Qt::Horizontal, Qt::ToolTipRole).isValid());
   444     QVERIFY(!model.headerData(7, Qt::Horizontal, Qt::ToolTipRole).isValid());
   442 
       
   443     model.setQuery(QSqlQuery("select * from " + qTableName("test"), db));
       
   444 
   445 
   445     bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
   446     bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
   446     QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), isToUpper ? QString("ID") : QString("id"));
   447     QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), isToUpper ? QString("ID") : QString("id"));
   447     QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), isToUpper ? QString("NAME") : QString("name"));
   448     QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), isToUpper ? QString("NAME") : QString("name"));
   448     QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
   449     QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
   601 
   602 
   602     QCOMPARE(view.columnAt(0),  (error)?-1:0 );
   603     QCOMPARE(view.columnAt(0),  (error)?-1:0 );
   603     QCOMPARE(view.rowAt(0), -1);
   604     QCOMPARE(view.rowAt(0), -1);
   604 }
   605 }
   605 
   606 
       
   607 void tst_QSqlQueryModel::task_QTBUG_4963_setHeaderDataWithProxyModel()
       
   608 {
       
   609     QSqlQueryModel plainModel;
       
   610     QSortFilterProxyModel proxyModel;
       
   611     proxyModel.setSourceModel(&plainModel);
       
   612     QVERIFY(!plainModel.setHeaderData(0, Qt::Horizontal, QObject::tr("ID")));
       
   613     // And it should not crash.
       
   614 }
       
   615 
   606 QTEST_MAIN(tst_QSqlQueryModel)
   616 QTEST_MAIN(tst_QSqlQueryModel)
   607 #include "tst_qsqlquerymodel.moc"
   617 #include "tst_qsqlquerymodel.moc"