summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp')
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp36
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"