#include "zbxmockassert.h"
static void mock_read_token(zbx_eval_token_t *token, zbx_mock_handle_t htoken)
zbx_mock_handle_t hvalue;
token->type = (zbx_uint32_t)zbx_mock_get_object_member_uint64(htoken, "type");
token->opt = (zbx_uint32_t)zbx_mock_get_object_member_uint64(htoken, "opt");
if (ZBX_MOCK_SUCCESS == zbx_mock_object_member(htoken, "value", &hvalue))
token->loc.l = token->loc.r = 0;
if (ZBX_MOCK_SUCCESS != (err = zbx_mock_string(hvalue, &value)))
fail_msg("cannot read token value: %s", zbx_mock_error_string(err));
if (SUCCEED == zbx_is_uint64(value, &ui64))
zbx_variant_set_ui64(&token->value, ui64);
else if (SUCCEED == zbx_number_parse(value, &len) && strlen(value) == (size_t)len)
zbx_variant_set_dbl(&token->value, atof(value));
zbx_variant_set_str(&token->value, zbx_strdup(NULL, value));
zbx_variant_set_none(&token->value);
token->loc.l = (size_t)zbx_mock_get_object_member_uint64(htoken, "left");
token->loc.r = (size_t)zbx_mock_get_object_member_uint64(htoken, "right");
static void mock_read_stack(zbx_vector_eval_token_t *stack, const char *path)
zbx_mock_handle_t hstack, htoken, hrepeat;
hstack = zbx_mock_get_parameter_handle(path);
while (ZBX_MOCK_END_OF_VECTOR != (err = (zbx_mock_vector_element(hstack, &htoken))))