diff options
Diffstat (limited to 'tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp')
-rw-r--r-- | tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index 4395a04976..ec5afd2b5c 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -75,6 +75,8 @@ private slots: void addDatabase(); void errorReporting_data(); void errorReporting(); + void cloneDatabase_data() { generic_data(); } + void cloneDatabase(); //database specific tests void recordMySQL_data() { generic_data("QMYSQL"); } @@ -1344,11 +1346,6 @@ void tst_QSqlDatabase::psql_bug249059() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QString version=tst_Databases::getPSQLVersion( db ); - double ver=version.section(QChar::fromLatin1('.'),0,1).toDouble(); - if (ver < 7.3) - QSKIP("Test requires PostgreSQL >= 7.3"); - QSqlQuery q(db); const QString tableName(qTableName("bug_249059", __FILE__, db)); QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (dt timestamp, t time)").arg(tableName))); @@ -2291,5 +2288,34 @@ void tst_QSqlDatabase::sqlite_enableRegexp() QFAIL_SQL(q, next()); } +void tst_QSqlDatabase::cloneDatabase() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + { + QSqlDatabase clonedDatabase = QSqlDatabase::cloneDatabase(db, "clonedDatabase"); + QCOMPARE(clonedDatabase.databaseName(), db.databaseName()); + QCOMPARE(clonedDatabase.userName(), db.userName()); + QCOMPARE(clonedDatabase.password(), db.password()); + QCOMPARE(clonedDatabase.hostName(), db.hostName()); + QCOMPARE(clonedDatabase.driverName(), db.driverName()); + QCOMPARE(clonedDatabase.port(), db.port()); + QCOMPARE(clonedDatabase.connectOptions(), db.connectOptions()); + QCOMPARE(clonedDatabase.numericalPrecisionPolicy(), db.numericalPrecisionPolicy()); + } + { + // Now double check numericalPrecisionPolicy after changing it since it + // is a special case, as changing it can set it on the driver as well as + // the database object. When retrieving the numerical precision policy + // it may just get it from the driver so we have to check that the + // clone has also ensured the copied driver has the correct precision + // policy too. + db.setNumericalPrecisionPolicy(QSql::LowPrecisionDouble); + QSqlDatabase clonedDatabase = QSqlDatabase::cloneDatabase(db, "clonedDatabaseCopy"); + QCOMPARE(clonedDatabase.numericalPrecisionPolicy(), db.numericalPrecisionPolicy()); + } +} + QTEST_MAIN(tst_QSqlDatabase) #include "tst_qsqldatabase.moc" |