#include #include "../lib/TypeResolver.hpp" #include "../lib/Lexer.hpp" #include "../lib/Parser.hpp" #include "lib/Type.hpp" class TypeResolverTest { public: explicit TypeResolverTest() {} virtual ~TypeResolverTest() {} std::shared_ptr get_ty(std::string const& source) { roza::SrcLoc loc {"compiler_tests"}; roza::StatusLog log; roza::Lexer lexer {log, loc}; roza::Parser parser {lexer, log}; roza::TypeResolver resolver {log}; lexer.scan(source); auto node = parser.parse(); return resolver.find(node); } void test_ty(std::string const& source, std::shared_ptr ty) { REQUIRE(ty); test_ty(source, *ty); } void test_ty(std::string const& source, roza::Type const& ty) { REQUIRE(get_ty(source)->equals(ty)); } protected: }; TEST_CASE_METHOD(TypeResolverTest, "TypeResolver_") { test_ty(" 42 ", std::make_shared(roza::BaseType::TY_INT)); }