Start of new ANTLR4 based parser.
Very simple tests pass.
This commit is contained in:
parent
03b4194193
commit
fbbe832a05
44 changed files with 860 additions and 8 deletions
|
|
@ -6,7 +6,7 @@ include(gtest_dependency.pri)
|
|||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
CONFIG += thread
|
||||
CONFIG += thread no_keywords
|
||||
CONFIG += qt
|
||||
|
||||
QT += core widgets
|
||||
|
|
@ -20,6 +20,7 @@ SOURCES += main.cpp \
|
|||
tst_escapeConnectionStringValue.cpp \
|
||||
tst_expected.cpp \
|
||||
tst_SqlLexer.cpp \
|
||||
tst_newParser.cpp \
|
||||
tst_scopeguard.cpp \
|
||||
tst_CsvWriter.cpp \
|
||||
tst_PasswordManager.cpp \
|
||||
|
|
@ -39,6 +40,10 @@ DEPENDPATH += $$PWD/../../core
|
|||
win32:CONFIG(debug, debug|release): LIBS += -lbotand
|
||||
else:win32:CONFIG(release, debug|release): LIBS += -lbotan
|
||||
|
||||
INCLUDEPATH += C:\Prog\include\antlr
|
||||
win32:CONFIG(debug, debug|release): LIBS += -lantlr4-runtimed
|
||||
else:win32:CONFIG(release, debug|release): LIBS += -lantlr4-runtime
|
||||
|
||||
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../core/release/libcore.a
|
||||
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../core/debug/libcore.a
|
||||
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../core/release/core.lib
|
||||
|
|
|
|||
47
tests/pglabtests/tst_newParser.cpp
Normal file
47
tests/pglabtests/tst_newParser.cpp
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <gmock/gmock-matchers.h>
|
||||
#include "PrintTo_Qt.h"
|
||||
#include "sqlparser/Parser.h"
|
||||
|
||||
using namespace testing;
|
||||
using namespace sqlast;
|
||||
|
||||
|
||||
|
||||
TEST(NewSqlParser, statementList)
|
||||
{
|
||||
std::string input_string = "SEleCT 1; Select 2;";
|
||||
Parser parser(input_string);
|
||||
std::unique_ptr<sqlast::StatementList> program = parser.Parse();
|
||||
|
||||
ASSERT_TRUE(program != nullptr);
|
||||
ASSERT_EQ(2, program->Count());
|
||||
}
|
||||
|
||||
TEST(NewSqlParser, missingSemi)
|
||||
{
|
||||
std::string input_string = "1";
|
||||
Parser parser(input_string);
|
||||
std::unique_ptr<sqlast::StatementList> program = parser.Parse();
|
||||
|
||||
ASSERT_EQ(1, parser.errorCount());
|
||||
}
|
||||
|
||||
TEST(NewSqlParser, selectList)
|
||||
{
|
||||
std::string input_string = "SEleCT 1, 'Tekst'";
|
||||
Parser parser(input_string);
|
||||
std::unique_ptr<sqlast::StatementList> program = parser.Parse();
|
||||
|
||||
ASSERT_TRUE(program != nullptr);
|
||||
ASSERT_EQ(1, program->Count());
|
||||
|
||||
SelectStatement &s = dynamic_cast<SelectStatement&>(program->Get(0));
|
||||
SelectList* sl = s.GetSelectList();
|
||||
ASSERT_TRUE(sl != nullptr);
|
||||
ASSERT_EQ(2, sl->Count());
|
||||
|
||||
SelectItem& si = sl->Get(1);
|
||||
StringLiteral& string_literal = dynamic_cast<StringLiteral&>(si.GetExpression());
|
||||
ASSERT_EQ("Tekst", string_literal.GetValue());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue