diff --git a/test/always.cpp b/test/always.cpp index aeb4e23..239bad2 100644 --- a/test/always.cpp +++ b/test/always.cpp @@ -5,7 +5,7 @@ FIT_TEST_CASE() { static const int ten = 10; - static_assert(fit::always(ten)(1,2,3,4,5) == 10, "static always test failed"); + FIT_STATIC_TEST_CHECK(fit::always(ten)(1,2,3,4,5) == 10); FIT_TEST_CHECK( fit::always(ten)(1,2,3,4,5) == 10 ); } diff --git a/test/args.cpp b/test/args.cpp index 8c671c4..b0aaee5 100644 --- a/test/args.cpp +++ b/test/args.cpp @@ -3,6 +3,6 @@ FIT_TEST_CASE() { - static_assert(fit::args<3>(1,2,3,4,5) == 3, "static args test failed"); + FIT_STATIC_TEST_CHECK(fit::args<3>(1,2,3,4,5) == 3); FIT_TEST_CHECK( fit::args<3>(1,2,3,4,5) == 3 ); } \ No newline at end of file diff --git a/test/compose.cpp b/test/compose.cpp index 4303d5f..05daea8 100644 --- a/test/compose.cpp +++ b/test/compose.cpp @@ -51,7 +51,7 @@ FIT_TEST_CASE() { int r = fit::compose(increment(), decrement(), increment())(3); FIT_TEST_CHECK(r == 4); - static_assert(fit::compose(increment(), decrement(), increment())(3) == 4, "static compose failed"); + FIT_STATIC_TEST_CHECK(fit::compose(increment(), decrement(), increment())(3) == 4); } FIT_TEST_CASE() diff --git a/test/conditional.cpp b/test/conditional.cpp index a717b12..62f0b10 100644 --- a/test/conditional.cpp +++ b/test/conditional.cpp @@ -53,9 +53,9 @@ FIT_TEST_CASE() FIT_TEST_CHECK(f(t2()) == 2); FIT_TEST_CHECK(f(t3()) == 3); - static_assert(f_constexpr(t1()) == 1, "static conditional failed"); - static_assert(f_constexpr(t2()) == 2, "static conditional failed"); - static_assert(f_constexpr(t3()) == 3, "static conditional failed"); + FIT_STATIC_TEST_CHECK(f_constexpr(t1()) == 1); + FIT_STATIC_TEST_CHECK(f_constexpr(t2()) == 2); + FIT_STATIC_TEST_CHECK(f_constexpr(t3()) == 3); } FIT_TEST_CASE() diff --git a/test/fix.cpp b/test/fix.cpp index ecc54ee..ca87b3f 100644 --- a/test/fix.cpp +++ b/test/fix.cpp @@ -33,7 +33,7 @@ FIT_TEST_CASE() const int r1 = factorial(5); FIT_TEST_CHECK(r1 == 5*4*3*2*1); #if FIT_FIX_HAS_CONSTEXPR - static_assert(r1 == 5*4*3*2*1, "Fix constexpr failed"); + FIT_STATIC_TEST_CHECK(r1 == 5*4*3*2*1); #endif #if FIT_HAS_GENERIC_LAMBDA int r2 = fit::fix([](auto s, auto x) -> decltype(x) { return x == 0 ? 1 : x * s(x-1); })(5); diff --git a/test/fuse.cpp b/test/fuse.cpp index 6477443..5e85c33 100644 --- a/test/fuse.cpp +++ b/test/fuse.cpp @@ -15,8 +15,8 @@ FIT_TEST_CASE() int ifu = 3; FIT_TEST_CHECK(3 == unary_fuse(std::tuple(ifu))); - static_assert(3 == fit::fuse(unary_class())(std::make_tuple(3)), "constexpr fuse failed"); - static_assert(3 == unary_fuse_constexpr(std::make_tuple(3)), "constexpr fuse failed"); + FIT_STATIC_TEST_CHECK(3 == fit::fuse(unary_class())(std::make_tuple(3))); + FIT_STATIC_TEST_CHECK(3 == unary_fuse_constexpr(std::make_tuple(3))); } struct unary_move diff --git a/test/identity.cpp b/test/identity.cpp index eed0999..b3b3ebb 100644 --- a/test/identity.cpp +++ b/test/identity.cpp @@ -3,6 +3,6 @@ FIT_TEST_CASE() { - static_assert(fit::identity(10) == 10, "Constexpr failed"); + FIT_STATIC_TEST_CHECK(fit::identity(10) == 10); FIT_TEST_CHECK(fit::identity(10) == 10); } \ No newline at end of file diff --git a/test/infix.cpp b/test/infix.cpp index b91264c..3826cf8 100644 --- a/test/infix.cpp +++ b/test/infix.cpp @@ -15,5 +15,5 @@ const constexpr fit::infix_adaptor sum = {}; FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); - static_assert(3 == (1 2), "Constexpr infix failed"); + FIT_STATIC_TEST_CHECK(3 == (1 2)); } diff --git a/test/invoke.cpp b/test/invoke.cpp index 747dcfd..964b5bc 100644 --- a/test/invoke.cpp +++ b/test/invoke.cpp @@ -14,5 +14,5 @@ FIT_TEST_CASE() { std::plus add; FIT_TEST_CHECK(fit::invoke(add,std::make_tuple(1,1)) == 2); - static_assert(fit::invoke(my_add(), std::make_tuple(1,1)) == 2, "my_add constexpr failed"); + FIT_STATIC_TEST_CHECK(fit::invoke(my_add(), std::make_tuple(1,1)) == 2); } \ No newline at end of file diff --git a/test/lazy.cpp b/test/lazy.cpp index 816738a..d32656b 100644 --- a/test/lazy.cpp +++ b/test/lazy.cpp @@ -125,11 +125,11 @@ FIT_TEST_CASE() FIT_TEST_CHECK( fit::lazy(f_2())( fit::lazy(f_1())(std::placeholders::_1), fit::lazy(f_1())( std::placeholders::_2))(x, y) == 21L ); FIT_TEST_CHECK( fit::lazy(f_1())( fit::lazy(f_0())())() == 17041L ); - static_assert( fit::lazy(f_1())( fit::lazy(f_1())(test_placeholder<1>()))(x) == 1L, "Constexpr lazy failed" ); - static_assert( fit::lazy(f_1())( fit::lazy(f_2())(test_placeholder<1>(), test_placeholder<2>()))(x, y) == 21L, "Constexpr lazy failed" ); - static_assert( fit::lazy(f_2())( fit::lazy(f_1())(test_placeholder<1>()), fit::lazy(f_1())(test_placeholder<1>()))(x) == 11L, "Constexpr lazy failed" ); - static_assert( fit::lazy(f_2())( fit::lazy(f_1())(test_placeholder<1>()), fit::lazy(f_1())( test_placeholder<2>()))(x, y) == 21L, "Constexpr lazy failed" ); - static_assert( fit::lazy(f_1())( fit::lazy(f_0())())() == 17041L, "Constexpr lazy failed" ); + FIT_STATIC_TEST_CHECK( fit::lazy(f_1())( fit::lazy(f_1())(test_placeholder<1>()))(x) == 1L ); + FIT_STATIC_TEST_CHECK( fit::lazy(f_1())( fit::lazy(f_2())(test_placeholder<1>(), test_placeholder<2>()))(x, y) == 21L ); + FIT_STATIC_TEST_CHECK( fit::lazy(f_2())( fit::lazy(f_1())(test_placeholder<1>()), fit::lazy(f_1())(test_placeholder<1>()))(x) == 11L ); + FIT_STATIC_TEST_CHECK( fit::lazy(f_2())( fit::lazy(f_1())(test_placeholder<1>()), fit::lazy(f_1())( test_placeholder<2>()))(x, y) == 21L ); + FIT_STATIC_TEST_CHECK( fit::lazy(f_1())( fit::lazy(f_0())())() == 17041L ); FIT_TEST_CHECK( (fit::lazy(fv_1())( fit::lazy(f_1())(std::placeholders::_1))(x), (global_result == 1L)) ); FIT_TEST_CHECK( (fit::lazy(fv_1())( fit::lazy(f_2())(std::placeholders::_1, std::placeholders::_2))(x, y), (global_result == 21L)) ); diff --git a/test/match.cpp b/test/match.cpp index 392044a..2d7e8ea 100644 --- a/test/match.cpp +++ b/test/match.cpp @@ -58,8 +58,8 @@ FIT_TEST_CASE() FIT_TEST_CHECK(fun(1) == 1); FIT_TEST_CHECK(fun(foo()) == 2); - static_assert(fun(1) == 1, "Failed match"); - static_assert(fun(foo()) == 2, "Failed match"); + FIT_STATIC_TEST_CHECK(fun(1) == 1); + FIT_STATIC_TEST_CHECK(fun(foo()) == 2); }; diff --git a/test/on.cpp b/test/on.cpp index 0010d50..dfbe2db 100644 --- a/test/on.cpp +++ b/test/on.cpp @@ -20,7 +20,7 @@ struct select_x FIT_TEST_CASE() { constexpr auto add = fit::_ + fit::_; - static_assert(fit::on(select_x(), fit::_ + fit::_)(foo(1), foo(2)) == 3, "Constexpr projection failed"); + FIT_STATIC_TEST_CHECK(fit::on(select_x(), fit::_ + fit::_)(foo(1), foo(2)) == 3); FIT_TEST_CHECK(fit::on(std::mem_fn(&foo::x), fit::_ + fit::_)(foo(1), foo(2)) == 3); } diff --git a/test/pack.cpp b/test/pack.cpp index 98a4870..b673166 100644 --- a/test/pack.cpp +++ b/test/pack.cpp @@ -9,55 +9,55 @@ FIT_TEST_CASE() auto p2 = p1; FIT_TEST_CHECK(p2(binary_class()) == p1(binary_class())); - static_assert(fit::pack(1, 2)(binary_class()) == 3, "static pack test failed"); + FIT_STATIC_TEST_CHECK(fit::pack(1, 2)(binary_class()) == 3); FIT_TEST_CHECK(fit::pack(1, 2)(binary_class()) == 3 ); - static_assert(fit::pack_decay(1, 2)(binary_class()) == 3, "static pack_decay test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_decay(1, 2)(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_decay(1, 2)(binary_class()) == 3 ); - static_assert(fit::pack_forward(1, 2)(binary_class()) == 3, "static pack_forward test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_forward(1, 2)(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_forward(1, 2)(binary_class()) == 3 ); } FIT_TEST_CASE() { - static_assert(fit::pack()(fit::always(3)) == 3, "static unary pack test failed"); + FIT_STATIC_TEST_CHECK(fit::pack()(fit::always(3)) == 3); FIT_TEST_CHECK(fit::pack()(fit::always(3)) == 3 ); } FIT_TEST_CASE() { - static_assert(fit::pack_join(fit::pack(1), fit::pack(2))(binary_class()) == 3, "static pack test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack(1), fit::pack(2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack(1), fit::pack(2))(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_decay(1), fit::pack_decay(2))(binary_class()) == 3, "static pack_decay test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_decay(1), fit::pack_decay(2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_decay(1), fit::pack_decay(2))(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_forward(1), fit::pack_forward(2))(binary_class()) == 3, "static pack_forward test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_forward(1), fit::pack_forward(2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_forward(1), fit::pack_forward(2))(binary_class()) == 3 ); } FIT_TEST_CASE() { - static_assert(fit::pack_join(fit::pack(), fit::pack(1, 2))(binary_class()) == 3, "static pack test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack(), fit::pack(1, 2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack(), fit::pack(1, 2))(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_decay(), fit::pack_decay(1, 2))(binary_class()) == 3, "static pack_decay test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_decay(), fit::pack_decay(1, 2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_decay(), fit::pack_decay(1, 2))(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_forward(), fit::pack_forward(1, 2))(binary_class()) == 3, "static pack_forward test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_forward(), fit::pack_forward(1, 2))(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_forward(), fit::pack_forward(1, 2))(binary_class()) == 3 ); } FIT_TEST_CASE() { - static_assert(fit::pack_join(fit::pack(1, 2), fit::pack())(binary_class()) == 3, "static pack test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack(1, 2), fit::pack())(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack(1, 2), fit::pack())(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_decay(1, 2), fit::pack_decay())(binary_class()) == 3, "static pack_decay test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_decay(1, 2), fit::pack_decay())(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_decay(1, 2), fit::pack_decay())(binary_class()) == 3 ); - static_assert(fit::pack_join(fit::pack_forward(1, 2), fit::pack_forward())(binary_class()) == 3, "static pack_forward test failed"); + FIT_STATIC_TEST_CHECK(fit::pack_join(fit::pack_forward(1, 2), fit::pack_forward())(binary_class()) == 3); FIT_TEST_CHECK(fit::pack_join(fit::pack_forward(1, 2), fit::pack_forward())(binary_class()) == 3 ); } diff --git a/test/partial.cpp b/test/partial.cpp index ed1e7ba..a3bed9a 100644 --- a/test/partial.cpp +++ b/test/partial.cpp @@ -57,11 +57,11 @@ FIT_TEST_CASE() { void_partial_constexpr(1); void_partial_constexpr()(1); - static_assert(3 == binary_partial_constexpr(1)(2), "Constexpr partial failed"); - static_assert(3 == binary_partial_constexpr(1, 2), "Constexpr partial failed"); - static_assert(3 == unary_partial_constexpr()(3), "Constexpr partial failed"); - static_assert(3 == unary_partial_constexpr(3), "Constexpr partial failed"); - static_assert(3 == mono_partial_constexpr(2), "Constexpr partial failed"); - static_assert(3 == mono_partial_constexpr()(2), "Constexpr partial failed"); + FIT_STATIC_TEST_CHECK(3 == binary_partial_constexpr(1)(2)); + FIT_STATIC_TEST_CHECK(3 == binary_partial_constexpr(1, 2)); + FIT_STATIC_TEST_CHECK(3 == unary_partial_constexpr()(3)); + FIT_STATIC_TEST_CHECK(3 == unary_partial_constexpr(3)); + FIT_STATIC_TEST_CHECK(3 == mono_partial_constexpr(2)); + FIT_STATIC_TEST_CHECK(3 == mono_partial_constexpr()(2)); } \ No newline at end of file diff --git a/test/pipable.cpp b/test/pipable.cpp index 2c3902d..cf14c51 100644 --- a/test/pipable.cpp +++ b/test/pipable.cpp @@ -53,10 +53,10 @@ FIT_TEST_CASE() { void_pipable_constexpr(1); 1 | void_pipable_constexpr; - static_assert(3 == (1 | binary_pipable_constexpr(2)), "Constexpr pipable failed"); - static_assert(3 == (binary_pipable_constexpr(1, 2)), "Constexpr pipable failed"); - static_assert(3 == (3 | unary_pipable_constexpr), "Constexpr pipable failed"); - static_assert(3 == (3 | unary_pipable_constexpr()), "Constexpr pipable failed"); - static_assert(3 == (unary_pipable_constexpr(3)), "Constexpr pipable failed"); + FIT_STATIC_TEST_CHECK(3 == (1 | binary_pipable_constexpr(2))); + FIT_STATIC_TEST_CHECK(3 == (binary_pipable_constexpr(1, 2))); + FIT_STATIC_TEST_CHECK(3 == (3 | unary_pipable_constexpr)); + FIT_STATIC_TEST_CHECK(3 == (3 | unary_pipable_constexpr())); + FIT_STATIC_TEST_CHECK(3 == (unary_pipable_constexpr(3))); } diff --git a/test/placeholders.cpp b/test/placeholders.cpp index c92d507..11071df 100644 --- a/test/placeholders.cpp +++ b/test/placeholders.cpp @@ -13,7 +13,7 @@ FIT_TEST_CASE() { const auto x_square_add = 2 + (4*4); constexpr auto f_square_add = fit::_1 + fit::lazy(square())(fit::_2); - static_assert(f_square_add(2, 4) == x_square_add, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_square_add(2, 4) == x_square_add); FIT_TEST_CHECK(f_square_add(2, 4) == x_square_add); } @@ -21,100 +21,92 @@ FIT_TEST_CASE() { const auto x_add = 2 + 1; constexpr auto f_add = fit::_1 + fit::_2; - static_assert(f_add(2, 1) == x_add, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_add(2, 1) == x_add); FIT_TEST_CHECK(f_add(2, 1) == x_add); const auto x_subtract = 2 - 1; constexpr auto f_subtract = fit::_1 - fit::_2; - static_assert(f_subtract(2, 1) == x_subtract, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_subtract(2, 1) == x_subtract); FIT_TEST_CHECK(f_subtract(2, 1) == x_subtract); const auto x_multiply = 2 * 1; constexpr auto f_multiply = fit::_1 * fit::_2; - static_assert(f_multiply(2, 1) == x_multiply, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_multiply(2, 1) == x_multiply); FIT_TEST_CHECK(f_multiply(2, 1) == x_multiply); const auto x_divide = 2 / 1; constexpr auto f_divide = fit::_1 / fit::_2; - static_assert(f_divide(2, 1) == x_divide, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_divide(2, 1) == x_divide); FIT_TEST_CHECK(f_divide(2, 1) == x_divide); const auto x_remainder = 2 % 1; constexpr auto f_remainder = fit::_1 % fit::_2; - static_assert(f_remainder(2, 1) == x_remainder, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_remainder(2, 1) == x_remainder); FIT_TEST_CHECK(f_remainder(2, 1) == x_remainder); const auto x_shift_right = 2 >> 1; constexpr auto f_shift_right = fit::_1 >> fit::_2; - static_assert(f_shift_right(2, 1) == x_shift_right, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_shift_right(2, 1) == x_shift_right); FIT_TEST_CHECK(f_shift_right(2, 1) == x_shift_right); const auto x_shift_left = 2 << 1; constexpr auto f_shift_left = fit::_1 << fit::_2; - static_assert(f_shift_left(2, 1) == x_shift_left, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_shift_left(2, 1) == x_shift_left); FIT_TEST_CHECK(f_shift_left(2, 1) == x_shift_left); const auto x_greater_than = 2 > 1; constexpr auto f_greater_than = fit::_1 > fit::_2; - static_assert(f_greater_than(2, 1) == x_greater_than, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_greater_than(2, 1) == x_greater_than); FIT_TEST_CHECK(f_greater_than(2, 1) == x_greater_than); const auto x_less_than = 2 < 1; constexpr auto f_less_than = fit::_1 < fit::_2; - static_assert(f_less_than(2, 1) == x_less_than, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_less_than(2, 1) == x_less_than); FIT_TEST_CHECK(f_less_than(2, 1) == x_less_than); const auto x_less_than_equal = 2 <= 1; constexpr auto f_less_than_equal = fit::_1 <= fit::_2; - static_assert(f_less_than_equal(2, 1) == x_less_than_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_less_than_equal(2, 1) == x_less_than_equal); FIT_TEST_CHECK(f_less_than_equal(2, 1) == x_less_than_equal); const auto x_greater_than_equal = 2 >= 1; constexpr auto f_greater_than_equal = fit::_1 >= fit::_2; - static_assert(f_greater_than_equal(2, 1) == x_greater_than_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_greater_than_equal(2, 1) == x_greater_than_equal); FIT_TEST_CHECK(f_greater_than_equal(2, 1) == x_greater_than_equal); const auto x_equal = 2 == 1; constexpr auto f_equal = fit::_1 == fit::_2; - static_assert(f_equal(2, 1) == x_equal, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_equal(2, 1) == x_equal); FIT_TEST_CHECK(f_equal(2, 1) == x_equal); const auto x_not_equal = 2 != 1; constexpr auto f_not_equal = fit::_1 != fit::_2; - static_assert(f_not_equal(2, 1) == x_not_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_not_equal(2, 1) == x_not_equal); FIT_TEST_CHECK(f_not_equal(2, 1) == x_not_equal); const auto x_bit_and = 2 & 1; constexpr auto f_bit_and = fit::_1 & fit::_2; - static_assert(f_bit_and(2, 1) == x_bit_and, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_bit_and(2, 1) == x_bit_and); FIT_TEST_CHECK(f_bit_and(2, 1) == x_bit_and); const auto x_xor_ = 2 ^ 1; constexpr auto f_xor_ = fit::_1 ^ fit::_2; - static_assert(f_xor_(2, 1) == x_xor_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_xor_(2, 1) == x_xor_); FIT_TEST_CHECK(f_xor_(2, 1) == x_xor_); const auto x_bit_or = 2 | 1; constexpr auto f_bit_or = fit::_1 | fit::_2; - static_assert(f_bit_or(2, 1) == x_bit_or, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_bit_or(2, 1) == x_bit_or); FIT_TEST_CHECK(f_bit_or(2, 1) == x_bit_or); const auto x_and_ = true && false; constexpr auto f_and_ = fit::_1 && fit::_2; - static_assert(f_and_(true, false) == x_and_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_and_(true, false) == x_and_); FIT_TEST_CHECK(f_and_(true, false) == x_and_); const auto x_or_ = true || false; constexpr auto f_or_ = fit::_1 || fit::_2; - static_assert(f_or_(true, false) == x_or_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_or_(true, false) == x_or_); FIT_TEST_CHECK(f_or_(true, false) == x_or_); } @@ -123,30 +115,27 @@ FIT_TEST_CASE() const auto x_not_ = !false; constexpr auto f_not_ = !fit::_1; - static_assert(f_not_(false) == x_not_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_not_(false) == x_not_); FIT_TEST_CHECK(f_not_(false) == x_not_); const auto x_compl_ = ~2; constexpr auto f_compl_ = ~fit::_1; - static_assert(f_compl_(2) == x_compl_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_compl_(2) == x_compl_); FIT_TEST_CHECK(f_compl_(2) == x_compl_); const auto x_unary_plus = +2; constexpr auto f_unary_plus = +fit::_1; - static_assert(f_unary_plus(2) == x_unary_plus, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_unary_plus(2) == x_unary_plus); FIT_TEST_CHECK(f_unary_plus(2) == x_unary_plus); const auto x_unary_subtract = -2; constexpr auto f_unary_subtract = -fit::_1; - static_assert(f_unary_subtract(2) == x_unary_subtract, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_unary_subtract(2) == x_unary_subtract); FIT_TEST_CHECK(f_unary_subtract(2) == x_unary_subtract); const auto x_dereference = 2; constexpr auto f_dereference = *fit::_1; - static_assert(f_dereference(&x_dereference) == x_dereference, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_dereference(&x_dereference) == x_dereference); FIT_TEST_CHECK(f_dereference(&x_dereference) == x_dereference); // TODO: Test constexpr increment and decrement @@ -169,100 +158,92 @@ FIT_TEST_CASE() { const auto x_add = 2 + 1; constexpr auto f_add = fit::_ + fit::_; - static_assert(f_add(2, 1) == x_add, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_add(2, 1) == x_add); FIT_TEST_CHECK(f_add(2, 1) == x_add); const auto x_subtract = 2 - 1; constexpr auto f_subtract = fit::_ - fit::_; - static_assert(f_subtract(2, 1) == x_subtract, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_subtract(2, 1) == x_subtract); FIT_TEST_CHECK(f_subtract(2, 1) == x_subtract); const auto x_multiply = 2 * 1; constexpr auto f_multiply = fit::_ * fit::_; - static_assert(f_multiply(2, 1) == x_multiply, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_multiply(2, 1) == x_multiply); FIT_TEST_CHECK(f_multiply(2, 1) == x_multiply); const auto x_divide = 2 / 1; constexpr auto f_divide = fit::_ / fit::_; - static_assert(f_divide(2, 1) == x_divide, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_divide(2, 1) == x_divide); FIT_TEST_CHECK(f_divide(2, 1) == x_divide); const auto x_remainder = 2 % 1; constexpr auto f_remainder = fit::_ % fit::_; - static_assert(f_remainder(2, 1) == x_remainder, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_remainder(2, 1) == x_remainder); FIT_TEST_CHECK(f_remainder(2, 1) == x_remainder); const auto x_shift_right = 2 >> 1; constexpr auto f_shift_right = fit::_ >> fit::_; - static_assert(f_shift_right(2, 1) == x_shift_right, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_shift_right(2, 1) == x_shift_right); FIT_TEST_CHECK(f_shift_right(2, 1) == x_shift_right); const auto x_shift_left = 2 << 1; constexpr auto f_shift_left = fit::_ << fit::_; - static_assert(f_shift_left(2, 1) == x_shift_left, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_shift_left(2, 1) == x_shift_left); FIT_TEST_CHECK(f_shift_left(2, 1) == x_shift_left); const auto x_greater_than = 2 > 1; constexpr auto f_greater_than = fit::_ > fit::_; - static_assert(f_greater_than(2, 1) == x_greater_than, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_greater_than(2, 1) == x_greater_than); FIT_TEST_CHECK(f_greater_than(2, 1) == x_greater_than); const auto x_less_than = 2 < 1; constexpr auto f_less_than = fit::_ < fit::_; - static_assert(f_less_than(2, 1) == x_less_than, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_less_than(2, 1) == x_less_than); FIT_TEST_CHECK(f_less_than(2, 1) == x_less_than); const auto x_less_than_equal = 2 <= 1; constexpr auto f_less_than_equal = fit::_ <= fit::_; - static_assert(f_less_than_equal(2, 1) == x_less_than_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_less_than_equal(2, 1) == x_less_than_equal); FIT_TEST_CHECK(f_less_than_equal(2, 1) == x_less_than_equal); const auto x_greater_than_equal = 2 >= 1; constexpr auto f_greater_than_equal = fit::_ >= fit::_; - static_assert(f_greater_than_equal(2, 1) == x_greater_than_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_greater_than_equal(2, 1) == x_greater_than_equal); FIT_TEST_CHECK(f_greater_than_equal(2, 1) == x_greater_than_equal); const auto x_equal = 2 == 1; constexpr auto f_equal = fit::_ == fit::_; - static_assert(f_equal(2, 1) == x_equal, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_equal(2, 1) == x_equal); FIT_TEST_CHECK(f_equal(2, 1) == x_equal); const auto x_not_equal = 2 != 1; constexpr auto f_not_equal = fit::_ != fit::_; - static_assert(f_not_equal(2, 1) == x_not_equal, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_not_equal(2, 1) == x_not_equal); FIT_TEST_CHECK(f_not_equal(2, 1) == x_not_equal); const auto x_bit_and = 2 & 1; constexpr auto f_bit_and = fit::_ & fit::_; - static_assert(f_bit_and(2, 1) == x_bit_and, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_bit_and(2, 1) == x_bit_and); FIT_TEST_CHECK(f_bit_and(2, 1) == x_bit_and); const auto x_xor_ = 2 ^ 1; constexpr auto f_xor_ = fit::_ ^ fit::_; - static_assert(f_xor_(2, 1) == x_xor_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_xor_(2, 1) == x_xor_); FIT_TEST_CHECK(f_xor_(2, 1) == x_xor_); const auto x_bit_or = 2 | 1; constexpr auto f_bit_or = fit::_ | fit::_; - static_assert(f_bit_or(2, 1) == x_bit_or, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_bit_or(2, 1) == x_bit_or); FIT_TEST_CHECK(f_bit_or(2, 1) == x_bit_or); const auto x_and_ = true && false; constexpr auto f_and_ = fit::_ && fit::_; - static_assert(f_and_(true, false) == x_and_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_and_(true, false) == x_and_); FIT_TEST_CHECK(f_and_(true, false) == x_and_); const auto x_or_ = true || false; constexpr auto f_or_ = fit::_ || fit::_; - static_assert(f_or_(true, false) == x_or_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_or_(true, false) == x_or_); FIT_TEST_CHECK(f_or_(true, false) == x_or_); } @@ -271,30 +252,27 @@ FIT_TEST_CASE() const auto x_not_ = !false; constexpr auto f_not_ = !fit::_; - static_assert(f_not_(false) == x_not_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_not_(false) == x_not_); FIT_TEST_CHECK(f_not_(false) == x_not_); const auto x_compl_ = ~2; constexpr auto f_compl_ = ~fit::_; - static_assert(f_compl_(2) == x_compl_, "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_compl_(2) == x_compl_); FIT_TEST_CHECK(f_compl_(2) == x_compl_); const auto x_unary_plus = +2; constexpr auto f_unary_plus = +fit::_; - static_assert(f_unary_plus(2) == x_unary_plus, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_unary_plus(2) == x_unary_plus); FIT_TEST_CHECK(f_unary_plus(2) == x_unary_plus); const auto x_unary_subtract = -2; constexpr auto f_unary_subtract = -fit::_; - static_assert(f_unary_subtract(2) == x_unary_subtract, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_unary_subtract(2) == x_unary_subtract); FIT_TEST_CHECK(f_unary_subtract(2) == x_unary_subtract); const auto x_dereference = 2; constexpr auto f_dereference = *fit::_; - static_assert(f_dereference(&x_dereference) == x_dereference, - "Constexpr placeholder failed"); + FIT_STATIC_TEST_CHECK(f_dereference(&x_dereference) == x_dereference); FIT_TEST_CHECK(f_dereference(&x_dereference) == x_dereference); // TODO: Test constexpr increment and decrement diff --git a/test/test.h b/test/test.h index 4556c66..5e933ad 100644 --- a/test/test.h +++ b/test/test.h @@ -8,6 +8,14 @@ #include #include +#ifndef FIT_HAS_STATIC_TEST_CHECK +#if defined(__GNUC__) && !defined (__clang__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7 +#define FIT_HAS_STATIC_TEST_CHECK 0 +#else +#define FIT_HAS_STATIC_TEST_CHECK 1 +#endif +#endif + #define FIT_PP_CAT(x, y) FIT_PP_PRIMITIVE_CAT(x, y) #define FIT_PP_PRIMITIVE_CAT(x, y) x ## y @@ -41,7 +49,13 @@ void name::operator()() const #define FIT_TEST_TEMPLATE(...) typedef std::integral_constant FIT_PP_CAT(test_template_, __LINE__) #define FIT_TEST_CHECK(...) if (!(__VA_ARGS__)) std::cout << "*****FAILED: " << #__VA_ARGS__ << "@" << __FILE__ << ": " << __LINE__ << std::endl +#define FIT_STRINGIZE(...) #__VA_ARGS__ +#if FIT_HAS_STATIC_TEST_CHECK +#define FIT_STATIC_TEST_CHECK(...) static_assert(__VA_ARGS__, FIT_STRINGIZE(__VA_ARGS__)) +#else +#define FIT_STATIC_TEST_CHECK(...) +#endif struct binary_class { template diff --git a/test/variadic.cpp b/test/variadic.cpp index dbbf444..1310352 100644 --- a/test/variadic.cpp +++ b/test/variadic.cpp @@ -6,5 +6,5 @@ typedef fit::variadic_adaptor vard_class; FIT_TEST_CASE() { FIT_TEST_CHECK(3 == vard_class()(2)); - static_assert(3 == vard_class()(2), "constexpr variadic failed"); + FIT_STATIC_TEST_CHECK(3 == vard_class()(2)); } \ No newline at end of file