roza/tests/StaticPass.cpp

38 lines
738 B
C++

#include <catch2/catch.hpp>
#include "../lib/Lexer.hpp"
#include "../lib/Parser.hpp"
#include "../lib/StaticPass.hpp"
class StaticPassTest
{
public:
explicit StaticPassTest() {}
virtual ~StaticPassTest() {}
void test_ok(std::string const& source)
{
roza::SrcLoc loc {"compiler_tests"};
roza::StatusLog log;
roza::Lexer lexer {log, loc};
roza::Parser parser {lexer, log};
roza::StaticPass static_pass {log};
lexer.scan(source);
auto node = parser.parse();
static_pass.check(node);
}
void test_ko(std::string const& source)
{
REQUIRE_THROWS(test_ok(source));
}
protected:
};
TEST_CASE_METHOD(StaticPassTest, "StaticPass_integer")
{
test_ok(" 43 ");
test_ko(" 43 + 7 * true");
}