89 lines
2.4 KiB
C
89 lines
2.4 KiB
C
#include "unicorn_test.h"
|
|
|
|
/* Make sure the uc_assert macros work with constants */
|
|
static void test_uc_assert_macros_constants(void **state)
|
|
{
|
|
const uc_err nomem = UC_ERR_NOMEM;
|
|
|
|
uc_assert_success(UC_ERR_OK);
|
|
uc_assert_err(UC_ERR_NOMEM, nomem);
|
|
uc_assert_fail(UC_ERR_VERSION);
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static uc_err feedback(uc_err err, int *callcount)
|
|
{
|
|
assert_int_equal(++(*callcount), 1);
|
|
return err;
|
|
}
|
|
|
|
/**
|
|
* Make sure the uc_assert macros work with function calls
|
|
* and only evaluate them once!
|
|
*/
|
|
static void test_uc_assert_macros_func_calls(void **state)
|
|
{
|
|
int callcount;
|
|
|
|
callcount = 0;
|
|
uc_assert_success(feedback(UC_ERR_OK, &callcount));
|
|
|
|
callcount = 0;
|
|
uc_assert_err(UC_ERR_NOMEM, feedback(UC_ERR_NOMEM, &callcount));
|
|
|
|
callcount = 0;
|
|
uc_assert_fail(feedback(UC_ERR_VERSION, &callcount));
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static void fail_uc_assert_success(void **state)
|
|
{
|
|
uc_assert_success(UC_ERR_NOMEM);
|
|
}
|
|
|
|
static void fail_uc_assert_err(void **state)
|
|
{
|
|
const uc_err ok = UC_ERR_OK;
|
|
uc_assert_err(UC_ERR_VERSION, ok);
|
|
}
|
|
|
|
static void fail_uc_assert_fail(void **state)
|
|
{
|
|
uc_assert_fail(UC_ERR_OK);
|
|
}
|
|
|
|
static void test_uc_assert_macros_fail(void **state)
|
|
{
|
|
/* A test-inside-a-test */
|
|
|
|
const struct CMUnitTest tests[] = {
|
|
/* these should all fail */
|
|
cmocka_unit_test(fail_uc_assert_success),
|
|
cmocka_unit_test(fail_uc_assert_err),
|
|
cmocka_unit_test(fail_uc_assert_fail),
|
|
};
|
|
|
|
print_message("\n\n--------------------------------------------------------------------------------\n");
|
|
print_message("START: Failure of the following tests is expected.\n\n");
|
|
|
|
assert_int_not_equal(0, cmocka_run_group_tests(tests, NULL, NULL));
|
|
|
|
print_message("\n\nEND: Failure of the preceding tests was expected.\n");
|
|
print_message("--------------------------------------------------------------------------------\n\n");
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
int main(void)
|
|
{
|
|
const struct CMUnitTest tests[] = {
|
|
cmocka_unit_test(test_uc_assert_macros_constants),
|
|
cmocka_unit_test(test_uc_assert_macros_func_calls),
|
|
cmocka_unit_test(test_uc_assert_macros_fail),
|
|
};
|
|
|
|
return cmocka_run_group_tests(tests, NULL, NULL);
|
|
}
|