From 1fdc150116cad39aae5c5da407c3312b47a59e3a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Fri, 17 Dec 2021 07:06:30 -0500 Subject: New upstream version 3.3.3+dfsg1. --- SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp | 36 ++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'SQLiteStudio3/Tests/LexerTest/tst_lexertest.cpp') 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" -- cgit v1.2.3