23 #define inline __inline
30 int __stdcall IsDebuggerPresent();
52 #define __func__ __FUNCTION__
57 #define CMOCKA_PRINTF_ATTRIBUTE(a,b) \
58 __attribute__ ((__format__ (__printf__, a, b)))
60 #define CMOCKA_PRINTF_ATTRIBUTE(a,b)
75 #ifndef LargestIntegralType
76 #define LargestIntegralType unsigned long long
80 #ifndef LargestIntegralTypePrintfFormat
82 #define LargestIntegralTypePrintfFormat "0x%I64x"
84 #define LargestIntegralTypePrintfFormat "%#llx"
89 #define cast_to_largest_integral_type(value) \
90 ((LargestIntegralType)((size_t)(value)))
93 #if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED)
96 typedef unsigned int uintptr_t;
97 # elif defined(_WIN64)
98 typedef unsigned long int uintptr_t
103 # if __WORDSIZE == 64
104 typedef unsigned long int uintptr_t;
106 typedef unsigned int uintptr_t;
109 # if defined(_LP64) || defined(_I32LPx)
110 typedef unsigned long int uintptr_t;
112 typedef unsigned int uintptr_t;
118 # define _UINTPTR_T_DEFINED
122 #define cast_to_pointer_integral_type(value) \
126 #define cast_ptr_to_largest_integral_type(value) \
127 cast_to_largest_integral_type(cast_to_pointer_integral_type(value))
187 #define mock() _mock(__func__, __FILE__, __LINE__)
213 #define mock_type(type) ((type) mock())
240 #define mock_ptr_type(type) ((type) (uintptr_t) mock())
271 #define will_return(function, value) \
272 _will_return(#function, __FILE__, __LINE__, \
273 cast_to_largest_integral_type(value), 1)
292 #define will_return_count(function, value, count) \
293 _will_return(#function, __FILE__, __LINE__, \
294 cast_to_largest_integral_type(value), count)
315 #define will_return_always(function, value) \
316 will_return_count(function, (value), -1)
388 void expect_check(#
function, #parameter, #check_function,
const void *check_data);
390 #define expect_check(function, parameter, check_function, check_data) \
391 _expect_check(#function, #parameter, __FILE__, __LINE__, check_function, \
392 cast_to_largest_integral_type(check_data), NULL, 1)
410 void expect_in_set(#
function, #parameter, uintmax_t value_array[]);
412 #define expect_in_set(function, parameter, value_array) \
413 expect_in_set_count(function, parameter, value_array, 1)
437 #define expect_in_set_count(function, parameter, value_array, count) \
438 _expect_in_set(#function, #parameter, __FILE__, __LINE__, value_array, \
439 sizeof(value_array) / sizeof((value_array)[0]), count)
459 #define expect_not_in_set(function, parameter, value_array) \
460 expect_not_in_set_count(function, parameter, value_array, 1)
484 #define expect_not_in_set_count(function, parameter, value_array, count) \
485 _expect_not_in_set( \
486 #function, #parameter, __FILE__, __LINE__, value_array, \
487 sizeof(value_array) / sizeof((value_array)[0]), count)
508 void expect_in_range(#
function, #parameter, uintmax_t minimum, uintmax_t maximum);
510 #define expect_in_range(function, parameter, minimum, maximum) \
511 expect_in_range_count(function, parameter, minimum, maximum, 1)
535 void expect_in_range_count(#
function, #parameter, uintmax_t minimum, uintmax_t maximum,
size_t count);
537 #define expect_in_range_count(function, parameter, minimum, maximum, count) \
538 _expect_in_range(#function, #parameter, __FILE__, __LINE__, minimum, \
561 #define expect_not_in_range(function, parameter, minimum, maximum) \
562 expect_not_in_range_count(function, parameter, minimum, maximum, 1)
588 #define expect_not_in_range_count(function, parameter, minimum, maximum, \
590 _expect_not_in_range(#function, #parameter, __FILE__, __LINE__, \
591 minimum, maximum, count)
608 void expect_value(#
function, #parameter, uintmax_t value);
610 #define expect_value(function, parameter, value) \
611 expect_value_count(function, parameter, value, 1)
634 #define expect_value_count(function, parameter, value, count) \
635 _expect_value(#function, #parameter, __FILE__, __LINE__, \
636 cast_to_largest_integral_type(value), count)
655 #define expect_not_value(function, parameter, value) \
656 expect_not_value_count(function, parameter, value, 1)
679 #define expect_not_value_count(function, parameter, value, count) \
680 _expect_not_value(#function, #parameter, __FILE__, __LINE__, \
681 cast_to_largest_integral_type(value), count)
699 void expect_string(#
function, #parameter,
const char *
string);
701 #define expect_string(function, parameter, string) \
702 expect_string_count(function, parameter, string, 1)
726 #define expect_string_count(function, parameter, string, count) \
727 _expect_string(#function, #parameter, __FILE__, __LINE__, \
728 (const char*)(string), count)
748 #define expect_not_string(function, parameter, string) \
749 expect_not_string_count(function, parameter, string, 1)
773 #define expect_not_string_count(function, parameter, string, count) \
774 _expect_not_string(#function, #parameter, __FILE__, __LINE__, \
775 (const char*)(string), count)
794 void expect_memory(#
function, #parameter,
void *memory,
size_t size);
796 #define expect_memory(function, parameter, memory, size) \
797 expect_memory_count(function, parameter, memory, size, 1)
823 #define expect_memory_count(function, parameter, memory, size, count) \
824 _expect_memory(#function, #parameter, __FILE__, __LINE__, \
825 (const void*)(memory), size, count)
847 #define expect_not_memory(function, parameter, memory, size) \
848 expect_not_memory_count(function, parameter, memory, size, 1)
874 #define expect_not_memory_count(function, parameter, memory, size, count) \
875 _expect_not_memory(#function, #parameter, __FILE__, __LINE__, \
876 (const void*)(memory), size, count)
894 #define expect_any(function, parameter) \
895 expect_any_count(function, parameter, 1)
917 #define expect_any_count(function, parameter, count) \
918 _expect_any(#function, #parameter, __FILE__, __LINE__, count)
934 #define check_expected(parameter) \
935 _check_expected(__func__, #parameter, __FILE__, __LINE__, \
936 cast_to_largest_integral_type(parameter))
975 #define assert_true(c) _assert_true(cast_to_largest_integral_type(c), #c, \
993 #define assert_false(c) _assert_true(!(cast_to_largest_integral_type(c)), #c, \
1012 #define assert_return_code(rc, error) \
1013 _assert_return_code(cast_to_largest_integral_type(rc), \
1015 cast_to_largest_integral_type(error), \
1016 #rc, __FILE__, __LINE__)
1032 #define assert_non_null(c) _assert_true(cast_ptr_to_largest_integral_type(c), #c, \
1049 #define assert_null(c) _assert_true(!(cast_ptr_to_largest_integral_type(c)), #c, \
1066 #define assert_int_equal(a, b) \
1067 _assert_int_equal(cast_to_largest_integral_type(a), \
1068 cast_to_largest_integral_type(b), \
1087 #define assert_int_not_equal(a, b) \
1088 _assert_int_not_equal(cast_to_largest_integral_type(a), \
1089 cast_to_largest_integral_type(b), \
1106 #define assert_string_equal(a, b) \
1107 _assert_string_equal((const char*)(a), (const char*)(b), __FILE__, \
1124 #define assert_string_not_equal(a, b) \
1125 _assert_string_not_equal((const char*)(a), (const char*)(b), __FILE__, \
1146 #define assert_memory_equal(a, b, size) \
1147 _assert_memory_equal((const void*)(a), (const void*)(b), size, __FILE__, \
1168 #define assert_memory_not_equal(a, b, size) \
1169 _assert_memory_not_equal((const void*)(a), (const void*)(b), size, \
1187 void assert_in_range(uintmax_t value, uintmax_t minimum, uintmax_t maximum);
1189 #define assert_in_range(value, minimum, maximum) \
1191 cast_to_largest_integral_type(value), \
1192 cast_to_largest_integral_type(minimum), \
1193 cast_to_largest_integral_type(maximum), __FILE__, __LINE__)
1212 #define assert_not_in_range(value, minimum, maximum) \
1213 _assert_not_in_range( \
1214 cast_to_largest_integral_type(value), \
1215 cast_to_largest_integral_type(minimum), \
1216 cast_to_largest_integral_type(maximum), __FILE__, __LINE__)
1232 void assert_in_set(uintmax_t value, uintmax_t values[],
size_t count);
1234 #define assert_in_set(value, values, number_of_values) \
1235 _assert_in_set(value, values, number_of_values, __FILE__, __LINE__)
1253 #define assert_not_in_set(value, values, number_of_values) \
1254 _assert_not_in_set(value, values, number_of_values, __FILE__, __LINE__)
1291 #define fail() _fail(__FILE__, __LINE__)
1309 void fail_msg(
const char *msg, ...);
1311 #define fail_msg(msg, ...) do { \
1312 print_error("ERROR: " msg "\n", ##__VA_ARGS__); \
1337 #define run_test(f) _run_test(#f, f, NULL, UNIT_TEST_FUNCTION_TYPE_TEST, NULL)
1340 static inline void _unit_test_dummy(
void **state) {
1345 #define unit_test(f) { #f, f, UNIT_TEST_FUNCTION_TYPE_TEST }
1347 #define _unit_test_setup(test, setup) \
1348 { #test "_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_SETUP }
1351 #define unit_test_setup(test, setup) \
1352 _unit_test_setup(test, setup), \
1354 _unit_test_teardown(test, _unit_test_dummy)
1356 #define _unit_test_teardown(test, teardown) \
1357 { #test "_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_TEARDOWN }
1360 #define unit_test_teardown(test, teardown) \
1361 _unit_test_setup(test, _unit_test_dummy), \
1363 _unit_test_teardown(test, teardown)
1366 #define group_test_setup(setup) \
1367 { "group_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP }
1370 #define group_test_teardown(teardown) \
1371 { "group_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN }
1377 #define unit_test_setup_teardown(test, setup, teardown) \
1378 _unit_test_setup(test, setup), \
1380 _unit_test_teardown(test, teardown)
1430 #define run_tests(tests) _run_tests(tests, sizeof(tests) / sizeof(tests)[0])
1433 #define run_group_tests(tests) _run_group_tests(tests, sizeof(tests) / sizeof(tests)[0])
1485 #define test_malloc(size) _test_malloc(size, __FILE__, __LINE__)
1504 #define test_calloc(num, size) _test_calloc(num, size, __FILE__, __LINE__)
1517 #define test_free(ptr) _test_free(ptr, __FILE__, __LINE__)
1522 #define malloc test_malloc
1523 #define calloc test_calloc
1524 #define free test_free
1580 void mock_assert(
const int result,
const char*
const expression,
1581 const char *
const file,
const int line);
1608 #define expect_assert_failure(function_call) \
1610 const int result = setjmp(global_expect_assert_env); \
1611 global_expecting_assert = 1; \
1613 print_message("Expected assertion %s occurred\n", \
1614 global_last_failed_assert); \
1615 global_expecting_assert = 0; \
1618 global_expecting_assert = 0; \
1619 print_error("Expected assert in %s\n", #function_call); \
1620 _fail(__FILE__, __LINE__); \
1628 typedef void (*UnitTestFunction)(
void **state);
1631 typedef int (*CheckParameterValue)(
const LargestIntegralType value,
1632 const LargestIntegralType check_value_data);
1635 typedef enum UnitTestFunctionType {
1636 UNIT_TEST_FUNCTION_TYPE_TEST = 0,
1637 UNIT_TEST_FUNCTION_TYPE_SETUP,
1638 UNIT_TEST_FUNCTION_TYPE_TEARDOWN,
1639 UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP,
1640 UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN,
1641 } UnitTestFunctionType;
1648 typedef struct UnitTest {
1650 UnitTestFunction
function;
1651 UnitTestFunctionType function_type;
1654 typedef struct GroupTest {
1655 UnitTestFunction setup;
1656 UnitTestFunction teardown;
1657 const UnitTest *tests;
1658 const size_t number_of_tests;
1662 typedef struct SourceLocation {
1668 typedef struct CheckParameterEvent {
1669 SourceLocation location;
1670 const char *parameter_name;
1671 CheckParameterValue check_value;
1672 LargestIntegralType check_value_data;
1673 } CheckParameterEvent;
1676 extern int global_expecting_assert;
1677 extern jmp_buf global_expect_assert_env;
1678 extern const char * global_last_failed_assert;
1681 LargestIntegralType _mock(
const char *
const function,
const char*
const file,
1685 const char*
const function,
const char*
const parameter,
1686 const char*
const file,
const int line,
1687 const CheckParameterValue check_function,
1688 const LargestIntegralType check_data, CheckParameterEvent *
const event,
1691 void _expect_in_set(
1692 const char*
const function,
const char*
const parameter,
1693 const char*
const file,
const int line,
const LargestIntegralType values[],
1694 const size_t number_of_values,
const int count);
1695 void _expect_not_in_set(
1696 const char*
const function,
const char*
const parameter,
1697 const char*
const file,
const int line,
const LargestIntegralType values[],
1698 const size_t number_of_values,
const int count);
1700 void _expect_in_range(
1701 const char*
const function,
const char*
const parameter,
1702 const char*
const file,
const int line,
1703 const LargestIntegralType minimum,
1704 const LargestIntegralType maximum,
const int count);
1705 void _expect_not_in_range(
1706 const char*
const function,
const char*
const parameter,
1707 const char*
const file,
const int line,
1708 const LargestIntegralType minimum,
1709 const LargestIntegralType maximum,
const int count);
1712 const char*
const function,
const char*
const parameter,
1713 const char*
const file,
const int line,
const LargestIntegralType value,
1715 void _expect_not_value(
1716 const char*
const function,
const char*
const parameter,
1717 const char*
const file,
const int line,
const LargestIntegralType value,
1720 void _expect_string(
1721 const char*
const function,
const char*
const parameter,
1722 const char*
const file,
const int line,
const char*
string,
1724 void _expect_not_string(
1725 const char*
const function,
const char*
const parameter,
1726 const char*
const file,
const int line,
const char*
string,
1729 void _expect_memory(
1730 const char*
const function,
const char*
const parameter,
1731 const char*
const file,
const int line,
const void*
const memory,
1732 const size_t size,
const int count);
1733 void _expect_not_memory(
1734 const char*
const function,
const char*
const parameter,
1735 const char*
const file,
const int line,
const void*
const memory,
1736 const size_t size,
const int count);
1739 const char*
const function,
const char*
const parameter,
1740 const char*
const file,
const int line,
const int count);
1742 void _check_expected(
1743 const char *
const function_name,
const char *
const parameter_name,
1744 const char* file,
const int line,
const LargestIntegralType value);
1746 void _will_return(
const char *
const function_name,
const char *
const file,
1747 const int line,
const LargestIntegralType value,
1749 void _assert_true(
const LargestIntegralType result,
1750 const char*
const expression,
1751 const char *
const file,
const int line);
1752 void _assert_return_code(
const LargestIntegralType result,
1754 const LargestIntegralType error,
1755 const char *
const expression,
1756 const char *
const file,
1758 void _assert_int_equal(
1759 const LargestIntegralType a,
const LargestIntegralType b,
1760 const char *
const file,
const int line);
1761 void _assert_int_not_equal(
1762 const LargestIntegralType a,
const LargestIntegralType b,
1763 const char *
const file,
const int line);
1764 void _assert_string_equal(
const char *
const a,
const char *
const b,
1765 const char *
const file,
const int line);
1766 void _assert_string_not_equal(
const char *
const a,
const char *
const b,
1767 const char *file,
const int line);
1768 void _assert_memory_equal(
const void *
const a,
const void *
const b,
1769 const size_t size,
const char*
const file,
1771 void _assert_memory_not_equal(
const void *
const a,
const void *
const b,
1772 const size_t size,
const char*
const file,
1774 void _assert_in_range(
1775 const LargestIntegralType value,
const LargestIntegralType minimum,
1776 const LargestIntegralType maximum,
const char*
const file,
const int line);
1777 void _assert_not_in_range(
1778 const LargestIntegralType value,
const LargestIntegralType minimum,
1779 const LargestIntegralType maximum,
const char*
const file,
const int line);
1780 void _assert_in_set(
1781 const LargestIntegralType value,
const LargestIntegralType values[],
1782 const size_t number_of_values,
const char*
const file,
const int line);
1783 void _assert_not_in_set(
1784 const LargestIntegralType value,
const LargestIntegralType values[],
1785 const size_t number_of_values,
const char*
const file,
const int line);
1787 void* _test_malloc(
const size_t size,
const char* file,
const int line);
1788 void* _test_calloc(
const size_t number_of_elements,
const size_t size,
1789 const char* file,
const int line);
1790 void _test_free(
void*
const ptr,
const char* file,
const int line);
1792 void _fail(
const char *
const file,
const int line);
1794 const char *
const function_name,
const UnitTestFunction Function,
1795 void **
const volatile state,
const UnitTestFunctionType function_type,
1796 const void*
const heap_check_point);
1797 int _run_tests(
const UnitTest *
const tests,
const size_t number_of_tests);
1798 int _run_group_tests(
const UnitTest *
const tests,
1799 const size_t number_of_tests);
1802 void print_message(
const char*
const format, ...) CMOCKA_PRINTF_ATTRIBUTE(1, 2);
1803 void print_error(const
char* const format, ...) CMOCKA_PRINTF_ATTRIBUTE(1, 2);
1804 void vprint_message(const
char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUTE(1, 0);
1805 void vprint_error(const
char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUTE(1, 0);