blob: 7cb630b7b33d119eeea8b3b24761e49abc459348 [file] [log] [blame]
/*
* Copyright (c) 2023 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef MOCKS_UTIL_H_
#define MOCKS_UTIL_H_
#include <zephyr/types.h>
#include <zephyr/sys/util_macro.h>
#include <zephyr/ztest.h>
#define CHECK_EMPTY(_x) UTIL_BOOL(IS_EMPTY(_x))
#define COND_CODE_EMPTY(_x, _if_any_code, _else_code) \
COND_CODE_1(CHECK_EMPTY(_x), _if_any_code, _else_code)
#define IF_EMPTY(_a, _code) COND_CODE_EMPTY(_a, _code, ())
#define IF_NOT_EMPTY(_a, _code) COND_CODE_EMPTY(_a, (), _code)
#define expect_data(_func_name, _arg_name, _exp_data, _data, _len) \
IF_NOT_EMPTY(_exp_data, (expect_data_equal(_func_name, _arg_name, _exp_data, _data, _len);))
#define zexpect_call_count(_func_name, _expected, _actual) \
zexpect_equal(_expected, _actual, "'%s()' was called %u times, expected %u times", \
_func_name, _actual, _expected)
static inline void expect_data_equal(const char *func_name, const char *arg_name,
const uint8_t *expect, const uint8_t *data, size_t len)
{
for (size_t i = 0U; i < len; i++) {
zexpect_equal(expect[i], data[i],
"'%s()' was called with incorrect %s[%zu]=0x%02x != 0x%02x value",
func_name, arg_name, i, data[i], expect[i]);
}
}
#endif /* MOCKS_UTIL_H_ */