From eb085c33aba12a332c3ee8e73d26a241a6996c41 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 23 Apr 2024 12:35:39 +0200 Subject: expressions: for "if" expressions, make both branches optional ... using, also for the "then" branch, the empty list as default. In this way, this statement not only more symmetric, but also allows shorter representations of some typical expressions. --- test/buildtool/build_engine/expression/expression.test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test/buildtool/build_engine/expression/expression.test.cpp') diff --git a/test/buildtool/build_engine/expression/expression.test.cpp b/test/buildtool/build_engine/expression/expression.test.cpp index 83550ebd..1d7bde3e 100644 --- a/test/buildtool/build_engine/expression/expression.test.cpp +++ b/test/buildtool/build_engine/expression/expression.test.cpp @@ -479,6 +479,19 @@ TEST_CASE("Expression Evaluation", "[expression]") { // NOLINT CHECK(failure == Expression::FromJson(R"("failure")"_json)); } } + + SECTION("if defaults") { + auto expr = Expression::FromJson(R"( + { "type": "if" + , "cond": {"type": "var", "name": "x"} + } + )"_json); + CHECK(expr.Evaluate(env.Update("x", true), fcts) == + Expression::FromJson(R"([])"_json)); + CHECK(expr.Evaluate(env.Update("x", false), fcts) == + Expression::FromJson(R"([])"_json)); + } + SECTION("cond expression") { auto expr = Expression::FromJson(R"( { "type": "cond" -- cgit v1.2.3