diff options
| author | Martin Hořeňovský | 2022-11-05 00:42:09 +0100 |
|---|---|---|
| committer | Martin Hořeňovský | 2022-11-05 20:43:52 +0100 |
| commit | 3b139ae51a52382d4a86764d7b44e1c3d2eb3eca (patch) | |
| tree | b5605cfc5d3834ae41787cc8e52d5a8be6a89e19 /src/catch2/internal | |
| parent | 5f9d4ef3319f2b13011161662ca2b02d0feb4667 (diff) | |
| download | catch3-3b139ae51a52382d4a86764d7b44e1c3d2eb3eca.tar.gz | |
Decomposer checks for 0 when assuming an int arg was 0 literal
Diffstat (limited to 'src/catch2/internal')
| -rw-r--r-- | src/catch2/internal/catch_decomposer.hpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/catch2/internal/catch_decomposer.hpp b/src/catch2/internal/catch_decomposer.hpp index ab563701..3448803f 100644 --- a/src/catch2/internal/catch_decomposer.hpp +++ b/src/catch2/internal/catch_decomposer.hpp @@ -12,6 +12,7 @@ #include <catch2/internal/catch_stringref.hpp> #include <catch2/internal/catch_meta.hpp> #include <catch2/internal/catch_compare_traits.hpp> +#include <catch2/internal/catch_test_failure_exception.hpp> #include <type_traits> #include <iosfwd> @@ -196,6 +197,9 @@ namespace Catch { int> = 0> \ friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ ->BinaryExpr<LhsT, RhsT> { \ + if ( rhs != 0 ) { \ + throw_test_failure_exception(); \ + } \ return { \ static_cast<bool>( lhs.m_lhs op 0 ), lhs.m_lhs, #op##_sr, rhs }; \ } \ @@ -210,6 +214,9 @@ namespace Catch { int> = 0> \ friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ ->BinaryExpr<LhsT, RhsT> { \ + if ( lhs.m_lhs != 0 ) { \ + throw_test_failure_exception(); \ + } \ return { static_cast<bool>( 0 op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ } CATCH_INTERNAL_DEFINE_EXPRESSION_EQUALITY_OPERATOR( eq, == ) @@ -247,7 +254,9 @@ namespace Catch { int> = 0> \ friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ ->BinaryExpr<LhsT, RhsT> { \ - /* TODO: do we want to assert that Rhs is 0? */ \ + if ( rhs != 0 ) { \ + throw_test_failure_exception(); \ + } \ return { \ static_cast<bool>( lhs.m_lhs op 0 ), lhs.m_lhs, #op##_sr, rhs }; \ } \ @@ -259,7 +268,9 @@ namespace Catch { int> = 0> \ friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ ->BinaryExpr<LhsT, RhsT> { \ - /* TODO: do we want to assert that lhs is 0? */ \ + if ( lhs.m_lhs != 0 ) { \ + throw_test_failure_exception(); \ + } \ return { static_cast<bool>( 0 op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ } |