17 #ifndef INCG_IRIS_IUTEST_HPP_
18 #define INCG_IRIS_IUTEST_HPP_
36 #if defined(__AFX_H__)
55 #define IUTEST_TEST(testcase_, testname_) IUTEST_TEST_STRICT_(testcase_, testname_ \
56 , ::iutest::Test, ::iutest::internal::GetTestTypeId())
65 #define IUTEST(testcase_, testname_) IUTEST_TEST(testcase_, testname_)
74 #define IUTEST_F(testfixture_, testname_) IUTEST_TEST_F_(testfixture_, testname_)
76 #if IUTEST_HAS_PARAM_METHOD_TEST
85 #define IUTEST_PMZ(testcase_, testname_, method_, ...) IIUT_TEST_PMZ_(testcase_, testname_ \
86 , method_, ::iutest::Test \
87 , ::iutest::internal::GetTestTypeId(), __VA_ARGS__)
97 #define IUTEST_PMZ_F(testfixture_, testname_, method_, ...) IIUT_TEST_PMZ_(testfixture_, testname_ \
98 , method_, testfixture_ \
99 , ::iutest::internal::GetTypeId< testfixture_ >(), __VA_ARGS__)
103 #if IUTEST_HAS_TESTNAME_ALIAS
110 #define IUTEST_ALIAS_TESTNAME(testname_) IUTEST_ALIAS_TESTNAME_(testname_)
118 #define IUTEST_ALIAS_TESTNAME_F(testcasename_, testfixture_) IUTEST_ALIAS_TESTNAME_F_(testcasename_, testfixture_)
120 #if IUTEST_HAS_TESTNAME_ALIAS_JP
127 #define IUTEST_JAPANESE_NAME(testname_) IUTEST_ALIAS_TESTNAME(testname_)
135 #define IUTEST_JAPANESE_NAME_F(testcasename_, testfixture_) IUTEST_ALIAS_TESTNAME_F(testcasename_, testfixture_)
147 #define IUTEST_INIT(argc_, argv_) ::iutest::InitIrisUnitTest(argc_, argv_)
153 #define IUTEST_RUN_ALL_TESTS() ::iutest::UnitTestSource::GetInstance().Run()
166 #define IUTEST_SCOPED_TRACE(msg) IIUT_SCOPED_MESSAGE(msg)
173 #ifndef IUTEST_SUCCEED
174 # define IUTEST_SUCCEED() IIUT_SUCCEED()
183 # define IUTEST_FAIL() IIUT_FAIL()
191 #ifndef IUTEST_ADD_FAILURE
192 # define IUTEST_ADD_FAILURE() IIUT_ADD_FAILURE()
202 #ifndef IUTEST_ADD_FAILURE_AT
203 # define IUTEST_ADD_FAILURE_AT(file, line) IIUT_ADD_FAILURE_AT(file, line)
212 # define IUTEST_SKIP() IUTEST_TEST_SKIP()
239 #ifndef IUTEST_ASSERT
240 # ifndef IUTEST_NO_VARIADIC_MACROS
241 # define IUTEST_ASSERT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), true, IUTEST_ASSERT_FAILURE)
243 # define IUTEST_ASSERT(expression) IUTEST_TEST_EXPRESSION_(expression, true, IUTEST_ASSERT_FAILURE)
251 #ifndef IUTEST_ASSERT_NOT
252 # ifndef IUTEST_NO_VARIADIC_MACROS
253 # define IUTEST_ASSERT_NOT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), false, IUTEST_ASSERT_FAILURE)
255 # define IUTEST_ASSERT_NOT(expression) IUTEST_TEST_EXPRESSION_(expression, false, IUTEST_ASSERT_FAILURE)
259 #if IUTEST_HAS_MATCHERS
266 #ifndef IUTEST_ASSERT_THAT
267 # define IUTEST_ASSERT_THAT(actual, matcher) IUTEST_TEST_THAT(actual, matcher, IUTEST_ASSERT_FAILURE)
279 #ifndef IUTEST_ASSERT_EQ
280 # define IUTEST_ASSERT_EQ(expected, actual) IUTEST_TEST_EQ(expected, actual, IUTEST_ASSERT_FAILURE)
290 #ifndef IUTEST_ASSERT_ALMOST_EQ
291 # define IUTEST_ASSERT_ALMOST_EQ(expected, actual) IUTEST_TEST_ALMOST_EQ(expected, actual, IUTEST_ASSERT_FAILURE)
298 #ifndef IUTEST_ASSERT_NE
299 # define IUTEST_ASSERT_NE(v1, v2) IUTEST_TEST_NE(v1, v2, IUTEST_ASSERT_FAILURE)
306 #ifndef IUTEST_ASSERT_LE
307 # define IUTEST_ASSERT_LE(v1, v2) IUTEST_TEST_LE(v1, v2, IUTEST_ASSERT_FAILURE)
314 #ifndef IUTEST_ASSERT_LT
315 # define IUTEST_ASSERT_LT(v1, v2) IUTEST_TEST_LT(v1, v2, IUTEST_ASSERT_FAILURE)
322 #ifndef IUTEST_ASSERT_GE
323 # define IUTEST_ASSERT_GE(v1, v2) IUTEST_TEST_GE(v1, v2, IUTEST_ASSERT_FAILURE)
330 #ifndef IUTEST_ASSERT_GT
331 # define IUTEST_ASSERT_GT(v1, v2) IUTEST_TEST_GT(v1, v2, IUTEST_ASSERT_FAILURE)
339 #ifndef IUTEST_ASSERT_TRUE
340 # ifndef IUTEST_NO_VARIADIC_MACROS
341 # define IUTEST_ASSERT_TRUE(...) IUTEST_TEST_TRUE((__VA_ARGS__), #__VA_ARGS__, IUTEST_ASSERT_FAILURE)
343 # define IUTEST_ASSERT_TRUE(v) IUTEST_TEST_TRUE(v, #v, IUTEST_ASSERT_FAILURE)
351 #ifndef IUTEST_ASSERT_FALSE
352 # ifndef IUTEST_NO_VARIADIC_MACROS
353 # define IUTEST_ASSERT_FALSE(...) IUTEST_TEST_FALSE((__VA_ARGS__), #__VA_ARGS__, IUTEST_ASSERT_FAILURE)
355 # define IUTEST_ASSERT_FALSE(v) IUTEST_TEST_FALSE(v, #v, IUTEST_ASSERT_FAILURE)
364 #ifndef IUTEST_ASSERT_NULL
365 # ifndef IUTEST_NO_VARIADIC_MACROS
366 # define IUTEST_ASSERT_NULL(...) IUTEST_TEST_NULL((__VA_ARGS__), IUTEST_ASSERT_FAILURE)
368 # define IUTEST_ASSERT_NULL(v) IUTEST_TEST_NULL(v, IUTEST_ASSERT_FAILURE)
376 #ifndef IUTEST_ASSERT_NOTNULL
377 # ifndef IUTEST_NO_VARIADIC_MACROS
378 # define IUTEST_ASSERT_NOTNULL(...) IUTEST_TEST_NOTNULL((__VA_ARGS__), IUTEST_ASSERT_FAILURE)
380 # define IUTEST_ASSERT_NOTNULL(v) IUTEST_TEST_NOTNULL(v, IUTEST_ASSERT_FAILURE)
389 #ifndef IUTEST_ASSERT_SAME
390 # define IUTEST_ASSERT_SAME(v1, v2) IUTEST_TEST_SAME(v1, v2, IUTEST_ASSERT_FAILURE)
399 #ifndef IUTEST_ASSERT_FLOAT_EQ
400 # define IUTEST_ASSERT_FLOAT_EQ(expected, actual) IUTEST_TEST_FLOAT_EQ(expected, actual, IUTEST_ASSERT_FAILURE)
408 #ifndef IUTEST_ASSERT_DOUBLE_EQ
409 # define IUTEST_ASSERT_DOUBLE_EQ(expected, actual) IUTEST_TEST_DOUBLE_EQ(expected, actual, IUTEST_ASSERT_FAILURE)
412 #if IUTEST_HAS_LONG_DOUBLE
419 #ifndef IUTEST_ASSERT_LONG_DOUBLE_EQ
420 # define IUTEST_ASSERT_LONG_DOUBLE_EQ(expected, actual) \
421 IUTEST_TEST_LONG_DOUBLE_EQ(expected, actual, IUTEST_ASSERT_FAILURE)
432 #ifndef IUTEST_ASSERT_NEAR
433 # define IUTEST_ASSERT_NEAR(v1, v2, abs_v) IUTEST_TEST_NEAR(v1, v2, abs_v, IUTEST_ASSERT_FAILURE)
442 #ifndef IUTEST_ASSERT_STREQ
443 # define IUTEST_ASSERT_STREQ(expected_str, actual_str) \
444 IUTEST_TEST_STREQ(expected_str, actual_str, IUTEST_ASSERT_FAILURE)
451 #ifndef IUTEST_ASSERT_STRNE
452 # define IUTEST_ASSERT_STRNE(v1, v2) IUTEST_TEST_STRNE(v1, v2, IUTEST_ASSERT_FAILURE)
461 #ifndef IUTEST_ASSERT_STRCASEEQ
462 # define IUTEST_ASSERT_STRCASEEQ(expected_str, actual_str) \
463 IUTEST_TEST_STRCASEEQ(expected_str, actual_str, IUTEST_ASSERT_FAILURE)
470 #ifndef IUTEST_ASSERT_STRCASENE
471 # define IUTEST_ASSERT_STRCASENE(v1, v2) IUTEST_TEST_STRCASENE(v1, v2, IUTEST_ASSERT_FAILURE)
474 #if defined(IUTEST_OS_WINDOWS)
481 #ifndef IUTEST_ASSERT_HRESULT_SUCCEEDED
482 # ifndef IUTEST_NO_VARIADIC_MACROS
483 # define IUTEST_ASSERT_HRESULT_SUCCEEDED(...) IUTEST_TEST_HRESULT_SUCCEEDED((__VA_ARGS__), IUTEST_ASSERT_FAILURE)
485 # define IUTEST_ASSERT_HRESULT_SUCCEEDED(hr) IUTEST_TEST_HRESULT_SUCCEEDED(hr, IUTEST_ASSERT_FAILURE)
493 #ifndef IUTEST_ASSERT_HRESULT_FAILED
494 # ifndef IUTEST_NO_VARIADIC_MACROS
495 # define IUTEST_ASSERT_HRESULT_FAILED(...) IUTEST_TEST_HRESULT_FAILED((__VA_ARGS__), IUTEST_ASSERT_FAILURE)
497 # define IUTEST_ASSERT_HRESULT_FAILED(hr) IUTEST_TEST_HRESULT_FAILED(hr, IUTEST_ASSERT_FAILURE)
503 #if IUTEST_HAS_EXCEPTIONS
512 #ifndef IUTEST_ASSERT_THROW
513 # define IUTEST_ASSERT_THROW(statement, expected_exception) \
514 IUTEST_TEST_THROW_(statement, expected_exception, IUTEST_ASSERT_FAILURE)
525 #ifndef IUTEST_ASSERT_THROW_VALUE_EQ
526 # define IUTEST_ASSERT_THROW_VALUE_EQ(statement, expected_exception, expected_value) \
527 IUTEST_TEST_THROW_VALUE_EQ_(statement, expected_exception, expected_value, IUTEST_ASSERT_FAILURE)
538 #ifndef IUTEST_ASSERT_THROW_VALUE_NE
539 # define IUTEST_ASSERT_THROW_VALUE_NE(statement, expected_exception, v) \
540 IUTEST_TEST_THROW_VALUE_NE_(statement, expected_exception, v, IUTEST_ASSERT_FAILURE)
551 #ifndef IUTEST_ASSERT_THROW_VALUE_STREQ
552 # define IUTEST_ASSERT_THROW_VALUE_STREQ(statement, expected_exception, expected_str) \
553 IUTEST_TEST_THROW_VALUE_STREQ_(statement, expected_exception, expected_str, IUTEST_ASSERT_FAILURE)
564 #ifndef IUTEST_ASSERT_THROW_VALUE_STRCASEEQ
565 # define IUTEST_ASSERT_THROW_VALUE_STRCASEEQ(statement, expected_exception, expected_str) \
566 IUTEST_TEST_THROW_VALUE_STRCASEEQ_(statement, expected_exception, expected_str, IUTEST_ASSERT_FAILURE)
575 #ifndef IUTEST_ASSERT_ANY_THROW
576 # define IUTEST_ASSERT_ANY_THROW(statement) IUTEST_TEST_ANY_THROW_(statement, IUTEST_ASSERT_FAILURE)
585 #ifndef IUTEST_ASSERT_NO_THROW
586 # define IUTEST_ASSERT_NO_THROW(statement) IUTEST_TEST_NO_THROW_(statement, IUTEST_ASSERT_FAILURE)
597 #ifndef IUTEST_ASSERT_NO_FAILURE
598 # define IUTEST_ASSERT_NO_FAILURE(statement) IUTEST_TEST_NO_FAILURE_(statement, IUTEST_ASSERT_FAILURE)
607 #ifndef IUTEST_ASSERT_NO_FATAL_FAILURE
608 # define IUTEST_ASSERT_NO_FATAL_FAILURE(statement) IUTEST_TEST_NO_FATAL_FAILURE_(statement, IUTEST_ASSERT_FAILURE)
616 #ifndef IUTEST_ASSERT_FAIL
617 # define IUTEST_ASSERT_FAIL() IIUT_FAIL()
640 #ifndef IUTEST_EXPECT
641 # ifndef IUTEST_NO_VARIADIC_MACROS
642 # define IUTEST_EXPECT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), true, IUTEST_EXPECT_FAILURE)
644 # define IUTEST_EXPECT(expression) IUTEST_TEST_EXPRESSION_(expression, true, IUTEST_EXPECT_FAILURE)
652 #ifndef IUTEST_EXPECT_NOT
653 # ifndef IUTEST_NO_VARIADIC_MACROS
654 # define IUTEST_EXPECT_NOT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), false, IUTEST_EXPECT_FAILURE)
656 # define IUTEST_EXPECT_NOT(expression) IUTEST_TEST_EXPRESSION_(expression, false, IUTEST_EXPECT_FAILURE)
660 #if IUTEST_HAS_MATCHERS
667 #ifndef IUTEST_EXPECT_THAT
668 # define IUTEST_EXPECT_THAT(actual, matcher) IUTEST_TEST_THAT(actual, matcher, IUTEST_EXPECT_FAILURE)
679 #ifndef IUTEST_EXPECT_EQ
680 # define IUTEST_EXPECT_EQ(expected, actual) IUTEST_TEST_EQ(expected, actual, IUTEST_EXPECT_FAILURE)
690 #ifndef IUTEST_EXPECT_ALMOST_EQ
691 # define IUTEST_EXPECT_ALMOST_EQ(expected, actual) IUTEST_TEST_ALMOST_EQ(expected, actual, IUTEST_EXPECT_FAILURE)
698 #ifndef IUTEST_EXPECT_NE
699 # define IUTEST_EXPECT_NE(v1, v2) IUTEST_TEST_NE(v1, v2, IUTEST_EXPECT_FAILURE)
706 #ifndef IUTEST_EXPECT_LE
707 # define IUTEST_EXPECT_LE(v1, v2) IUTEST_TEST_LE(v1, v2, IUTEST_EXPECT_FAILURE)
714 #ifndef IUTEST_EXPECT_LT
715 # define IUTEST_EXPECT_LT(v1, v2) IUTEST_TEST_LT(v1, v2, IUTEST_EXPECT_FAILURE)
722 #ifndef IUTEST_EXPECT_GE
723 # define IUTEST_EXPECT_GE(v1, v2) IUTEST_TEST_GE(v1, v2, IUTEST_EXPECT_FAILURE)
730 #ifndef IUTEST_EXPECT_GT
731 # define IUTEST_EXPECT_GT(v1, v2) IUTEST_TEST_GT(v1, v2, IUTEST_EXPECT_FAILURE)
739 #ifndef IUTEST_EXPECT_TRUE
740 # ifndef IUTEST_NO_VARIADIC_MACROS
741 # define IUTEST_EXPECT_TRUE(...) IUTEST_TEST_TRUE((__VA_ARGS__), #__VA_ARGS__, IUTEST_EXPECT_FAILURE)
743 # define IUTEST_EXPECT_TRUE(v) IUTEST_TEST_TRUE(v, #v, IUTEST_EXPECT_FAILURE)
751 #ifndef IUTEST_EXPECT_FALSE
752 # ifndef IUTEST_NO_VARIADIC_MACROS
753 # define IUTEST_EXPECT_FALSE(...) IUTEST_TEST_FALSE((__VA_ARGS__), #__VA_ARGS__, IUTEST_EXPECT_FAILURE)
755 # define IUTEST_EXPECT_FALSE(v) IUTEST_TEST_FALSE(v, #v, IUTEST_EXPECT_FAILURE)
764 #ifndef IUTEST_EXPECT_NULL
765 # ifndef IUTEST_NO_VARIADIC_MACROS
766 # define IUTEST_EXPECT_NULL(...) IUTEST_TEST_NULL((__VA_ARGS__), IUTEST_EXPECT_FAILURE)
768 # define IUTEST_EXPECT_NULL(v) IUTEST_TEST_NULL(v, IUTEST_EXPECT_FAILURE)
776 #ifndef IUTEST_EXPECT_NOTNULL
777 # ifndef IUTEST_NO_VARIADIC_MACROS
778 # define IUTEST_EXPECT_NOTNULL(...) IUTEST_TEST_NOTNULL((__VA_ARGS__), IUTEST_EXPECT_FAILURE)
780 # define IUTEST_EXPECT_NOTNULL(v) IUTEST_TEST_NOTNULL(v, IUTEST_EXPECT_FAILURE)
789 #ifndef IUTEST_EXPECT_SAME
790 # define IUTEST_EXPECT_SAME(v1, v2) IUTEST_TEST_SAME(v1, v2, IUTEST_EXPECT_FAILURE)
799 #ifndef IUTEST_EXPECT_FLOAT_EQ
800 # define IUTEST_EXPECT_FLOAT_EQ(expected, actual) IUTEST_TEST_FLOAT_EQ(expected, actual, IUTEST_EXPECT_FAILURE)
808 #ifndef IUTEST_EXPECT_DOUBLE_EQ
809 # define IUTEST_EXPECT_DOUBLE_EQ(expected, actual) IUTEST_TEST_DOUBLE_EQ(expected, actual, IUTEST_EXPECT_FAILURE)
812 #if IUTEST_HAS_LONG_DOUBLE
819 #ifndef IUTEST_EXPECT_LONG_DOUBLE_EQ
820 # define IUTEST_EXPECT_LONG_DOUBLE_EQ(expected, actual) \
821 IUTEST_TEST_LONG_DOUBLE_EQ(expected, actual, IUTEST_EXPECT_FAILURE)
832 #ifndef IUTEST_EXPECT_NEAR
833 # define IUTEST_EXPECT_NEAR(v1, v2, abs_v) IUTEST_TEST_NEAR(v1, v2, abs_v, IUTEST_EXPECT_FAILURE)
842 #ifndef IUTEST_EXPECT_STREQ
843 # define IUTEST_EXPECT_STREQ(expected_str, actual_str) \
844 IUTEST_TEST_STREQ(expected_str, actual_str, IUTEST_EXPECT_FAILURE)
851 #ifndef IUTEST_EXPECT_STRNE
852 # define IUTEST_EXPECT_STRNE(v1, v2) IUTEST_TEST_STRNE(v1, v2, IUTEST_EXPECT_FAILURE)
861 #ifndef IUTEST_EXPECT_STRCASEEQ
862 # define IUTEST_EXPECT_STRCASEEQ(expected_str, actual_str) \
863 IUTEST_TEST_STRCASEEQ(expected_str, actual_str, IUTEST_EXPECT_FAILURE)
870 #ifndef IUTEST_EXPECT_STRCASENE
871 # define IUTEST_EXPECT_STRCASENE(v1, v2) IUTEST_TEST_STRCASENE(v1, v2, IUTEST_EXPECT_FAILURE)
874 #if defined(IUTEST_OS_WINDOWS)
881 #ifndef IUTEST_EXPECT_HRESULT_SUCCEEDED
882 # ifndef IUTEST_NO_VARIADIC_MACROS
883 # define IUTEST_EXPECT_HRESULT_SUCCEEDED(...) IUTEST_TEST_HRESULT_SUCCEEDED((__VA_ARGS__), IUTEST_EXPECT_FAILURE)
885 # define IUTEST_EXPECT_HRESULT_SUCCEEDED(hr) IUTEST_TEST_HRESULT_SUCCEEDED(hr, IUTEST_EXPECT_FAILURE)
893 #ifndef IUTEST_EXPECT_HRESULT_FAILED
894 # ifndef IUTEST_NO_VARIADIC_MACROS
895 # define IUTEST_EXPECT_HRESULT_FAILED(...) IUTEST_TEST_HRESULT_FAILED((__VA_ARGS__), IUTEST_EXPECT_FAILURE)
897 # define IUTEST_EXPECT_HRESULT_FAILED(hr) IUTEST_TEST_HRESULT_FAILED(hr, IUTEST_EXPECT_FAILURE)
903 #if IUTEST_HAS_EXCEPTIONS
912 #ifndef IUTEST_EXPECT_THROW
913 # define IUTEST_EXPECT_THROW(statement, expected_exception) \
914 IUTEST_TEST_THROW_(statement, expected_exception, IUTEST_EXPECT_FAILURE)
925 #ifndef IUTEST_EXPECT_THROW_VALUE_EQ
926 # define IUTEST_EXPECT_THROW_VALUE_EQ(statement, expected_exception, expected_value) \
927 IUTEST_TEST_THROW_VALUE_EQ_(statement, expected_exception, expected_value, IUTEST_EXPECT_FAILURE)
938 #ifndef IUTEST_EXPECT_THROW_VALUE_NE
939 # define IUTEST_EXPECT_THROW_VALUE_NE(statement, expected_exception, v) \
940 IUTEST_TEST_THROW_VALUE_NE_(statement, expected_exception, v, IUTEST_EXPECT_FAILURE)
951 #ifndef IUTEST_EXPECT_THROW_VALUE_STREQ
952 # define IUTEST_EXPECT_THROW_VALUE_STREQ(statement, expected_exception, expected_str) \
953 IUTEST_TEST_THROW_VALUE_STREQ_(statement, expected_exception, expected_str, IUTEST_EXPECT_FAILURE)
964 #ifndef IUTEST_EXPECT_THROW_VALUE_STRCASEEQ
965 # define IUTEST_EXPECT_THROW_VALUE_STRCASEEQ(statement, expected_exception, expected_str) \
966 IUTEST_TEST_THROW_VALUE_STRCASEEQ_(statement, expected_exception, expected_str, IUTEST_EXPECT_FAILURE)
975 #ifndef IUTEST_EXPECT_ANY_THROW
976 # define IUTEST_EXPECT_ANY_THROW(statement) IUTEST_TEST_ANY_THROW_(statement, IUTEST_EXPECT_FAILURE)
985 #ifndef IUTEST_EXPECT_NO_THROW
986 # define IUTEST_EXPECT_NO_THROW(statement) IUTEST_TEST_NO_THROW_(statement, IUTEST_EXPECT_FAILURE)
997 #ifndef IUTEST_EXPECT_NO_FAILURE
998 # define IUTEST_EXPECT_NO_FAILURE(statement) IUTEST_TEST_NO_FAILURE_(statement, IUTEST_EXPECT_FAILURE)
1007 #ifndef IUTEST_EXPECT_NO_FATAL_FAILURE
1008 # define IUTEST_EXPECT_NO_FATAL_FAILURE(statement) IUTEST_TEST_NO_FATAL_FAILURE_(statement, IUTEST_EXPECT_FAILURE)
1016 #ifndef IUTEST_EXPECT_FAIL
1017 # define IUTEST_EXPECT_FAIL() IIUT_ADD_FAILURE()
1025 #ifndef IUTEST_EXPECT_FAIL_AT
1026 # define IUTEST_EXPECT_FAIL_AT(file, line) IIUT_ADD_FAILURE_AT(file, line)
1050 #ifndef IUTEST_INFORM
1051 # ifndef IUTEST_NO_VARIADIC_MACROS
1052 # define IUTEST_INFORM(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), true, IUTEST_INFORM_FAILURE)
1054 # define IUTEST_INFORM(expression) IUTEST_TEST_EXPRESSION_(expression, true, IUTEST_INFORM_FAILURE)
1062 #ifndef IUTEST_INFORM_NOT
1063 # ifndef IUTEST_NO_VARIADIC_MACROS
1064 # define IUTEST_INFORM_NOT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), false, IUTEST_INFORM_FAILURE)
1066 # define IUTEST_INFORM_NOT(expression) IUTEST_TEST_EXPRESSION_(expression, false, IUTEST_INFORM_FAILURE)
1070 #if IUTEST_HAS_MATCHERS
1077 #ifndef IUTEST_INFORM_THAT
1078 # define IUTEST_INFORM_THAT(actual, matcher) IUTEST_TEST_THAT(actual, matcher, IUTEST_INFORM_FAILURE)
1089 #ifndef IUTEST_INFORM_EQ
1090 # define IUTEST_INFORM_EQ(expected, actual) IUTEST_TEST_EQ(expected, actual, IUTEST_INFORM_FAILURE)
1100 #ifndef IUTEST_INFORM_ALMOST_EQ
1101 # define IUTEST_INFORM_ALMOST_EQ(expected, actual) IUTEST_TEST_ALMOST_EQ(expected, actual, IUTEST_INFORM_FAILURE)
1108 #ifndef IUTEST_INFORM_NE
1109 # define IUTEST_INFORM_NE(v1, v2) IUTEST_TEST_NE(v1, v2, IUTEST_INFORM_FAILURE)
1116 #ifndef IUTEST_INFORM_LE
1117 # define IUTEST_INFORM_LE(v1, v2) IUTEST_TEST_LE(v1, v2, IUTEST_INFORM_FAILURE)
1124 #ifndef IUTEST_INFORM_LT
1125 # define IUTEST_INFORM_LT(v1, v2) IUTEST_TEST_LT(v1, v2, IUTEST_INFORM_FAILURE)
1132 #ifndef IUTEST_INFORM_GE
1133 # define IUTEST_INFORM_GE(v1, v2) IUTEST_TEST_GE(v1, v2, IUTEST_INFORM_FAILURE)
1140 #ifndef IUTEST_INFORM_GT
1141 # define IUTEST_INFORM_GT(v1, v2) IUTEST_TEST_GT(v1, v2, IUTEST_INFORM_FAILURE)
1149 #ifndef IUTEST_INFORM_TRUE
1150 # ifndef IUTEST_NO_VARIADIC_MACROS
1151 # define IUTEST_INFORM_TRUE(...) IUTEST_TEST_TRUE((__VA_ARGS__), #__VA_ARGS__, IUTEST_INFORM_FAILURE)
1153 # define IUTEST_INFORM_TRUE(v) IUTEST_TEST_TRUE(v, #v, IUTEST_INFORM_FAILURE)
1161 #ifndef IUTEST_INFORM_FALSE
1162 # ifndef IUTEST_NO_VARIADIC_MACROS
1163 # define IUTEST_INFORM_FALSE(...) IUTEST_TEST_FALSE((__VA_ARGS__), #__VA_ARGS__, IUTEST_INFORM_FAILURE)
1165 # define IUTEST_INFORM_FALSE(v) IUTEST_TEST_FALSE(v, #v, IUTEST_INFORM_FAILURE)
1174 #ifndef IUTEST_INFORM_NULL
1175 # ifndef IUTEST_NO_VARIADIC_MACROS
1176 # define IUTEST_INFORM_NULL(...) IUTEST_TEST_NULL((__VA_ARGS__), IUTEST_INFORM_FAILURE)
1178 # define IUTEST_INFORM_NULL(v) IUTEST_TEST_NULL(v, IUTEST_INFORM_FAILURE)
1186 #ifndef IUTEST_INFORM_NOTNULL
1187 # ifndef IUTEST_NO_VARIADIC_MACROS
1188 # define IUTEST_INFORM_NOTNULL(...) IUTEST_TEST_NOTNULL((__VA_ARGS__), IUTEST_INFORM_FAILURE)
1190 # define IUTEST_INFORM_NOTNULL(v) IUTEST_TEST_NOTNULL(v, IUTEST_INFORM_FAILURE)
1199 #ifndef IUTEST_INFORM_SAME
1200 # define IUTEST_INFORM_SAME(v1, v2) IUTEST_TEST_SAME(v1, v2, IUTEST_INFORM_FAILURE)
1209 #ifndef IUTEST_INFORM_FLOAT_EQ
1210 # define IUTEST_INFORM_FLOAT_EQ(expected, actual) IUTEST_TEST_FLOAT_EQ(expected, actual, IUTEST_INFORM_FAILURE)
1218 #ifndef IUTEST_INFORM_DOUBLE_EQ
1219 # define IUTEST_INFORM_DOUBLE_EQ(expected, actual) IUTEST_TEST_DOUBLE_EQ(expected, actual, IUTEST_INFORM_FAILURE)
1222 #if IUTEST_HAS_LONG_DOUBLE
1229 #ifndef IUTEST_INFORM_LONG_DOUBLE_EQ
1230 # define IUTEST_INFORM_LONG_DOUBLE_EQ(expected, actual) \
1231 IUTEST_TEST_LONG_DOUBLE_EQ(expected, actual, IUTEST_INFORM_FAILURE)
1242 #ifndef IUTEST_INFORM_NEAR
1243 # define IUTEST_INFORM_NEAR(v1, v2, abs_v) IUTEST_TEST_NEAR(v1, v2, abs_v, IUTEST_INFORM_FAILURE)
1252 #ifndef IUTEST_INFORM_STREQ
1253 # define IUTEST_INFORM_STREQ(expected_str, actual_str) \
1254 IUTEST_TEST_STREQ(expected_str, actual_str, IUTEST_INFORM_FAILURE)
1261 #ifndef IUTEST_INFORM_STRNE
1262 # define IUTEST_INFORM_STRNE(v1, v2) IUTEST_TEST_STRNE(v1, v2, IUTEST_INFORM_FAILURE)
1271 #ifndef IUTEST_INFORM_STRCASEEQ
1272 # define IUTEST_INFORM_STRCASEEQ(expected_str, actual_str) \
1273 IUTEST_TEST_STRCASEEQ(expected_str, actual_str, IUTEST_INFORM_FAILURE)
1280 #ifndef IUTEST_INFORM_STRCASENE
1281 # define IUTEST_INFORM_STRCASENE(v1, v2) IUTEST_TEST_STRCASENE(v1, v2, IUTEST_INFORM_FAILURE)
1284 #if defined(IUTEST_OS_WINDOWS)
1291 #ifndef IUTEST_INFORM_HRESULT_SUCCEEDED
1292 # ifndef IUTEST_NO_VARIADIC_MACROS
1293 # define IUTEST_INFORM_HRESULT_SUCCEEDED(...) IUTEST_TEST_HRESULT_SUCCEEDED((__VA_ARGS__), IUTEST_INFORM_FAILURE)
1295 # define IUTEST_INFORM_HRESULT_SUCCEEDED(hr) IUTEST_TEST_HRESULT_SUCCEEDED(hr, IUTEST_INFORM_FAILURE)
1303 #ifndef IUTEST_INFORM_HRESULT_FAILED
1304 # ifndef IUTEST_NO_VARIADIC_MACROS
1305 # define IUTEST_INFORM_HRESULT_FAILED(...) IUTEST_TEST_HRESULT_FAILED((__VA_ARGS__), IUTEST_INFORM_FAILURE)
1307 # define IUTEST_INFORM_HRESULT_FAILED(hr) IUTEST_TEST_HRESULT_FAILED(hr, IUTEST_INFORM_FAILURE)
1313 #if IUTEST_HAS_EXCEPTIONS
1322 #ifndef IUTEST_INFORM_THROW
1323 # define IUTEST_INFORM_THROW(statement, expected_exception) \
1324 IUTEST_TEST_THROW_(statement, expected_exception, IUTEST_INFORM_FAILURE)
1335 #ifndef IUTEST_INFORM_THROW_VALUE_EQ
1336 # define IUTEST_INFORM_THROW_VALUE_EQ(statement, expected_exception, expected_value) \
1337 IUTEST_TEST_THROW_VALUE_EQ_(statement, expected_exception, expected_value, IUTEST_INFORM_FAILURE)
1348 #ifndef IUTEST_INFORM_THROW_VALUE_NE
1349 # define IUTEST_INFORM_THROW_VALUE_NE(statement, expected_exception, v) \
1350 IUTEST_TEST_THROW_VALUE_NE_(statement, expected_exception, v, IUTEST_INFORM_FAILURE)
1361 #ifndef IUTEST_INFORM_THROW_VALUE_STREQ
1362 # define IUTEST_INFORM_THROW_VALUE_STREQ(statement, expected_exception, expected_str) \
1363 IUTEST_TEST_THROW_VALUE_STREQ_(statement, expected_exception, expected_str, IUTEST_INFORM_FAILURE)
1374 #ifndef IUTEST_INFORM_THROW_VALUE_STRCASEEQ
1375 # define IUTEST_INFORM_THROW_VALUE_STRCASEEQ(statement, expected_exception, expected_str) \
1376 IUTEST_TEST_THROW_VALUE_STRCASEEQ_(statement, expected_exception, expected_str, IUTEST_INFORM_FAILURE)
1385 #ifndef IUTEST_INFORM_ANY_THROW
1386 # define IUTEST_INFORM_ANY_THROW(statement) IUTEST_TEST_ANY_THROW_(statement, IUTEST_INFORM_FAILURE)
1395 #ifndef IUTEST_INFORM_NO_THROW
1396 # define IUTEST_INFORM_NO_THROW(statement) IUTEST_TEST_NO_THROW_(statement, IUTEST_INFORM_FAILURE)
1407 #ifndef IUTEST_INFORM_NO_FAILURE
1408 # define IUTEST_INFORM_NO_FAILURE(statement) IUTEST_TEST_NO_FAILURE_(statement, IUTEST_INFORM_FAILURE)
1417 #ifndef IUTEST_INFORM_NO_FATAL_FAILURE
1418 # define IUTEST_INFORM_NO_FATAL_FAILURE(statement) IUTEST_TEST_NO_FATAL_FAILURE_(statement, IUTEST_INFORM_FAILURE)
1441 #ifndef IUTEST_ASSUME
1442 # ifndef IUTEST_NO_VARIADIC_MACROS
1443 # define IUTEST_ASSUME(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), true, IUTEST_ASSUME_FAILURE)
1445 # define IUTEST_ASSUME(expression) IUTEST_TEST_EXPRESSION_(expression, true, IUTEST_ASSUME_FAILURE)
1453 #ifndef IUTEST_ASSUME_NOT
1454 # ifndef IUTEST_NO_VARIADIC_MACROS
1455 # define IUTEST_ASSUME_NOT(...) IUTEST_TEST_EXPRESSION_((__VA_ARGS__), false, IUTEST_ASSUME_FAILURE)
1457 # define IUTEST_ASSUME_NOT(expression) IUTEST_TEST_EXPRESSION_(expression, false, IUTEST_ASSUME_FAILURE)
1461 #if IUTEST_HAS_MATCHERS
1469 #ifndef IUTEST_ASSUME_THAT
1470 # define IUTEST_ASSUME_THAT(actual, matcher) IUTEST_TEST_THAT(actual, matcher, IUTEST_ASSUME_FAILURE)
1481 #ifndef IUTEST_ASSUME_EQ
1482 # define IUTEST_ASSUME_EQ(expected, actual) IUTEST_TEST_EQ(expected, actual, IUTEST_ASSUME_FAILURE)
1492 #ifndef IUTEST_ASSUME_ALMOST_EQ
1493 # define IUTEST_ASSUME_ALMOST_EQ(expected, actual) IUTEST_TEST_ALMOST_EQ(expected, actual, IUTEST_ASSUME_FAILURE)
1500 #ifndef IUTEST_ASSUME_NE
1501 # define IUTEST_ASSUME_NE(v1, v2) IUTEST_TEST_NE(v1, v2, IUTEST_ASSUME_FAILURE)
1508 #ifndef IUTEST_ASSUME_LE
1509 # define IUTEST_ASSUME_LE(v1, v2) IUTEST_TEST_LE(v1, v2, IUTEST_ASSUME_FAILURE)
1516 #ifndef IUTEST_ASSUME_LT
1517 # define IUTEST_ASSUME_LT(v1, v2) IUTEST_TEST_LT(v1, v2, IUTEST_ASSUME_FAILURE)
1524 #ifndef IUTEST_ASSUME_GE
1525 # define IUTEST_ASSUME_GE(v1, v2) IUTEST_TEST_GE(v1, v2, IUTEST_ASSUME_FAILURE)
1532 #ifndef IUTEST_ASSUME_GT
1533 # define IUTEST_ASSUME_GT(v1, v2) IUTEST_TEST_GT(v1, v2, IUTEST_ASSUME_FAILURE)
1541 #ifndef IUTEST_ASSUME_TRUE
1542 # ifndef IUTEST_NO_VARIADIC_MACROS
1543 # define IUTEST_ASSUME_TRUE(...) IUTEST_TEST_TRUE((__VA_ARGS__), #__VA_ARGS__, IUTEST_ASSUME_FAILURE)
1545 # define IUTEST_ASSUME_TRUE(v) IUTEST_TEST_TRUE(v, #v, IUTEST_ASSUME_FAILURE)
1553 #ifndef IUTEST_ASSUME_FALSE
1554 # ifndef IUTEST_NO_VARIADIC_MACROS
1555 # define IUTEST_ASSUME_FALSE(...) IUTEST_TEST_FALSE((__VA_ARGS__), #__VA_ARGS__, IUTEST_ASSUME_FAILURE)
1557 # define IUTEST_ASSUME_FALSE(v) IUTEST_TEST_FALSE(v, #v, IUTEST_ASSUME_FAILURE)
1566 #ifndef IUTEST_ASSUME_NULL
1567 # ifndef IUTEST_NO_VARIADIC_MACROS
1568 # define IUTEST_ASSUME_NULL(...) IUTEST_TEST_NULL((__VA_ARGS__), IUTEST_ASSUME_FAILURE)
1570 # define IUTEST_ASSUME_NULL(v) IUTEST_TEST_NULL(v, IUTEST_ASSUME_FAILURE)
1578 #ifndef IUTEST_ASSUME_NOTNULL
1579 # ifndef IUTEST_NO_VARIADIC_MACROS
1580 # define IUTEST_ASSUME_NOTNULL(...) IUTEST_TEST_NOTNULL((__VA_ARGS__), IUTEST_ASSUME_FAILURE)
1582 # define IUTEST_ASSUME_NOTNULL(v) IUTEST_TEST_NOTNULL(v, IUTEST_ASSUME_FAILURE)
1591 #ifndef IUTEST_ASSUME_SAME
1592 # define IUTEST_ASSUME_SAME(v1, v2) IUTEST_TEST_SAME(v1, v2, IUTEST_ASSUME_FAILURE)
1601 #ifndef IUTEST_ASSUME_FLOAT_EQ
1602 # define IUTEST_ASSUME_FLOAT_EQ(expected, actual) IUTEST_TEST_FLOAT_EQ(expected, actual, IUTEST_ASSUME_FAILURE)
1610 #ifndef IUTEST_ASSUME_DOUBLE_EQ
1611 # define IUTEST_ASSUME_DOUBLE_EQ(expected, actual) IUTEST_TEST_DOUBLE_EQ(expected, actual, IUTEST_ASSUME_FAILURE)
1614 #if IUTEST_HAS_LONG_DOUBLE
1621 #ifndef IUTEST_ASSUME_LONG_DOUBLE_EQ
1622 # define IUTEST_ASSUME_LONG_DOUBLE_EQ(expected, actual) \
1623 IUTEST_TEST_LONG_DOUBLE_EQ(expected, actual, IUTEST_ASSUME_FAILURE)
1634 #ifndef IUTEST_ASSUME_NEAR
1635 # define IUTEST_ASSUME_NEAR(v1, v2, abs_v) IUTEST_TEST_NEAR(v1, v2, abs_v, IUTEST_ASSUME_FAILURE)
1644 #ifndef IUTEST_ASSUME_STREQ
1645 # define IUTEST_ASSUME_STREQ(expected_str, actual_str) \
1646 IUTEST_TEST_STREQ(expected_str, actual_str, IUTEST_ASSUME_FAILURE)
1653 #ifndef IUTEST_ASSUME_STRNE
1654 # define IUTEST_ASSUME_STRNE(v1, v2) IUTEST_TEST_STRNE(v1, v2, IUTEST_ASSUME_FAILURE)
1663 #ifndef IUTEST_ASSUME_STRCASEEQ
1664 # define IUTEST_ASSUME_STRCASEEQ(expected_str, actual_str) \
1665 IUTEST_TEST_STRCASEEQ(expected_str, actual_str, IUTEST_ASSUME_FAILURE)
1672 #ifndef IUTEST_ASSUME_STRCASENE
1673 # define IUTEST_ASSUME_STRCASENE(v1, v2) IUTEST_TEST_STRCASENE(v1, v2, IUTEST_ASSUME_FAILURE)
1676 #if defined(IUTEST_OS_WINDOWS)
1683 #ifndef IUTEST_ASSUME_HRESULT_SUCCEEDED
1684 # ifndef IUTEST_NO_VARIADIC_MACROS
1685 # define IUTEST_ASSUME_HRESULT_SUCCEEDED(...) IUTEST_TEST_HRESULT_SUCCEEDED((__VA_ARGS__), IUTEST_ASSUME_FAILURE)
1687 # define IUTEST_ASSUME_HRESULT_SUCCEEDED(hr) IUTEST_TEST_HRESULT_SUCCEEDED(hr, IUTEST_ASSUME_FAILURE)
1695 #ifndef IUTEST_ASSUME_HRESULT_FAILED
1696 # ifndef IUTEST_NO_VARIADIC_MACROS
1697 # define IUTEST_ASSUME_HRESULT_FAILED(...) IUTEST_TEST_HRESULT_FAILED((__VA_ARGS__), IUTEST_ASSUME_FAILURE)
1699 # define IUTEST_ASSUME_HRESULT_FAILED(hr) IUTEST_TEST_HRESULT_FAILED(hr, IUTEST_ASSUME_FAILURE)
1705 #if IUTEST_HAS_EXCEPTIONS
1714 #ifndef IUTEST_ASSUME_THROW
1715 # define IUTEST_ASSUME_THROW(statement, expected_exception) \
1716 IUTEST_TEST_THROW_(statement, expected_exception, IUTEST_ASSUME_FAILURE)
1727 #ifndef IUTEST_ASSUME_THROW_VALUE_EQ
1728 # define IUTEST_ASSUME_THROW_VALUE_EQ(statement, expected_exception, expected_value) \
1729 IUTEST_TEST_THROW_VALUE_EQ_(statement, expected_exception, expected_value, IUTEST_ASSUME_FAILURE)
1740 #ifndef IUTEST_ASSUME_THROW_VALUE_NE
1741 # define IUTEST_ASSUME_THROW_VALUE_NE(statement, expected_exception, v) \
1742 IUTEST_TEST_THROW_VALUE_NE_(statement, expected_exception, v, IUTEST_ASSUME_FAILURE)
1753 #ifndef IUTEST_ASSUME_THROW_VALUE_STREQ
1754 # define IUTEST_ASSUME_THROW_VALUE_STREQ(statement, expected_exception, expected_str) \
1755 IUTEST_TEST_THROW_VALUE_STREQ_(statement, expected_exception, expected_str, IUTEST_ASSUME_FAILURE)
1766 #ifndef IUTEST_ASSUME_THROW_VALUE_STRCASEEQ
1767 # define IUTEST_ASSUME_THROW_VALUE_STRCASEEQ(statement, expected_exception, expected_str) \
1768 IUTEST_TEST_THROW_VALUE_STRCASEEQ_(statement, expected_exception, expected_str, IUTEST_ASSUME_FAILURE)
1777 #ifndef IUTEST_ASSUME_ANY_THROW
1778 # define IUTEST_ASSUME_ANY_THROW(statement) IUTEST_TEST_ANY_THROW_(statement, IUTEST_ASSUME_FAILURE)
1787 #ifndef IUTEST_ASSUME_NO_THROW
1788 # define IUTEST_ASSUME_NO_THROW(statement) IUTEST_TEST_NO_THROW_(statement, IUTEST_ASSUME_FAILURE)
1799 #ifndef IUTEST_ASSUME_NO_FAILURE
1800 # define IUTEST_ASSUME_NO_FAILURE(statement) IUTEST_TEST_NO_FAILURE_(statement, IUTEST_ASSUME_FAILURE)
1809 #ifndef IUTEST_ASSUME_NO_FATAL_FAILURE
1810 # define IUTEST_ASSUME_NO_FATAL_FAILURE(statement) IUTEST_TEST_NO_FATAL_FAILURE_(statement, IUTEST_ASSUME_FAILURE)
1824 class UnitTestSource
1833 #if defined(_IUTEST_DEBUG)
1834 detail::iuDebugInitialize();
1836 IUTEST_UNUSED_VAR(&detail::iuDebugInitialize);
1837 IUTEST_UNUSED_VAR(&detail::iuDebugBreakAlloc);
1846 TestEnv::event_listeners().set_default_result_printer(NULL);
1847 TestEnv::event_listeners().set_default_xml_generator(NULL);
1856 UnitTest::instance().Initialize();
1864 SetUpDefaultListener();
1865 return UnitTest::instance().Run();
1869 void SetUpDefaultListener()
1871 if( TestEnv::has_output_option() )
1875 #if defined(__WANDBOX__)
1876 if( StderrXmlGeneratorListener::SetUp() )
1880 if( StderrJunitXmlGeneratorListener::SetUp() )
1885 if( DefaultXmlGeneratorListener::SetUp() )
1889 if( JunitXmlGeneratorListener::SetUp() )
1894 IUTEST_LOG_(WARNING) <<
"unrecognized output format \"" << TestEnv::get_output_option() <<
"\" ignored.";
1895 }
while( detail::AlwaysFalse() );
1898 #if IUTEST_HAS_STREAM_RESULT
1899 StreamResultListener::SetUp();
1909 template<
typename T>
1912 UnitTestSource::GetInstance().Initialize();
1913 TestEnv::ParseCommandLine(pargc, argv);
1928 inline void IUTEST_ATTRIBUTE_UNUSED_
InitIrisUnitTest() { detail::InitIrisUnitTest<char**>(NULL, NULL); }
1930 #if IUTEST_HAS_NULLPTR
1931 inline void IUTEST_ATTRIBUTE_UNUSED_
InitIrisUnitTest(
int* pargc, ::std::nullptr_t) { detail::InitIrisUnitTest<char**>(pargc, NULL); }
1935 template<
typename CharType>
1936 inline void IUTEST_ATTRIBUTE_UNUSED_
InitIrisUnitTest(::std::vector< ::std::basic_string<CharType> >& argv)
1938 UnitTestSource::GetInstance().Initialize();
1939 TestEnv::ParseCommandLine(argv);
1956 #if defined(IUTEST_USE_GTEST)
1957 # include "gtest/iutest_switch.hpp"
1962 #if defined(IUTEST_USE_MAIN)
1966 #endif // INCG_IRIS_IUTEST_HPP_