summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2013-04-04 08:45:50 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-25 19:59:16 +0200
commit8f125985dbebef9ab9db31e8a180d01b7452030e (patch)
tree36e6c192f46bbb1488fb021b3809305cc669f910 /tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
parent89e2319322e2e29d6297e72431c9327358e3be21 (diff)
Cleanup the SQL tests
This removes some XFAILS that were no longer correct and fixes some existing problems in the tests where ODBC is concerned. Change-Id: I91de526bb50ad4046ba07ddb5336aa3714966687 Reviewed-by: Mark Brand <mabrand@mabrand.nl> Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Diffstat (limited to 'tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp')
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp81
1 files changed, 46 insertions, 35 deletions
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index b218a0c4f7..37c08e5101 100644
--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -151,14 +151,15 @@ void tst_QSqlRelationalTableModel::initTestCase()
{
foreach (const QString &dbname, dbs.dbNames) {
QSqlDatabase db=QSqlDatabase::database(dbname);
- if (db.driverName().startsWith("QIBASE"))
+ QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriverPrivate::Interbase) {
db.exec("SET DIALECT 3");
- else if (tst_Databases::isSqlServer(db)) {
+ } else if (dbType == QSqlDriverPrivate::MSSqlServer) {
db.exec("SET ANSI_DEFAULTS ON");
db.exec("SET IMPLICIT_TRANSACTIONS OFF");
- }
- else if(tst_Databases::isPostgreSQL(db))
+ } else if (dbType == QSqlDriverPrivate::PostgreSQL) {
db.exec("set client_min_messages='warning'");
+ }
recreateTestTables(db);
}
}
@@ -245,6 +246,7 @@ void tst_QSqlRelationalTableModel::setData()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
// set the values using OnRowChange Strategy
{
@@ -327,7 +329,7 @@ void tst_QSqlRelationalTableModel::setData()
//sybase doesn't allow tables with the same alias used twice as col names
//so don't set up an identical relation when using the tds driver
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
@@ -340,7 +342,7 @@ void tst_QSqlRelationalTableModel::setData()
QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
@@ -358,12 +360,12 @@ void tst_QSqlRelationalTableModel::setData()
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
QVERIFY_SQL(model, select());
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
@@ -560,6 +562,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
QSqlRelationalTableModel model(0, db);
@@ -567,14 +570,14 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
model.setSort(0, Qt::AscendingOrder);
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
QVERIFY_SQL(model, select());
QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
else
QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
@@ -588,7 +591,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,0)).toInt(), 1011);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("test"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
@@ -596,7 +599,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(1,0)).toInt(), 1);
QCOMPARE(model.data(model.index(1,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(1,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(1,3)).toString(), QString("mister"));
else
QCOMPARE(model.data(model.index(1,3)).toInt(), 2);
@@ -613,7 +616,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS")) {
+ if (dbType != QSqlDriverPrivate::Sybase) {
QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
model.setData(model.index(0,3),1);
QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
@@ -637,7 +640,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,0)).toInt(),1012);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("george"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
else
QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
@@ -646,7 +649,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(1,0)).toInt(),1013);
QCOMPARE(model.data(model.index(1,1)).toString(), QString("kramer"));
QCOMPARE(model.data(model.index(1,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(1,3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(1,3)).toInt(), 1);
@@ -654,7 +657,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(2,0)).toInt(), 1);
QCOMPARE(model.data(model.index(2,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(2,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(2,3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(2,3)).toInt(), 1);
@@ -751,12 +754,13 @@ void tst_QSqlRelationalTableModel::sort()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
QSqlRelationalTableModel model(0, db);
model.setTable(reltest1);
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
model.setSort(2, Qt::DescendingOrder);
@@ -772,7 +776,7 @@ void tst_QSqlRelationalTableModel::sort()
model.setSort(3, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
- if (!db.driverName().startsWith("QTDS")) {
+ if (dbType != QSqlDriverPrivate::Sybase) {
QCOMPARE(model.rowCount(), 4);
QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
QCOMPARE(model.data(model.index(1, 3)).toString(), QString("mister"));
@@ -801,7 +805,7 @@ void tst_QSqlRelationalTableModel::sort()
model.setSort(3, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
- if (!db.driverName().startsWith("QTDS")) {
+ if (dbType != QSqlDriverPrivate::Sybase) {
QCOMPARE(model.rowCount(), 6);
QCOMPARE(model.data(model.index(0, 3)).toString(), QString(""));
QCOMPARE(model.data(model.index(1, 3)).toString(), QString("herr"));
@@ -916,13 +920,14 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
QSqlRelationalTableModel model(0, db);
model.setTable(reltest1);
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
model.setSort(1, Qt::AscendingOrder);
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
@@ -932,7 +937,7 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
else
QCOMPARE(model.data(model.index(3, 3)).toInt(), 2 );
@@ -947,7 +952,7 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QCOMPARE(model.data(model.index(0, 0)).toInt(), 7);
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("anders"));
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
else
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
@@ -955,7 +960,7 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QCOMPARE(model.data(model.index(4, 0)).toInt(), 3);
QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
+ if (dbType != QSqlDriverPrivate::Sybase)
QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
else
QCOMPARE(model.data(model.index(4, 3)).toInt(), 2);
@@ -969,6 +974,7 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
QSqlRelationalTableModel model(0, db);
model.setTable(reltest3);
@@ -979,7 +985,7 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
model.setRelation(2, QSqlRelation(reltest4, "id", "name"));
QVERIFY_SQL(model, select());
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
QCOMPARE(model.record(1).value((reltest4+QLatin1String("_name_2")).toUpper()).toString(),
QString("Trondheim"));
} else {
@@ -992,7 +998,7 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
rec.setValue(1, "Berge");
rec.setValue(2, 1); // Must insert the key value
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
QCOMPARE(rec.fieldName(0), QLatin1String("ID"));
QCOMPARE(rec.fieldName(1), QLatin1String("NAME")); // This comes from main table
} else {
@@ -1001,7 +1007,7 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
}
// The duplicate field names is aliased because it's comes from the relation's display column.
- if(db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2)
QCOMPARE(rec.fieldName(2), (reltest4+QLatin1String("_name_2")).toUpper());
else
QCOMPARE(rec.fieldName(2), reltest4+QLatin1String("_name_2"));
@@ -1090,8 +1096,9 @@ void tst_QSqlRelationalTableModel::casing()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
- if (db.driverName().startsWith("QSQLITE") || db.driverName().startsWith("QIBASE") || tst_Databases::isSqlServer(db))
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::SQLite || dbType == QSqlDriverPrivate::MSSqlServer)
QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities");
QSqlQuery q(db);
@@ -1110,7 +1117,7 @@ void tst_QSqlRelationalTableModel::casing()
QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db) + " values(2, 'george', 2)"));
QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db) + " values(4, 'kramer', 2)"));
- if (db.driverName().startsWith("QOCI")) {
+ if (dbType == QSqlDriverPrivate::Oracle) {
//try an owner that doesn't exist
QSqlRecord rec = db.driver()->record("doug." + qTableName("CASETEST1", db).toUpper());
QCOMPARE( rec.count(), 0);
@@ -1156,13 +1163,15 @@ void tst_QSqlRelationalTableModel::escapedRelations()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
+
recreateTestTables(db);
QSqlRelationalTableModel model(0, db);
model.setTable(reltest1);
//try with relation table name quoted
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2.toUpper(),QSqlDriver::TableName),
"tid",
"title"));
@@ -1187,7 +1196,7 @@ void tst_QSqlRelationalTableModel::escapedRelations()
//try with index column quoted
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setRelation(2, QSqlRelation(reltest2,
db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName).toUpper(),
"title"));
@@ -1211,7 +1220,7 @@ void tst_QSqlRelationalTableModel::escapedRelations()
//try with display column quoted
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setRelation(2, QSqlRelation(reltest2,
"tid",
@@ -1237,7 +1246,7 @@ void tst_QSqlRelationalTableModel::escapedRelations()
//try with tablename and index and display columns quoted in the relation
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setRelation(2, QSqlRelation(reltest2,
"tid",
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
@@ -1265,12 +1274,13 @@ void tst_QSqlRelationalTableModel::escapedTableName()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
// set the values using OnRowChange Strategy with an escaped tablename
{
QSqlRelationalTableModel model(0, db);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
} else {
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
@@ -1317,7 +1327,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
{
QSqlRelationalTableModel model(0, db);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ if (dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::DB2) {
model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
} else {
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
@@ -1453,8 +1463,9 @@ void tst_QSqlRelationalTableModel::psqlSchemaTest()
QFETCH_GLOBAL(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
+ QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db);
- if(!tst_Databases::isPostgreSQL(db))
+ if (dbType != QSqlDriverPrivate::PostgreSQL)
QSKIP("Postgresql specific test");
QSqlRelationalTableModel model(0, db);