tests/auto/qsqldatabase/tst_qsqldatabase.cpp
changeset 18 2f34d5167611
parent 3 41300fa6a67c
child 19 fcece45ef507
--- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp	Tue Feb 02 00:43:10 2010 +0200
+++ b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp	Fri Apr 16 15:50:13 2010 +0300
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
@@ -202,6 +202,8 @@
     void sqlStatementUseIsNull_189093_data() { generic_data(); }
     void sqlStatementUseIsNull_189093();
 
+    void sqlite_enable_cache_mode_data() { generic_data("QSQLITE"); }
+    void sqlite_enable_cache_mode();
 
 private:
     void createTestTables(QSqlDatabase db);
@@ -903,12 +905,8 @@
     CHECK_DATABASE(db);
 
     // runtime check for Oracle version since V8 doesn't support TIMESTAMPs
-    if (tst_Databases::getOraVersion(db) >= 9) {
-    qDebug("Detected Oracle >= 9, TIMESTAMP test enabled");
-    hasTimeStamp = true;
-    } else {
-    qDebug("Detected Oracle < 9, TIMESTAMP test disabled");
-    }
+    if (tst_Databases::getOraVersion(db) >= 9)
+        hasTimeStamp = true;
 
     FieldDef tsdef;
     FieldDef tstzdef;
@@ -919,11 +917,11 @@
     static const QDateTime dt(QDate::currentDate(), QTime(1, 2, 3, 0));
 
     if (hasTimeStamp) {
-    tsdef = FieldDef("timestamp", QVariant::DateTime,  dt);
-    tstzdef = FieldDef("timestamp with time zone", QVariant::DateTime, dt);
-    tsltzdef = FieldDef("timestamp with local time zone", QVariant::DateTime, dt);
-    intytm = FieldDef("interval year to month", QVariant::String, QString("+01-01"));
-    intdts = FieldDef("interval day to second", QVariant::String, QString("+01 00:00:01.000000"));
+        tsdef = FieldDef("timestamp", QVariant::DateTime,  dt);
+        tstzdef = FieldDef("timestamp with time zone", QVariant::DateTime, dt);
+        tsltzdef = FieldDef("timestamp with local time zone", QVariant::DateTime, dt);
+        intytm = FieldDef("interval year to month", QVariant::String, QString("+01-01"));
+        intdts = FieldDef("interval day to second", QVariant::String, QString("+01 00:00:01.000000"));
     }
 
     const FieldDef fieldDefs[] = {
@@ -938,14 +936,14 @@
         FieldDef("blob", QVariant::ByteArray,           QByteArray("blah7")),
         FieldDef("clob", QVariant::String,             QString("blah8")),
         FieldDef("nclob", QVariant::String,            QString("blah9")),
-        FieldDef("bfile", QVariant::ByteArray,         QByteArray("blah10")),
+//        FieldDef("bfile", QVariant::ByteArray,         QByteArray("blah10")),
 
-    intytm,
-//    intdts,
-//    tsdef,
-//    tstzdef,
-//    tsltzdef,
-    FieldDef()
+        intytm,
+        intdts,
+        tsdef,
+        tstzdef,
+        tsltzdef,
+        FieldDef()
     };
 
     const int fieldCount = createFieldTable(fieldDefs, db);
@@ -953,9 +951,8 @@
 
     commonFieldTest(fieldDefs, db, fieldCount);
     checkNullValues(fieldDefs, db);
-    for (int i = 0; i < ITERATION_COUNT; ++i) {
-    checkValues(fieldDefs, db);
-    }
+    for (int i = 0; i < ITERATION_COUNT; ++i)
+        checkValues(fieldDefs, db);
 
     // some additional tests
     QSqlRecord rec = db.record(qTableName("qtestfields"));
@@ -2490,5 +2487,23 @@
     QVERIFY(db.tables(QSql::SystemTables).contains(systemTableName.toUpper()));
 }
 
+void tst_QSqlDatabase::sqlite_enable_cache_mode()
+{
+    QFETCH(QString, dbName);
+    if(dbName.endsWith(":memory:"))
+        QSKIP( "cache mode is meaningless for :memory: databases", SkipSingle );
+    QSqlDatabase db = QSqlDatabase::database(dbName);
+    CHECK_DATABASE(db);
+    db.close();
+    db.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE");
+    QVERIFY_SQL(db, open());
+    QSqlDatabase db2 = QSqlDatabase::cloneDatabase(db, dbName+":cachemodeconn2");
+    db2.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE");
+    QVERIFY_SQL(db2, open());
+    QSqlQuery q(db), q2(db2);
+    QVERIFY_SQL(q, exec("select * from "+qTableName("qtest")));
+    QVERIFY_SQL(q2, exec("select * from "+qTableName("qtest")));
+}
+
 QTEST_MAIN(tst_QSqlDatabase)
 #include "tst_qsqldatabase.moc"