pgLab/tests/pglabtests/tst_newParser.cpp

48 lines
1.2 KiB
C++
Raw Normal View History

#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());
}