Skip to content
Snippets Groups Projects
Commit 624da57b authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add missing test for OStreamProcessor

parent ae6c6a5f
No related branches found
No related tags found
1 merge request!37Feature/language
...@@ -47,6 +47,25 @@ _replaceOStream(ASTNode& node, std::ostringstream& sout) ...@@ -47,6 +47,25 @@ _replaceOStream(ASTNode& node, std::ostringstream& sout)
REQUIRE(sout.str() == expected_value); \ REQUIRE(sout.str() == expected_value); \
} }
#define CHECK_OSTREAM_EXPRESSION_THROWS(data, expected_error) \
{ \
static_assert(std::is_same_v<std::decay_t<decltype(data)>, std::string_view>); \
static_assert((std::is_same_v<std::decay_t<decltype(expected_error)>, std::string_view>) or \
(std::is_same_v<std::decay_t<decltype(expected_error)>, std::string>)); \
\
string_input input{data, "test.pgs"}; \
auto ast = ASTBuilder::build(input); \
\
ASTSymbolTableBuilder{*ast}; \
ASTNodeDataTypeBuilder{*ast}; \
\
ASTNodeDeclarationToAffectationConverter{*ast}; \
ASTNodeTypeCleaner<language::var_declaration>{*ast}; \
ASTNodeTypeCleaner<language::fct_declaration>{*ast}; \
\
REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, expected_error); \
}
// clazy:excludeall=non-pod-global-static // clazy:excludeall=non-pod-global-static
TEST_CASE("OStreamProcessor", "[language]") TEST_CASE("OStreamProcessor", "[language]")
...@@ -66,4 +85,15 @@ TEST_CASE("OStreamProcessor", "[language]") ...@@ -66,4 +85,15 @@ TEST_CASE("OStreamProcessor", "[language]")
CHECK_OSTREAM_EXPRESSION_RESULT(R"(cerr << false;)", "false"); CHECK_OSTREAM_EXPRESSION_RESULT(R"(cerr << false;)", "false");
CHECK_OSTREAM_EXPRESSION_RESULT(R"(cerr << "x=" << 2 << "\n";)", "x=2\n"); CHECK_OSTREAM_EXPRESSION_RESULT(R"(cerr << "x=" << 2 << "\n";)", "x=2\n");
} }
SECTION("runtime error")
{
std::string_view data_type = R"(
let f : R -> R, x -> 2;
cerr << "f=" << f << "\n";
)";
std::string error_msg = "invalid argument, cannot print a 'function'";
CHECK_OSTREAM_EXPRESSION_THROWS(data_type, error_msg);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment