if (SUCCEED != zbx_eval_parse_expression(&ctx, zbx_mock_get_parameter_string("in.expression"), rules, &error))
#include "zbxmockassert.h"
zbx_vector_ptr_t callbacks;
static void mock_callback_free(zbx_mock_callback_t *cb)
zbx_variant_clear(&cb->retval);
static void mock_read_callbacks(const char *path)
zbx_mock_handle_t hcbs, hcb, hdata, hvalue;
if (ZBX_MOCK_SUCCESS != zbx_mock_parameter(path, &hcbs))
while (ZBX_MOCK_END_OF_VECTOR != (err = (zbx_mock_vector_element(hcbs, &hcb))))
if (ZBX_MOCK_SUCCESS != err)
fail_msg("cannot read callback contents");
cb = (zbx_mock_callback_t *)zbx_malloc(NULL, sizeof(zbx_mock_callback_t));
memset(cb, 0, sizeof(zbx_mock_callback_t));
cb->name = zbx_mock_get_object_member_string(hcb, "name");
cb->args_num = zbx_mock_get_object_member_uint64(hcb, "args_num");
if (ZBX_MOCK_SUCCESS == zbx_mock_object_member(hcb, "retval", &hdata))
if (ZBX_MOCK_SUCCESS == zbx_mock_string(hdata, &value))
zbx_variant_set_dbl(&cb->retval, atof(value));
zbx_vector_var_t *values;
values = (zbx_vector_var_t *)zbx_malloc(NULL, sizeof(zbx_vector_var_t));
zbx_vector_var_create(values);
while (ZBX_MOCK_END_OF_VECTOR != (err = (zbx_mock_vector_element(hdata, &hvalue))))
if (ZBX_MOCK_SUCCESS != err)
fail_msg("cannot read callback retval contents");
if (ZBX_MOCK_SUCCESS != zbx_mock_string(hvalue, &value))
fail_msg("cannot read callback retval");
zbx_variant_set_str(&tmp, zbx_strdup(NULL, value));
zbx_variant_convert(&tmp, ZBX_VARIANT_DBL);
zbx_vector_var_append(values, tmp);
zbx_variant_set_vector(&cb->retval, values);