diff options
Diffstat (limited to 'tests/auto/sql/kernel')
-rw-r--r-- | tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 34 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp | 21 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp | 36 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 21 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp | 18 |
5 files changed, 122 insertions, 8 deletions
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index 932806d017..9b0d5b6920 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -188,6 +188,9 @@ private slots: void sqlite_enable_cache_mode_data() { generic_data("QSQLITE"); } void sqlite_enable_cache_mode(); + void sqlite_enableRegexp_data() { generic_data("QSQLITE"); } + void sqlite_enableRegexp(); + private: void createTestTables(QSqlDatabase db); void dropTestTables(QSqlDatabase db); @@ -345,7 +348,8 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) << qTableName("qtest_sqlguid", __FILE__, db) << qTableName("uint_table", __FILE__, db) << qTableName("uint_test", __FILE__, db) - << qTableName("bug_249059", __FILE__, db); + << qTableName("bug_249059", __FILE__, db) + << qTableName("regexp_test", __FILE__, db); QSqlQuery q(0, db); if (dbType == QSqlDriver::PostgreSQL) { @@ -2259,5 +2263,33 @@ void tst_QSqlDatabase::sqlite_enable_cache_mode() db2.close(); } +void tst_QSqlDatabase::sqlite_enableRegexp() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + if (db.driverName().startsWith("QSQLITE2")) + QSKIP("SQLite3 specific test"); + + db.close(); + db.setConnectOptions("QSQLITE_ENABLE_REGEXP"); + QVERIFY_SQL(db, open()); + + QSqlQuery q(db); + const QString tableName(qTableName("regexp_test", __FILE__, db)); + QVERIFY_SQL(q, exec(QString("CREATE TABLE %1(text TEXT)").arg(tableName))); + QVERIFY_SQL(q, prepare(QString("INSERT INTO %1 VALUES(?)").arg(tableName))); + q.addBindValue("a0"); + QVERIFY_SQL(q, exec()); + q.addBindValue("a1"); + QVERIFY_SQL(q, exec()); + + QVERIFY_SQL(q, exec(QString("SELECT text FROM %1 WHERE text REGEXP 'a[^0]' " + "ORDER BY text").arg(tableName))); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toString(), QString("a1")); + QFAIL_SQL(q, next()); +} + QTEST_MAIN(tst_QSqlDatabase) #include "tst_qsqldatabase.moc" diff --git a/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp index 07a6c9c835..08c6039e37 100644 --- a/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp +++ b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp @@ -44,6 +44,7 @@ public: private slots: void getSetCheck(); void construction(); + void moveOperator(); void operators(); }; @@ -143,6 +144,26 @@ void tst_QSqlError::construction() QCOMPARE(obj7.number(), -1); QCOMPARE(obj7.nativeErrorCode(), QString()); + // Move constructor + QSqlError obj8(std::move(obj3)); + QCOMPARE(obj8.driverText(), obj2.driverText()); + QCOMPARE(obj8.databaseText(), obj2.databaseText()); + QCOMPARE(obj8.type(), obj2.type()); + QCOMPARE(obj8.number(), obj2.number()); + QCOMPARE(obj8.nativeErrorCode(), obj2.nativeErrorCode()); + QVERIFY(obj8.isValid()); +} + +void tst_QSqlError::moveOperator() +{ + QSqlError obj1("drivertext", "databasetext", QSqlError::UnknownError, 123), obj2; + obj2 = std::move(obj1); + QCOMPARE(obj2.driverText(), QString("drivertext")); + QCOMPARE(obj2.databaseText(), QString("databasetext")); + QCOMPARE(obj2.type(), QSqlError::UnknownError); + QCOMPARE(obj2.number(), 123); + QCOMPARE(obj2.nativeErrorCode(), QStringLiteral("123")); + QVERIFY(obj2.isValid()); } void tst_QSqlError::operators() diff --git a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp index cee33be3df..7efd19a2b8 100644 --- a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp +++ b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp @@ -62,6 +62,8 @@ private slots: void isNull(); void clear_data(); void clear(); + void setTableName_data(); + void setTableName(); }; // Testing get/set functions @@ -212,6 +214,9 @@ void tst_QSqlField::operator_Assign() field3.clear(); field1 = field3; QVERIFY( field1 == field3 ); + QSqlField field4("test", QVariant::String, "ATable"); + field1 = field4; + QVERIFY(field1 == field4); } void tst_QSqlField::operator_Equal() @@ -219,8 +224,18 @@ void tst_QSqlField::operator_Equal() QSqlField field1( "test", QVariant::String ); QSqlField field2( "test2", QVariant::String ); QSqlField field3( "test", QVariant::Int ); + QSqlField field4("test", QVariant::String, QString("ATable")); + QSqlField field5("test2", QVariant::String, QString("ATable")); + QSqlField field6("test", QVariant::String, QString("BTable")); + QVERIFY( !(field1 == field2) ); QVERIFY( !(field1 == field3) ); + QVERIFY(field1 != field4); + QVERIFY(field1 != field5); + QVERIFY(field1 != field6); + QVERIFY(field4 != field5); + QVERIFY(field4 != field6); + field2.setName( "test" ); QVERIFY( field1 == field2 ); QVERIFY( field1 == field2 ); @@ -232,6 +247,10 @@ void tst_QSqlField::operator_Equal() QVERIFY( !(field1 == field2) ); field2.setReadOnly( true ); QVERIFY( field1 == field2 ); + field4.setTableName("BTable"); + QCOMPARE(field4, field6); + field6.setName("test3"); + QVERIFY(field4 != field6); } void tst_QSqlField::setName_data() @@ -333,5 +352,22 @@ void tst_QSqlField::type() QVERIFY( field3.type() == QVariant::Double ); } +void tst_QSqlField::setTableName_data() +{ + QTest::addColumn<QString>("tableName"); + + QTest::newRow("data0") << QString(""); + QTest::newRow("data1") << QString("tbl"); +} + +void tst_QSqlField::setTableName() +{ + QSqlField field("test", QVariant::String, "test"); + QFETCH(QString, tableName); + QCOMPARE(field.tableName(), QLatin1String("test")); + field.setTableName(tableName); + QCOMPARE(field.tableName(), tableName); +} + QTEST_MAIN(tst_QSqlField) #include "tst_qsqlfield.moc" diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 35f86772e2..92e4b580e7 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -170,6 +170,8 @@ private slots: void blobsPreparedQuery(); void emptyTableNavigate_data() { generic_data(); } void emptyTableNavigate(); + void timeStampParsing_data() { generic_data(); } + void timeStampParsing(); #ifdef NOT_READY_YET void task_229811(); @@ -2887,6 +2889,25 @@ void tst_QSqlQuery::emptyTableNavigate() } } +void tst_QSqlQuery::timeStampParsing() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + QSqlQuery q(db); + QVERIFY_SQL(q, exec( + "CREATE TABLE \"main\".\"datetest\" (" + "\"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT," + "\"datefield\" timestamp);" + )); + QVERIFY_SQL(q, exec( + "INSERT INTO datetest (datefield) VALUES (current_timestamp);" + )); + QVERIFY_SQL(q, exec("SELECT * FROM datetest;")); + while (q.next()) + QVERIFY(q.value(1).toDateTime().isValid()); +} + void tst_QSqlQuery::task_217003() { QFETCH( QString, dbName ); diff --git a/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp index c5cca6c33b..83a61b91d7 100644 --- a/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp +++ b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp @@ -111,10 +111,10 @@ void tst_QSqlRecord::createTestRecord() { delete rec; rec = new QSqlRecord(); - fields[ 0 ] = new QSqlField( "string", QVariant::String ); - fields[ 1 ] = new QSqlField( "int", QVariant::Int ); - fields[ 2 ] = new QSqlField( "double", QVariant::Double ); - fields[ 3 ] = new QSqlField( "bool", QVariant::Bool ); + fields[0] = new QSqlField(QStringLiteral("string"), QVariant::String, QStringLiteral("stringtable")); + fields[1] = new QSqlField(QStringLiteral("int"), QVariant::Int, QStringLiteral("inttable")); + fields[2] = new QSqlField(QStringLiteral("double"), QVariant::Double, QStringLiteral("doubletable")); + fields[3] = new QSqlField(QStringLiteral("bool"), QVariant::Bool); for ( int i = 0; i < NUM_FIELDS; ++i ) rec->append( *(fields[ i ] ) ); } @@ -124,12 +124,14 @@ void tst_QSqlRecord::append() { delete rec; rec = new QSqlRecord(); - rec->append( QSqlField( "string", QVariant::String ) ); + rec->append(QSqlField("string", QVariant::String, QStringLiteral("stringtable"))); QCOMPARE( rec->field( 0 ).name(), (QString) "string" ); + QCOMPARE(rec->field(0).tableName(), QStringLiteral("stringtable")); QVERIFY( !rec->isEmpty() ); QCOMPARE( (int)rec->count(), 1 ); - rec->append( QSqlField( "int", QVariant::Int ) ); + rec->append(QSqlField("int", QVariant::Int, QStringLiteral("inttable"))); QCOMPARE( rec->field( 1 ).name(), (QString) "int" ); + QCOMPARE(rec->field(1).tableName(), QStringLiteral("inttable")); QCOMPARE( (int)rec->count(), 2 ); rec->append( QSqlField( "double", QVariant::Double ) ); QCOMPARE( rec->field( 2 ).name(), (QString) "double" ); @@ -381,7 +383,7 @@ void tst_QSqlRecord::operator_Assign() buf3.remove( NUM_FIELDS - 1 ); QSqlRecord buf5 = buf3; for ( i = 0; i < NUM_FIELDS - 1; ++i ) { - QSqlField fi ( fields[ i ]->name(), fields[ i ]->type() ); + QSqlField fi(fields[i]->name(), fields[i]->type(), fields[i]->tableName()); fi.clear(); QVERIFY( buf5.field( i ) == fi ); QVERIFY( buf5.isGenerated( i ) ); @@ -394,6 +396,8 @@ void tst_QSqlRecord::position() int i; for ( i = 0; i < NUM_FIELDS; ++i ) { QCOMPARE( rec->indexOf( fields[ i ]->name() ), i ); + if (!fields[i]->tableName().isEmpty()) + QCOMPARE(rec->indexOf(fields[i]->tableName() + QChar('.') + fields[i]->name()), i); } } |