diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-09-29 14:07:02 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-09-29 14:08:49 +0200 |
commit | 189dc655bbb3b4f9e1e11596f5a0f4682326066d (patch) | |
tree | 67527f791542775394332c2995887994bde9adc9 /tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | |
parent | 6fd5870df0fbad0187b6d8bf7e3b12afb2e7a66f (diff) | |
parent | dfe853bff90444edf92a993e391df853780c9e8d (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/corelib/tools/qbytearray.cpp
src/gui/image/qimage.cpp
src/gui/image/qppmhandler.cpp
src/gui/kernel/qguiapplication.cpp
src/gui/painting/qpaintengine_raster.cpp
Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
Diffstat (limited to 'tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp')
-rw-r--r-- | tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 134 |
1 files changed, 63 insertions, 71 deletions
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index fa5db999d4..6faf8b7ed5 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -5,36 +5,28 @@ ** ** This file is part of the test suite of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL$ +** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** ** $QT_END_LICENSE$ ** ****************************************************************************/ @@ -242,7 +234,7 @@ struct FieldDef { // excluding the primary key field static int createFieldTable(const FieldDef fieldDefs[], QSqlDatabase db) { - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); const QString tableName = qTableName("qtestfields", __FILE__, db); tst_Databases::safeDropTable(db, tableName); QSqlQuery q(db); @@ -251,7 +243,7 @@ static int createFieldTable(const FieldDef fieldDefs[], QSqlDatabase db) QString autoName = tst_Databases::autoFieldName(db); if (tst_Databases::isMSAccess(db)) qs.append(" (id int not null"); - else if (dbType == QSqlDriverPrivate::PostgreSQL) + else if (dbType == QSqlDriver::PostgreSQL) qs.append(" (id serial not null"); else qs.append(QString("(id integer not null %1 primary key").arg(autoName)); @@ -259,7 +251,7 @@ static int createFieldTable(const FieldDef fieldDefs[], QSqlDatabase db) int i = 0; for (i = 0; !fieldDefs[ i ].typeName.isNull(); ++i) { qs += QString(",\n %1 %2").arg(fieldDefs[ i ].fieldName()).arg(fieldDefs[ i ].typeName); - if ((dbType == QSqlDriverPrivate::Sybase || dbType == QSqlDriverPrivate::MSSqlServer) && fieldDefs[i].nullable) + if ((dbType == QSqlDriver::Sybase || dbType == QSqlDriver::MSSqlServer) && fieldDefs[i].nullable) qs += " null"; } @@ -289,15 +281,15 @@ void tst_QSqlDatabase::createTestTables(QSqlDatabase db) return; const QString tableName = qTableName("qtest", __FILE__, db); QSqlQuery q(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::MySqlServer) { + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::MySqlServer) { // ### stupid workaround until we find a way to hardcode this // in the MySQL server startup script q.exec("set table_type=innodb"); - } else if (dbType == QSqlDriverPrivate::MSSqlServer) { + } else if (dbType == QSqlDriver::MSSqlServer) { QVERIFY_SQL(q, exec("SET ANSI_DEFAULTS ON")); QVERIFY_SQL(q, exec("SET IMPLICIT_TRANSACTIONS OFF")); - } else if (dbType == QSqlDriverPrivate::PostgreSQL) { + } else if (dbType == QSqlDriver::PostgreSQL) { QVERIFY_SQL( q, exec("set client_min_messages='warning'")); } // please never ever change this table; otherwise fix all tests ;) @@ -326,8 +318,8 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) if (!db.isValid()) return; - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::PostgreSQL) { + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::PostgreSQL) { QSqlQuery q(db); QVERIFY_SQL( q, exec("set client_min_messages='warning'")); } @@ -358,7 +350,7 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) << qTableName("bug_249059", __FILE__, db); QSqlQuery q(0, db); - if (dbType == QSqlDriverPrivate::PostgreSQL) { + if (dbType == QSqlDriver::PostgreSQL) { q.exec("drop schema " + qTableName("qtestschema", __FILE__, db) + " cascade"); q.exec("drop schema " + qTableName("qtestScHeMa", __FILE__, db) + " cascade"); } @@ -368,7 +360,7 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) tst_Databases::safeDropTables(db, tableNames); - if (dbType == QSqlDriverPrivate::Oracle) { + if (dbType == QSqlDriver::Oracle) { q.exec("drop user "+qTableName("CREATOR", __FILE__, db)+ " cascade"); q.exec("drop user "+qTableName("APPUSER", __FILE__, db) + " cascade"); q.exec("DROP TABLE sys."+qTableName("mypassword", __FILE__, db)); @@ -493,8 +485,8 @@ void tst_QSqlDatabase::open() QVERIFY(!db.isOpenError()); } - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::SQLite && db.databaseName() == ":memory:") { + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::SQLite && db.databaseName() == ":memory:") { // tables in in-memory databases don't survive an open/close createTestTables(db); populateTestTables(db); @@ -506,7 +498,7 @@ void tst_QSqlDatabase::tables() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); const QString qtest(qTableName("qtest", __FILE__, db)), qtest_view(qTableName("qtest_view", __FILE__, db)), temp_tab(qTableName("test_tab", __FILE__, db)); @@ -561,7 +553,7 @@ void tst_QSqlDatabase::tables() QVERIFY(tables.contains(temp_tab, Qt::CaseInsensitive)); QVERIFY(tables.contains(qtest, Qt::CaseInsensitive)); - if (dbType == QSqlDriverPrivate::PostgreSQL) + if (dbType == QSqlDriver::PostgreSQL) QVERIFY(tables.contains(qtest + " test")); } @@ -570,7 +562,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); if (testWhiteSpaceNames(db.driverName())) { const QString tableName(qTableName("qtest", __FILE__, db) + " test"); @@ -579,7 +571,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers() QSqlRecord rec = db.record(db.driver()->escapeIdentifier(tableName, QSqlDriver::TableName)); QCOMPARE(rec.count(), 1); QCOMPARE(rec.fieldName(0), QString("test test")); - if (dbType == QSqlDriverPrivate::Oracle) + if (dbType == QSqlDriver::Oracle) QCOMPARE(rec.field(0).type(), QVariant::Double); else QCOMPARE(rec.field(0).type(), QVariant::Int); @@ -587,7 +579,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers() QSqlIndex idx = db.primaryIndex(db.driver()->escapeIdentifier(tableName, QSqlDriver::TableName)); QCOMPARE(idx.count(), 1); QCOMPARE(idx.fieldName(0), QString("test test")); - if (dbType == QSqlDriverPrivate::Oracle) + if (dbType == QSqlDriver::Oracle) QCOMPARE(idx.field(0).type(), QVariant::Double); else QCOMPARE(idx.field(0).type(), QVariant::Int); @@ -838,8 +830,8 @@ void tst_QSqlDatabase::recordPSQL() QSqlQuery q(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::PostgreSQL) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::PostgreSQL) QVERIFY_SQL( q, exec("set client_min_messages='warning'")); const QString tableName = qTableName("qtestfields", __FILE__, db); q.exec("drop sequence " + tableName + "_t_bigserial_seq"); @@ -1025,8 +1017,8 @@ void tst_QSqlDatabase::recordSQLServer() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType != QSqlDriverPrivate::MSSqlServer) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType != QSqlDriver::MSSqlServer) QSKIP("SQL server specific test"); // ### TODO: Add the rest of the fields @@ -1084,7 +1076,7 @@ void tst_QSqlDatabase::transaction() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); const QString qtest(qTableName("qtest", __FILE__, db)); if (!db.driver()->hasFeature(QSqlDriver::Transactions)) @@ -1115,7 +1107,7 @@ void tst_QSqlDatabase::transaction() QCOMPARE(q.value(0).toInt(), 41); q.clear(); // for SQLite which does not allow any references on rows that shall be rolled back if (!db.rollback()) { - if (dbType == QSqlDriverPrivate::MySqlServer) + if (dbType == QSqlDriver::MySqlServer) QSKIP("MySQL transaction failed: " + tst_Databases::printError(db.lastError())); else QFAIL("Could not rollback transaction: " + tst_Databases::printError(db.lastError())); @@ -1132,24 +1124,24 @@ void tst_QSqlDatabase::bigIntField() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); const QString qtest_bigint(qTableName("qtest_bigint", __FILE__, db)); QSqlQuery q(db); q.setForwardOnly(true); - if (dbType == QSqlDriverPrivate::Oracle) + if (dbType == QSqlDriver::Oracle) q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt64); - if (dbType == QSqlDriverPrivate::MySqlServer) { + if (dbType == QSqlDriver::MySqlServer) { QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit bigint, t_u64bit bigint unsigned)")); - } else if (dbType == QSqlDriverPrivate::PostgreSQL - || dbType == QSqlDriverPrivate::DB2 - || dbType == QSqlDriverPrivate::MSSqlServer) { + } else if (dbType == QSqlDriver::PostgreSQL + || dbType == QSqlDriver::DB2 + || dbType == QSqlDriver::MSSqlServer) { QVERIFY_SQL(q, exec("create table " + qtest_bigint + "(id int, t_s64bit bigint, t_u64bit bigint)")); - } else if (dbType == QSqlDriverPrivate::Oracle) { + } else if (dbType == QSqlDriver::Oracle) { QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit int, t_u64bit int)")); - //} else if (dbType == QSqlDriverPrivate::Interbase) { + //} else if (dbType == QSqlDriver::Interbase) { // QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit int64, t_u64bit int64)")); } else { QSKIP("no 64 bit integer support"); @@ -1158,7 +1150,7 @@ void tst_QSqlDatabase::bigIntField() qlonglong ll = Q_INT64_C(9223372036854775807); qulonglong ull = Q_UINT64_C(18446744073709551615); - if (dbType == QSqlDriverPrivate::MySqlServer || dbType == QSqlDriverPrivate::Oracle) { + if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::Oracle) { q.bindValue(0, 0); q.bindValue(1, ll); q.bindValue(2, ull); @@ -1182,12 +1174,12 @@ void tst_QSqlDatabase::bigIntField() QVERIFY(q.next()); QCOMPARE(q.value(1).toDouble(), (double)ll); QCOMPARE(q.value(1).toLongLong(), ll); - if (dbType == QSqlDriverPrivate::Oracle) + if (dbType == QSqlDriver::Oracle) QEXPECT_FAIL("", "Oracle driver lacks support for unsigned int64 types", Continue); QCOMPARE(q.value(2).toULongLong(), ull); QVERIFY(q.next()); QCOMPARE(q.value(1).toLongLong(), -ll); - if (dbType == QSqlDriverPrivate::Oracle) + if (dbType == QSqlDriver::Oracle) QEXPECT_FAIL("", "Oracle driver lacks support for unsigned int64 types", Continue); QCOMPARE(q.value(2).toULongLong(), ull); } @@ -1197,11 +1189,11 @@ void tst_QSqlDatabase::caseSensivity() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - const QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); + const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); bool cs = false; - if (dbType == QSqlDriverPrivate::MySqlServer || dbType == QSqlDriverPrivate::SQLite || dbType == QSqlDriverPrivate::Sybase - || dbType == QSqlDriverPrivate::MSSqlServer || db.driverName().startsWith("QODBC")) + if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::SQLite || dbType == QSqlDriver::Sybase + || dbType == QSqlDriver::MSSqlServer || db.driverName().startsWith("QODBC")) cs = true; QSqlRecord rec = db.record(qTableName("qtest", __FILE__, db)); @@ -1230,8 +1222,8 @@ void tst_QSqlDatabase::noEscapedFieldNamesInRecord() CHECK_DATABASE(db); QString fieldname("t_varchar"); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::Oracle || dbType == QSqlDriverPrivate::Interbase || dbType == QSqlDriverPrivate::DB2) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::Oracle || dbType == QSqlDriver::Interbase || dbType == QSqlDriver::DB2) fieldname = fieldname.toUpper(); QSqlQuery q(db); @@ -1413,8 +1405,8 @@ void tst_QSqlDatabase::precisionPolicy() QString query = QString("SELECT num FROM %1 WHERE id = 1").arg(tableName); QVERIFY_SQL(q, exec(query)); QVERIFY_SQL(q, next()); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::SQLite) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::SQLite) QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue); QCOMPARE(q.value(0).type(), QVariant::String); @@ -1429,7 +1421,7 @@ void tst_QSqlDatabase::precisionPolicy() q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt32); QVERIFY_SQL(q, exec(query)); QVERIFY_SQL(q, next()); - if (dbType == QSqlDriverPrivate::SQLite) + if (dbType == QSqlDriver::SQLite) QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue); QCOMPARE(q.value(0).type(), QVariant::Int); QCOMPARE(q.value(0).toInt(), 123); @@ -1437,7 +1429,7 @@ void tst_QSqlDatabase::precisionPolicy() q.setNumericalPrecisionPolicy(QSql::LowPrecisionDouble); QVERIFY_SQL(q, exec(query)); QVERIFY_SQL(q, next()); - if (dbType == QSqlDriverPrivate::SQLite) + if (dbType == QSqlDriver::SQLite) QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue); QCOMPARE(q.value(0).type(), QVariant::Double); QCOMPARE(q.value(0).toDouble(), (double)123); @@ -1445,7 +1437,7 @@ void tst_QSqlDatabase::precisionPolicy() query = QString("SELECT num FROM %1 WHERE id = 2").arg(tableName); QVERIFY_SQL(q, exec(query)); QVERIFY_SQL(q, next()); - if (dbType == QSqlDriverPrivate::SQLite) + if (dbType == QSqlDriver::SQLite) QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue); QCOMPARE(q.value(0).type(), QVariant::Double); QCOMPARE(q.value(0).toDouble(), QString("1850000000000.0001").toDouble()); @@ -1454,7 +1446,7 @@ void tst_QSqlDatabase::precisionPolicy() q.setNumericalPrecisionPolicy(QSql::HighPrecision); QVERIFY_SQL(q, exec(query)); QVERIFY_SQL(q, next()); - if (dbType == QSqlDriverPrivate::SQLite) + if (dbType == QSqlDriver::SQLite) QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue); QCOMPARE(q.value(0).type(), QVariant::String); @@ -1481,7 +1473,7 @@ void tst_QSqlDatabase::mysqlOdbc_unsignedIntegers() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - if (tst_Databases::getDatabaseType(db) != QSqlDriverPrivate::MySqlServer || !db.driverName().startsWith("QODBC")) + if (tst_Databases::getDatabaseType(db) != QSqlDriver::MySqlServer || !db.driverName().startsWith("QODBC")) QSKIP("MySQL through ODBC-driver specific test"); QSqlQuery q(db); @@ -1750,8 +1742,8 @@ void tst_QSqlDatabase::odbc_bindBoolean() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::MySqlServer) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::MySqlServer) QSKIP("MySql has inconsistent behaviour of bit field type across versions."); QSqlQuery q(db); @@ -1785,8 +1777,8 @@ void tst_QSqlDatabase::odbc_testqGetString() const QString testqGetString(qTableName("testqGetString", __FILE__, db)); QSqlQuery q(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType == QSqlDriverPrivate::MSSqlServer) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType == QSqlDriver::MSSqlServer) QVERIFY_SQL(q, exec("CREATE TABLE " + testqGetString + "(id int, vcvalue varchar(MAX))")); else if(tst_Databases::isMSAccess(db)) QVERIFY_SQL(q, exec("CREATE TABLE " + testqGetString + "(id int, vcvalue memo)")); @@ -1965,8 +1957,8 @@ void tst_QSqlDatabase::odbc_uniqueidentifier() QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QSqlDriverPrivate::DBMSType dbType = tst_Databases::getDatabaseType(db); - if (dbType != QSqlDriverPrivate::MSSqlServer) + QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db); + if (dbType != QSqlDriver::MSSqlServer) QSKIP("SQL Server (ODBC) specific test"); const QString tableName(qTableName("qtest_sqlguid", __FILE__, db)); |