From 1f8686d1d4308ea12dd50feb85142215942305f9 Mon Sep 17 00:00:00 2001 From: Martin Kleusberg Date: Fri, 9 May 2014 14:49:32 +0200 Subject: [PATCH] Add tests for the new 'without rowid' parsing Add tests for the 'without rowid' parsing in our SQL grammar added in commit 3761acfd024d4126ac67d55ce877d493986f4aa5. --- src/tests/testsqlobjects.cpp | 29 +++++++++++++++++++++++++++-- src/tests/testsqlobjects.h | 2 ++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/tests/testsqlobjects.cpp b/src/tests/testsqlobjects.cpp index a8e2eaad..78642af8 100644 --- a/src/tests/testsqlobjects.cpp +++ b/src/tests/testsqlobjects.cpp @@ -60,6 +60,22 @@ void TestTable::notnull() ");")); } +void TestTable::withoutRowid() +{ + Table tt("testtable"); + FieldPtr f = FieldPtr(new Field("a", "integer")); + f->setPrimaryKey(true); + f->setAutoIncrement(true); + tt.addField(f); + tt.addField(FieldPtr(new Field("b", "integer"))); + tt.setRowidColumn("a"); + + QCOMPARE(tt.sql(), QString("CREATE TABLE `testtable` (\n" + "\t`a`\tinteger PRIMARY KEY AUTOINCREMENT,\n" + "\t`b`\tinteger\n" + ") WITHOUT ROWID;")); +} + void TestTable::parseSQL() { QString sSQL = "create TABLE hero (\n" @@ -71,6 +87,7 @@ void TestTable::parseSQL() Table tab = Table::parseSQL(sSQL); QVERIFY(tab.name() == "hero"); + QVERIFY(tab.rowidColumn() == "rowid"); QVERIFY(tab.fields().at(0)->name() == "id"); QVERIFY(tab.fields().at(1)->name() == "name"); QVERIFY(tab.fields().at(2)->name() == "info"); @@ -85,8 +102,6 @@ void TestTable::parseSQL() QCOMPARE(tab.fields().at(1)->defaultValue(), QString("'xxxx'")); QCOMPARE(tab.fields().at(1)->check(), QString("")); QCOMPARE(tab.fields().at(2)->check(), QString("info=='x'")); - - } void TestTable::parseSQLdefaultexpr() @@ -170,6 +185,16 @@ void TestTable::parseSQLKeywordInIdentifier() QVERIFY(tab.fields().at(1)->name() == "if"); } +void TestTable::parseSQLWithoutRowid() +{ + QString sSQL = "CREATE TABLE test(a integer primary key, b integer) WITHOUT ROWID;"; + + Table tab = Table::parseSQL(sSQL); + + QVERIFY(tab.fields().at(tab.findPk())->name() == "a"); + QVERIFY(tab.rowidColumn() == "a"); +} + void TestTable::parseNonASCIIChars() { QString sSQL = "CREATE TABLE `lösung` (" diff --git a/src/tests/testsqlobjects.h b/src/tests/testsqlobjects.h index 5681b813..de4cbe2c 100644 --- a/src/tests/testsqlobjects.h +++ b/src/tests/testsqlobjects.h @@ -7,6 +7,7 @@ private slots: void sqlOutput(); void autoincrement(); void notnull(); + void withoutRowid(); void parseSQL(); void parseSQLdefaultexpr(); @@ -14,6 +15,7 @@ private slots: void parseSQLForeignKey(); void parseSQLSingleQuotes(); void parseSQLKeywordInIdentifier(); + void parseSQLWithoutRowid(); void parseNonASCIIChars(); };