diff --git a/test/unit/unicorn_test.h b/test/unit/unicorn_test.h index a9dff775..ccb53d75 100644 --- a/test/unit/unicorn_test.h +++ b/test/unit/unicorn_test.h @@ -7,15 +7,33 @@ #include #include -#define uc_assert_success(err) \ -do { \ - uc_err __err = err; \ - if (__err != UC_ERR_OK) { \ - fail_msg("%s", uc_strerror(__err)); \ - } \ -} while (0) - +#define UC_ASSERT_ERR_ANY 0xDEADBEEF +/** + * Assert that err matches expect + */ +#define uc_assert_err(expect, err) \ +do { \ + uc_err __err = err; \ + if ((__err != expect) \ + || (expect == UC_ASSERT_ERR_ANY && __err == UC_ERR_OK)) { \ + fail_msg("%s", uc_strerror(__err)); \ + } \ +} while (0) + +/** + * Assert that err is UC_ERR_OK + */ +#define uc_assert_success(err) uc_assert_err(UC_ERR_OK, err) + +/** + * Assert that err is anything but UC_ERR_OK + * + * Note: Better to use uc_assert_err(, err), + * as this serves to document which errors a function will return + * in various scenarios. + */ +#define uc_assert_fail(err) uc_assert_err(UC_ASSERT_ERR_ANY, err) #endif /* UNICORN_TEST_H */