From acbee814a787da79be6d5ac6e9590b9b8699c2c8 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:06:03 +0100 Subject: [PATCH] DPL: add test for exception throwing in Variant --- Framework/Core/include/Framework/Variant.h | 2 +- Framework/Core/test/test_Variants.cxx | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Framework/Core/include/Framework/Variant.h b/Framework/Core/include/Framework/Variant.h index 54a91e90c3638..e69ca05b91d98 100644 --- a/Framework/Core/include/Framework/Variant.h +++ b/Framework/Core/include/Framework/Variant.h @@ -355,7 +355,7 @@ class Variant T get() const { if (mType != variant_trait_v) { - throw runtime_error("Mismatch between types"); + throw runtime_error_f("Variant::get: Mismatch between types %d %d.", mType, variant_trait_v); } return variant_helper::get(&mStore); } diff --git a/Framework/Core/test/test_Variants.cxx b/Framework/Core/test/test_Variants.cxx index a0edf40cf9f0d..a364b228871da 100644 --- a/Framework/Core/test/test_Variants.cxx +++ b/Framework/Core/test/test_Variants.cxx @@ -338,3 +338,15 @@ TEST_CASE("VariantJSONConversionsTest") REQUIRE(vstrings[i] == vvstra.get()[i]); } } + +TEST_CASE("VariantThrowing") +{ + Variant a("true"); + REQUIRE_THROWS_AS(a.get(), o2::framework::RuntimeErrorRef); + try { + a.get(); + } catch (RuntimeErrorRef& ref) { + RuntimeError& error = error_from_ref(ref); + REQUIRE(error.what == std::string("Variant::get: Mismatch between types 4 0.")); + } +}