15 #ifndef INCG_IRIS_IUTEST_PRED_HPP_ADF851F3_C89B_4CA4_B9A0_A2B2229945C6_
16 #define INCG_IRIS_IUTEST_PRED_HPP_ADF851F3_C89B_4CA4_B9A0_A2B2229945C6_
31 #define IUTEST_ASSERT_PRED1(pred, v1) \
32 IUTEST_PRED1_(pred, v1, IUTEST_ASSERT_FAILURE)
39 #define IUTEST_EXPECT_PRED1(pred, v1) \
40 IUTEST_PRED1_(pred, v1, IUTEST_EXPECT_FAILURE)
47 #define IUTEST_INFORM_PRED1(pred, v1) \
48 IUTEST_PRED1_(pred, v1, IUTEST_INFORM_FAILURE)
55 #define IUTEST_ASSUME_PRED1(pred, v1) \
56 IUTEST_PRED1_(pred, v1, IUTEST_ASSUME_FAILURE)
64 #define IUTEST_ASSERT_PRED_FORMAT1(pred_formatter, v1) \
65 IUTEST_PRED_FORMAT1_(pred_formatter, v1, IUTEST_ASSERT_FAILURE)
72 #define IUTEST_EXPECT_PRED_FORMAT1(pred_formatter, v1) \
73 IUTEST_PRED_FORMAT1_(pred_formatter, v1, IUTEST_EXPECT_FAILURE)
80 #define IUTEST_INFORM_PRED_FORMAT1(pred_formatter, v1) \
81 IUTEST_PRED_FORMAT1_(pred_formatter, v1, IUTEST_INFORM_FAILURE)
88 #define IUTEST_ASSUME_PRED_FORMAT1(pred_formatter, v1) \
89 IUTEST_PRED_FORMAT1_(pred_formatter, v1, IUTEST_ASSUME_FAILURE)
99 #define IUTEST_ASSERT_PRED2(pred, v1, v2) \
100 IUTEST_PRED2_(pred, v1, v2, IUTEST_ASSERT_FAILURE)
108 #define IUTEST_EXPECT_PRED2(pred, v1, v2) \
109 IUTEST_PRED2_(pred, v1, v2, IUTEST_EXPECT_FAILURE)
117 #define IUTEST_INFORM_PRED2(pred, v1, v2) \
118 IUTEST_PRED2_(pred, v1, v2, IUTEST_INFORM_FAILURE)
126 #define IUTEST_ASSUME_PRED2(pred, v1, v2) \
127 IUTEST_PRED2_(pred, v1, v2, IUTEST_ASSUME_FAILURE)
136 #define IUTEST_ASSERT_PRED_FORMAT2(pred_formatter, v1, v2) \
137 IUTEST_PRED_FORMAT2_(pred_formatter, v1, v2, IUTEST_ASSERT_FAILURE)
145 #define IUTEST_EXPECT_PRED_FORMAT2(pred_formatter, v1, v2) \
146 IUTEST_PRED_FORMAT2_(pred_formatter, v1, v2, IUTEST_EXPECT_FAILURE)
154 #define IUTEST_INFORM_PRED_FORMAT2(pred_formatter, v1, v2) \
155 IUTEST_PRED_FORMAT2_(pred_formatter, v1, v2, IUTEST_INFORM_FAILURE)
163 #define IUTEST_ASSUME_PRED_FORMAT2(pred_formatter, v1, v2) \
164 IUTEST_PRED_FORMAT2_(pred_formatter, v1, v2, IUTEST_ASSUME_FAILURE)
175 #define IUTEST_ASSERT_PRED3(pred, v1, v2, v3) \
176 IUTEST_PRED3_(pred, v1, v2, v3, IUTEST_ASSERT_FAILURE)
185 #define IUTEST_EXPECT_PRED3(pred, v1, v2, v3) \
186 IUTEST_PRED3_(pred, v1, v2, v3, IUTEST_EXPECT_FAILURE)
195 #define IUTEST_INFORM_PRED3(pred, v1, v2, v3) \
196 IUTEST_PRED3_(pred, v1, v2, v3, IUTEST_INFORM_FAILURE)
205 #define IUTEST_ASSUME_PRED3(pred, v1, v2, v3) \
206 IUTEST_PRED3_(pred, v1, v2, v3, IUTEST_ASSUME_FAILURE)
216 #define IUTEST_ASSERT_PRED_FORMAT3(pred_formatter, v1, v2, v3) \
217 IUTEST_PRED_FORMAT3_(pred_formatter, v1, v2, v3, IUTEST_ASSERT_FAILURE)
226 #define IUTEST_EXPECT_PRED_FORMAT3(pred_formatter, v1, v2, v3) \
227 IUTEST_PRED_FORMAT3_(pred_formatter, v1, v2, v3, IUTEST_EXPECT_FAILURE)
236 #define IUTEST_INFORM_PRED_FORMAT3(pred_formatter, v1, v2, v3) \
237 IUTEST_PRED_FORMAT3_(pred_formatter, v1, v2, v3, IUTEST_INFORM_FAILURE)
246 #define IUTEST_ASSUME_PRED_FORMAT3(pred_formatter, v1, v2, v3) \
247 IUTEST_PRED_FORMAT3_(pred_formatter, v1, v2, v3, IUTEST_ASSUME_FAILURE)
259 #define IUTEST_ASSERT_PRED4(pred, v1, v2, v3, v4) \
260 IUTEST_PRED4_(pred, v1, v2, v3, v4, IUTEST_ASSERT_FAILURE)
270 #define IUTEST_EXPECT_PRED4(pred, v1, v2, v3, v4) \
271 IUTEST_PRED4_(pred, v1, v2, v3, v4, IUTEST_EXPECT_FAILURE)
281 #define IUTEST_INFORM_PRED4(pred, v1, v2, v3, v4) \
282 IUTEST_PRED4_(pred, v1, v2, v3, v4, IUTEST_INFORM_FAILURE)
292 #define IUTEST_ASSUME_PRED4(pred, v1, v2, v3, v4) \
293 IUTEST_PRED4_(pred, v1, v2, v3, v4, IUTEST_ASSUME_FAILURE)
304 #define IUTEST_ASSERT_PRED_FORMAT4(pred_formatter, v1, v2, v3, v4) \
305 IUTEST_PRED_FORMAT4_(pred_formatter, v1, v2, v3, v4, IUTEST_ASSERT_FAILURE)
315 #define IUTEST_EXPECT_PRED_FORMAT4(pred_formatter, v1, v2, v3, v4) \
316 IUTEST_PRED_FORMAT4_(pred_formatter, v1, v2, v3, v4, IUTEST_EXPECT_FAILURE)
326 #define IUTEST_INFORM_PRED_FORMAT4(pred_formatter, v1, v2, v3, v4) \
327 IUTEST_PRED_FORMAT4_(pred_formatter, v1, v2, v3, v4, IUTEST_INFORM_FAILURE)
337 #define IUTEST_ASSUME_PRED_FORMAT4(pred_formatter, v1, v2, v3, v4) \
338 IUTEST_PRED_FORMAT4_(pred_formatter, v1, v2, v3, v4, IUTEST_ASSUME_FAILURE)
352 #define IUTEST_ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
353 IUTEST_PRED5_(pred, v1, v2, v3, v4, v5, IUTEST_ASSERT_FAILURE)
364 #define IUTEST_EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
365 IUTEST_PRED5_(pred, v1, v2, v3, v4, v5, IUTEST_EXPECT_FAILURE)
376 #define IUTEST_INFORM_PRED5(pred, v1, v2, v3, v4, v5) \
377 IUTEST_PRED5_(pred, v1, v2, v3, v4, v5, IUTEST_INFORM_FAILURE)
388 #define IUTEST_ASSUME_PRED5(pred, v1, v2, v3, v4, v5) \
389 IUTEST_PRED5_(pred, v1, v2, v3, v4, v5, IUTEST_ASSUME_FAILURE)
401 #define IUTEST_ASSERT_PRED_FORMAT5(pred_formatter, v1, v2, v3, v4, v5) \
402 IUTEST_PRED_FORMAT5_(pred_formatter, v1, v2, v3, v4, v5, IUTEST_ASSERT_FAILURE)
413 #define IUTEST_EXPECT_PRED_FORMAT5(pred_formatter, v1, v2, v3, v4, v5) \
414 IUTEST_PRED_FORMAT5_(pred_formatter, v1, v2, v3, v4, v5, IUTEST_EXPECT_FAILURE)
425 #define IUTEST_INFORM_PRED_FORMAT5(pred_formatter, v1, v2, v3, v4, v5) \
426 IUTEST_PRED_FORMAT5_(pred_formatter, v1, v2, v3, v4, v5, IUTEST_INFORM_FAILURE)
437 #define IUTEST_ASSUME_PRED_FORMAT5(pred_formatter, v1, v2, v3, v4, v5) \
438 IUTEST_PRED_FORMAT5_(pred_formatter, v1, v2, v3, v4, v5, IUTEST_ASSUME_FAILURE)
441 #ifndef IUTEST_NO_VARIADIC_MACROS
443 #if IUTEST_HAS_VARIADIC_TEMPLATES
451 #define IUTEST_ASSERT_PRED(pred, ...) \
452 IUTEST_PRED_(pred, IUTEST_ASSERT_FAILURE, __VA_ARGS__)
459 #define IUTEST_EXPECT_PRED(pred, ...) \
460 IUTEST_PRED_(pred, IUTEST_EXPECT_FAILURE, __VA_ARGS__)
467 #define IUTEST_INFORM_PRED(pred, ...) \
468 IUTEST_PRED_(pred, IUTEST_INFORM_FAILURE, __VA_ARGS__)
475 #define IUTEST_ASSUME_PRED(pred, ...) \
476 IUTEST_PRED_(pred, IUTEST_ASSUME_FAILURE, __VA_ARGS__)
486 #define IUTEST_ASSERT_PRED_FORMAT(pred_formatter, ...) \
487 IUTEST_PRED_FORMAT_(pred_formatter, IUTEST_ASSERT_FAILURE, __VA_ARGS__)
494 #define IUTEST_EXPECT_PRED_FORMAT(pred_formatter, ...) \
495 IUTEST_PRED_FORMAT_(pred_formatter, IUTEST_EXPECT_FAILURE, __VA_ARGS__)
502 #define IUTEST_INFORM_PRED_FORMAT(pred_formatter, ...) \
503 IUTEST_PRED_FORMAT_(pred_formatter, IUTEST_INFORM_FAILURE, __VA_ARGS__)
510 #define IUTEST_ASSUME_PRED_FORMAT(pred_formatter, ...) \
511 IUTEST_PRED_FORMAT_(pred_formatter, IUTEST_ASSUME_FAILURE, __VA_ARGS__)
524 #define IUTEST_ASSERT_THROW_PRED_FORMAT2(pred_formatter, statement, expected_exception, expected_exception_value) \
525 IUTEST_THROW_PRED_FORMAT2_(pred_formatter, statement, expected_exception, expected_exception_value, IUTEST_ASSERT_FAILURE)
534 #define IUTEST_EXPECT_THROW_PRED_FORMAT2(pred_formatter, statement, expected_exception, expected_exception_value) \
535 IUTEST_THROW_PRED_FORMAT2_(pred_formatter, statement, expected_exception, expected_exception_value, IUTEST_EXPECT_FAILURE)
544 #define IUTEST_INFORM_THROW_PRED_FORMAT2(pred_formatter, statement, expected_exception, expected_exception_value) \
545 IUTEST_THROW_PRED_FORMAT2_(pred_formatter, statement, expected_exception, expected_exception_value, IUTEST_INFORM_FAILURE)
554 #define IUTEST_ASSUME_THROW_PRED_FORMAT2(pred_formatter, statement, expected_exception, expected_exception_value) \
555 IUTEST_THROW_PRED_FORMAT2_(pred_formatter, statement, expected_exception, expected_exception_value, IUTEST_ASSUME_FAILURE)
563 #define IUTEST_PRED1_(pred, v1, on_failure) \
564 IUTEST_TEST_ASSERT_(::iutest::AssertPred1Helper(#pred, #v1, pred, v1), on_failure)
565 #define IUTEST_PRED_FORMAT1_(pred_formatter, v1, on_failure) \
566 IUTEST_TEST_ASSERT_(pred_formatter(#v1, v1), on_failure)
569 #define IUTEST_PRED2_(pred, v1, v2, on_failure) \
570 IUTEST_TEST_ASSERT_(::iutest::AssertPred2Helper(#pred, #v1, #v2, pred, v1, v2), on_failure)
571 #define IUTEST_PRED_FORMAT2_(pred_formatter, v1, v2, on_failure) \
572 IUTEST_TEST_ASSERT_(pred_formatter(#v1, #v2, v1, v2), on_failure)
575 #define IUTEST_PRED3_(pred, v1, v2, v3, on_failure) \
576 IUTEST_TEST_ASSERT_(::iutest::AssertPred3Helper(#pred, #v1, #v2, #v3, pred, v1, v2, v3), on_failure)
577 #define IUTEST_PRED_FORMAT3_(pred_formatter, v1, v2, v3, on_failure) \
578 IUTEST_TEST_ASSERT_(pred_formatter(#v1, #v2, #v3, v1, v2, v3), on_failure)
581 #define IUTEST_PRED4_(pred, v1, v2, v3, v4, on_failure) \
582 IUTEST_TEST_ASSERT_(::iutest::AssertPred4Helper(#pred, #v1, #v2, #v3, #v4, pred, v1, v2, v3, v4), on_failure)
583 #define IUTEST_PRED_FORMAT4_(pred_formatter, v1, v2, v3, v4, on_failure) \
584 IUTEST_TEST_ASSERT_(pred_formatter(#v1, #v2, #v3, #v4, v1, v2, v3, v4), on_failure)
587 #define IUTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure) \
588 IUTEST_TEST_ASSERT_(::iutest::AssertPred5Helper(#pred, #v1, #v2, #v3, #v4, #v5, pred, v1, v2, v3, v4, v5), on_failure)
589 #define IUTEST_PRED_FORMAT5_(pred_formatter, v1, v2, v3, v4, v5, on_failure) \
590 IUTEST_TEST_ASSERT_(pred_formatter(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), on_failure)
592 #ifndef IUTEST_NO_VARIADIC_MACROS
594 #if IUTEST_HAS_VARIADIC_TEMPLATES
596 #define IUTEST_PRED_(pred, on_failure, ...) \
597 IUTEST_TEST_ASSERT_(::iutest::AssertPredVariadicHelper(#pred, #__VA_ARGS__, pred, __VA_ARGS__), on_failure)
601 #define IUTEST_PRED_FORMAT_(pred_formatter, on_failure, ...) \
602 IUTEST_TEST_ASSERT_(pred_formatter(#__VA_ARGS__, __VA_ARGS__), on_failure)
606 #define IUTEST_THROW_PRED_FORMAT2_(pred_formatter, statement, expected_exception, expected_exception_value, on_failure) \
607 IUTEST_TEST_THROW_VALUE_(statement, expected_exception, expected_exception_value, on_failure, pred_formatter)
619 template<
typename PRED,
typename T1>
620 AssertionResult AssertPred1Helper(
const char* pred_str,
const char* expr1
621 , PRED pred, T1 val1)
627 return AssertionFailure() <<
"error: " << pred_str <<
"(" << expr1 <<
") evaluates to false, where "
628 <<
"\n" << expr1 <<
" : " << val1;
632 template<
typename PRED,
typename T1,
typename T2>
633 AssertionResult AssertPred2Helper(
const char* pred_str,
const char* expr1,
const char* expr2
634 , PRED pred, T1 val1, T2 val2)
636 if( (*pred)(val1, val2) )
641 << expr1 <<
", " << expr2
642 <<
") evaluates to false, where "
643 <<
"\n" << expr1 <<
" : " << val1
644 <<
"\n" << expr2 <<
" : " << val2;
648 template<
typename PRED,
typename T1,
typename T2,
typename T3>
649 AssertionResult AssertPred3Helper(
const char* pred_str
650 ,
const char* expr1,
const char* expr2,
const char* expr3
651 , PRED pred, T1 val1, T2 val2, T3 val3)
653 if( (*pred)(val1, val2, val3) )
658 << expr1 <<
", " << expr2 <<
", " << expr3
659 <<
") evaluates to false, where "
660 <<
"\n" << expr1 <<
" : " << val1
661 <<
"\n" << expr2 <<
" : " << val2
662 <<
"\n" << expr3 <<
" : " << val3;
666 template<
typename PRED,
typename T1,
typename T2,
typename T3,
typename T4>
667 AssertionResult AssertPred4Helper(
const char* pred_str
668 ,
const char* expr1,
const char* expr2,
const char* expr3,
const char* expr4
669 , PRED pred, T1 val1, T2 val2, T3 val3, T4 val4)
671 if( (*pred)(val1, val2, val3, val4) )
676 << expr1 <<
", " << expr2 <<
", " << expr3 <<
", " << expr4
677 <<
") evaluates to false, where "
678 <<
"\n" << expr1 <<
" : " << val1
679 <<
"\n" << expr2 <<
" : " << val2
680 <<
"\n" << expr3 <<
" : " << val3
681 <<
"\n" << expr4 <<
" : " << val4;
685 template<
typename PRED,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
686 AssertionResult AssertPred5Helper(
const char* pred_str
687 ,
const char* expr1,
const char* expr2,
const char* expr3,
const char* expr4,
const char* expr5
688 , PRED pred, T1 val1, T2 val2, T3 val3, T4 val4, T5 val5)
690 if( (*pred)(val1, val2, val3, val4, val5) )
695 << expr1 <<
", " << expr2 <<
", " << expr3 <<
", " << expr4 <<
", " << expr5
696 <<
") evaluates to false, where "
697 <<
"\n" << expr1 <<
" : " << val1
698 <<
"\n" << expr2 <<
" : " << val2
699 <<
"\n" << expr3 <<
" : " << val3
700 <<
"\n" << expr4 <<
" : " << val4
701 <<
"\n" << expr5 <<
" : " << val5;
704 #if IUTEST_HAS_VARIADIC_TEMPLATES
707 template<
typename PRED,
typename ...Args>
708 AssertionResult AssertPredVariadicHelper(
const char* pred_str,
const char* params
709 , PRED pred, Args... args)
711 if( (*pred)(args...) )
716 << params <<
") evaluates to false, where "
724 #endif // INCG_IRIS_IUTEST_PRED_HPP_ADF851F3_C89B_4CA4_B9A0_A2B2229945C6_