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" |