From: Remi Gacogne Date: Tue, 9 Dec 2025 09:06:51 +0000 (+0100) Subject: test-luawrapper: More complicated variant tests X-Git-Tag: rec-5.4.0-beta1~57^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d17b0cf0310e0e375a157fd941552be19a137b1;p=thirdparty%2Fpdns.git test-luawrapper: More complicated variant tests Signed-off-by: Remi Gacogne --- diff --git a/pdns/test-luawrapper.cc b/pdns/test-luawrapper.cc index 9aae68dca8..b14dc3df66 100644 --- a/pdns/test-luawrapper.cc +++ b/pdns/test-luawrapper.cc @@ -70,28 +70,62 @@ BOOST_AUTO_TEST_CASE(test_std_optional) } } +BOOST_AUTO_TEST_CASE(test_boost_variant) +{ + using MyVariantType = boost::variant; + + LuaContext context; + context.writeFunction("testVariant", [](MyVariantType incoming) -> MyVariantType { + return incoming; + }); + + { + auto result = context.executeCode("return testVariant(1)"); + const auto* content = boost::get(&result); + BOOST_REQUIRE(content); + BOOST_CHECK_EQUAL(*content, 1); + } + + { + auto result = context.executeCode("return testVariant('foo')"); + const auto* content = boost::get(&result); + BOOST_REQUIRE(content); + BOOST_CHECK_EQUAL(*content, "foo"); + } + + { + auto func = [&]() { + context.executeCode("return testVariant(nil)"); + }; + BOOST_CHECK_THROW(func(), LuaContext::ExecutionErrorException); + } +} + + BOOST_AUTO_TEST_CASE(test_std_variant) { + using MyVariantType = std::variant; + LuaContext context; - context.writeFunction("testVariant", [](std::variant incoming) -> std::variant { + context.writeFunction("testVariant", [](MyVariantType incoming) -> MyVariantType { return incoming; }); { - auto result = context.executeCode>("return testVariant(1)"); + const auto result = context.executeCode("return testVariant(1)"); BOOST_REQUIRE(std::holds_alternative(result)); BOOST_CHECK_EQUAL(std::get(result), 1); } { - auto result = context.executeCode>("return testVariant('foo')"); - BOOST_REQUIRE(std::holds_alternative(result)); - BOOST_CHECK_EQUAL(std::get(result), "foo"); + const auto result = context.executeCode("return testVariant('foo')"); + BOOST_REQUIRE(std::holds_alternative(result)); + BOOST_CHECK_EQUAL(std::get(result), "foo"); } { auto func = [&]() { - context.executeCode>("return testVariant(nil)"); + context.executeCode("return testVariant(nil)"); }; BOOST_CHECK_THROW(func(), LuaContext::ExecutionErrorException); }