Not callable testing restored
This commit is contained in:
parent
9c4b57f217
commit
96378a16c1
@ -24,6 +24,15 @@ void evaluates_to(Value value, std::string_view source_code, reflection::source_
|
|||||||
}, sl)();
|
}, sl)();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void expect_alternative(
|
||||||
|
auto const& variant,
|
||||||
|
boost::ut::reflection::source_location sl = boost::ut::reflection::source_location::current())
|
||||||
|
{
|
||||||
|
using namespace boost::ut;
|
||||||
|
expect(std::holds_alternative<T>(variant), sl) << "Expected to hold alternative but failed";
|
||||||
|
}
|
||||||
|
|
||||||
suite intepreter_test = [] {
|
suite intepreter_test = [] {
|
||||||
"Interpreter"_test = [] {
|
"Interpreter"_test = [] {
|
||||||
should("evaluate literals") = [] {
|
should("evaluate literals") = [] {
|
||||||
@ -47,22 +56,20 @@ suite intepreter_test = [] {
|
|||||||
|
|
||||||
should("allows only for calling which is callable") = [] {
|
should("allows only for calling which is callable") = [] {
|
||||||
evaluates_to(Value::from(Number(0)), "[i|i] 0");
|
evaluates_to(Value::from(Number(0)), "[i|i] 0");
|
||||||
#if 0
|
|
||||||
{
|
{
|
||||||
Interpreter i;
|
Interpreter i;
|
||||||
{
|
{
|
||||||
auto result = Parser::parse("10 20", "test").and_then([&](Ast &&ast) { return i.eval(std::move(ast)); });
|
auto result = Parser::parse("10 20", "test").and_then([&](Ast &&ast) { return i.eval(std::move(ast)); });
|
||||||
expect(!result.has_value()) << "Expected code to have failed";
|
expect(!result.has_value()) << "Expected code to have failed";
|
||||||
expect(eq(result.error().type, errors::Not_Callable));
|
expect_alternative<errors::Not_Callable>(result.error().details);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
i.env->force_define("call_me", Value::from(Number(10)));
|
i.env->force_define("call_me", Value::from(Number(10)));
|
||||||
auto result = Parser::parse("call_me 20", "test").and_then([&](Ast &&ast) { return i.eval(std::move(ast)); });
|
auto result = Parser::parse("call_me 20", "test").and_then([&](Ast &&ast) { return i.eval(std::move(ast)); });
|
||||||
expect(!result.has_value()) << "Expected code to have failed";
|
expect(!result.has_value()) << "Expected code to have failed";
|
||||||
expect(eq(result.error().type, errors::Not_Callable));
|
expect_alternative<errors::Not_Callable>(result.error().details);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
should("allow for value (in)equality comparisons") = [] {
|
should("allow for value (in)equality comparisons") = [] {
|
||||||
|
Loading…
Reference in New Issue
Block a user