blob: 7d69e7eb4e96ed404e89af9c153d36bd86e72e64 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#include "dbversionconverter.h"
#include "parser/lexer.h"
#include "parser/keywords.h"
#include <QString>
#include <QtTest>
class DbVersionConverterTestTest : public QObject
{
Q_OBJECT
public:
DbVersionConverterTestTest();
private Q_SLOTS:
void initTestCase();
void init();
void cleanupTestCase();
void testColumnAutoIncr();
void testIndexedColumn();
void testInsertMultiValues();
void testSelectWith();
void testTableWithoutRowId();
void testTableWithDefaultCtime();
private:
void printErrors();
DbVersionConverter* converter = nullptr;
};
DbVersionConverterTestTest::DbVersionConverterTestTest()
{
}
void DbVersionConverterTestTest::testColumnAutoIncr()
{
QString query = "CREATE TABLE test (col INTEGER PRIMARY KEY AUTOINCREMENT);";
QString result = converter->convert3To2(query);
printErrors();
QVERIFY(converter->getErrors().size() == 0);
QVERIFY(result == "CREATE TABLE test (col INTEGER PRIMARY KEY);");
}
void DbVersionConverterTestTest::testIndexedColumn()
{
QString query = "CREATE INDEX idx ON test (col COLLATE NOCASE ASC);";
QString result = converter->convert3To2(query);
printErrors();
QVERIFY(converter->getErrors().size() == 0);
QVERIFY(result == "CREATE INDEX idx ON test (col ASC);");
}
void DbVersionConverterTestTest::testInsertMultiValues()
{
QString query = "INSERT INTO test (col1, col2) VALUES (1, 'a'), (2, 'b');";
QString result = converter->convert3To2(query);
printErrors();
QVERIFY(converter->getErrors().size() == 0);
QVERIFY(result == "INSERT INTO test (col1, col2) SELECT 1, 'a' UNION ALL SELECT 2, 'b';");
}
void DbVersionConverterTestTest::testSelectWith()
{
QString query = "WITH RECURSIVE cnt (x) AS (VALUES(1) UNION ALL SELECT x + 1 FROM cnt WHERE x < 1000000) SELECT x FROM cnt;";
QString result = converter->convert3To2(query);
QVERIFY(converter->getErrors().size() == 1);
QVERIFY(result == ";");
}
void DbVersionConverterTestTest::testTableWithoutRowId()
{
QString query = "CREATE TABLE test (col PRIMARY KEY) WITHOUT ROWID;";
QString result = converter->convert3To2(query);
printErrors();
QVERIFY(converter->getErrors().size() == 0);
QVERIFY(result == "CREATE TABLE test (col PRIMARY KEY);");
}
void DbVersionConverterTestTest::testTableWithDefaultCtime()
{
QString query = "CREATE TABLE test (col INT DEFAULT current_date NOT NULL);";
QString result = converter->convert3To2(query);
printErrors();
QVERIFY(converter->getErrors().size() == 0);
QVERIFY(result == "CREATE TABLE test (col INT NOT NULL);");
}
void DbVersionConverterTestTest::printErrors()
{
for (const QString& err : converter->getErrors())
qWarning() << err;
}
void DbVersionConverterTestTest::initTestCase()
{
initKeywords();
Lexer::staticInit();
converter = new DbVersionConverter();
}
void DbVersionConverterTestTest::init()
{
converter->reset();
}
void DbVersionConverterTestTest::cleanupTestCase()
{
delete converter;
}
QTEST_APPLESS_MAIN(DbVersionConverterTestTest)
#include "tst_dbversionconvertertesttest.moc"
|