From 9851b94d7e28113af9e41576f065b993f13e2d7c Mon Sep 17 00:00:00 2001 From: Werner Henze <34543625+beinhaerter@users.noreply.github.com> Date: Fri, 17 Feb 2023 22:05:40 +0100 Subject: [PATCH] add some span test for constructor from other span (#1093) More combinations with dynamic_extent or fixed extent for higher coverage. --- tests/span_tests.cpp | 108 ++++++++++++++++++++++++++++++++----------- 1 file changed, 82 insertions(+), 26 deletions(-) diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp index 41ac3ae..ebff22e 100644 --- a/tests/span_tests.cpp +++ b/tests/span_tests.cpp @@ -646,37 +646,93 @@ TEST(span_test, from_container_constructor) } } -TEST(span_test, from_convertible_span_constructor){{span avd; -span avcd = avd; -static_cast(avcd); -} - +TEST(span_test, from_convertible_span_constructor) { -#ifdef CONFIRM_COMPILATION_ERRORS - span avd; - span avb = avd; - static_cast(avb); -#endif -} + const auto terminateHandler = std::set_terminate([] { + std::cerr << "Expected Death. from_convertible_span_constructor"; + std::abort(); + }); + const auto expected = GetExpectedDeathString(terminateHandler); + + { + span avd; + span avcd = avd; + static_cast(avcd); + } + + { + std::array arr{}; + span avd{arr}; + span avcd = avd; + static_cast(avcd); + } + + { + std::array arr{}; + span avd{arr}; + span avcd = avd; + static_cast(avcd); + } + + { + std::array arr{}; + span avd{arr}; + span avcd{avd}; + static_cast(avcd); + } + + { + std::array arr{}; + span avd{arr}; + using T = span; + EXPECT_DEATH(T{avd}, expected); + } #ifdef CONFIRM_COMPILATION_ERRORS -{ - span s; - span s2 = s; - static_cast(s2); -} + { + std::array arr{}; + span avd{arr}; + span avcd = avd; + static_cast(avcd); + } -{ - span s; - span s2 = s; - static_cast(s2); -} + { + std::array arr{}; + span avd{arr}; + span avcd = avd; + static_cast(avcd); + } -{ - span s; - span s2 = s; - static_cast(s2); -} + { + std::array arr{}; + span avd{arr}; + span avcd = avd; + static_cast(avcd); + } + + { + span avd; + span avb = avd; + static_cast(avb); + } + + { + span s; + span s2 = s; + static_cast(s2); + } + + { + span s; + span s2 = s; + static_cast(s2); + } + + { + span s; + span s2 = s; + static_cast(s2); + } #endif }