aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/Tests/LexerTest
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/Tests/LexerTest')
-rw-r--r--SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp b/SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp
index deac898..0e44e7d 100644
--- a/SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp
+++ b/SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp
@@ -11,9 +11,11 @@ class LexerTest : public QObject
private Q_SLOTS:
void testStringCase1();
+ void testStringCase2();
void testFloat();
void testHex1();
void testHex2();
+ void testBindParam1();
};
LexerTest::LexerTest()
@@ -24,16 +26,27 @@ void LexerTest::testStringCase1()
{
QString sql = "INSERT INTO tab VALUES (1, 2, :val); /* test";
- Lexer lex(Dialect::Sqlite3);
+ Lexer lex;
TokenList tokens = lex.tokenize(sql);
QVERIFY(tokens.size() == 20);
}
+void LexerTest::testStringCase2()
+{
+ QString sql = "SELECT 1 = '1'";
+
+ Lexer lex;
+ TokenList tokens = lex.tokenize(sql);
+ QCOMPARE(tokens.size(), 7);
+ QCOMPARE(tokens[2]->type, Token::INTEGER);
+ QCOMPARE(tokens[6]->type, Token::STRING);
+}
+
void LexerTest::testFloat()
{
QString sql = "SELECT .2";
- Lexer lex(Dialect::Sqlite3);
+ Lexer lex;
TokenList tokens = lex.tokenize(sql);
QVERIFY(tokens.size() == 3);
QVERIFY(tokens[2]->type == Token::FLOAT);
@@ -43,7 +56,7 @@ void LexerTest::testHex1()
{
QString sql = "SELECT 0x";
- Lexer lex(Dialect::Sqlite3);
+ Lexer lex;
TokenList tokens = lex.tokenize(sql);
QVERIFY(tokens.size() == 3);
QVERIFY(tokens[2]->type == Token::INVALID);
@@ -53,7 +66,7 @@ void LexerTest::testHex2()
{
QString sql = "SELECT 0x5zzz";
- Lexer lex(Dialect::Sqlite3);
+ Lexer lex;
TokenList tokens = lex.tokenize(sql);
QVERIFY(tokens.size() == 4);
QVERIFY(tokens[2]->type == Token::INTEGER);
@@ -61,6 +74,21 @@ void LexerTest::testHex2()
QVERIFY(tokens[3]->value == "zzz");
}
+void LexerTest::testBindParam1()
+{
+ QString sql = "SELECT * FROM test WHERE id = ?1 OR id = ?123 OR id = ? OR id = :id OR id = @id";
+
+ Lexer lex;
+ TokenList tokens = lex.tokenize(sql);
+ TokenList bindTokens = tokens.filter(Token::BIND_PARAM);
+ QVERIFY(bindTokens.size() == 5);
+ QVERIFY(bindTokens[0]->value == "?1");
+ QVERIFY(bindTokens[1]->value == "?123");
+ QVERIFY(bindTokens[2]->value == "?");
+ QVERIFY(bindTokens[3]->value == ":id");
+ QVERIFY(bindTokens[4]->value == "@id");
+}
+
QTEST_APPLESS_MAIN(LexerTest)
#include "tst_lexertest.moc"