static void validate_segment(int index, const char *segment_type, const char *segment_data, int detached,
#include "zbxmockassert.h"
#include "../../../src/libs/zbxjson/jsonpath.h"
#include "../../../src/libs/zbxjson/json.h"
static int mock_str_to_segment_type(const char *segment_type)
if (0 == strcmp("ZBX_JSONPATH_SEGMENT_MATCH_ALL", segment_type))
return ZBX_JSONPATH_SEGMENT_MATCH_ALL;
if (0 == strcmp("ZBX_JSONPATH_SEGMENT_MATCH_LIST", segment_type))
return ZBX_JSONPATH_SEGMENT_MATCH_LIST;
if (0 == strcmp("ZBX_JSONPATH_SEGMENT_MATCH_SLICE", segment_type))
return ZBX_JSONPATH_SEGMENT_MATCH_RANGE;
if (0 == strcmp("ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION", segment_type))
return ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION;
if (0 == strcmp("ZBX_JSONPATH_SEGMENT_FUNCTION", segment_type))
return ZBX_JSONPATH_SEGMENT_FUNCTION;
fail_msg("Unknown jsonpath segment type: %s", segment_type);
static void jsonpath_token_print(char **data, size_t *data_alloc, size_t *data_offset,
const zbx_jsonpath_token_t *token)
case ZBX_JSONPATH_TOKEN_PATH_ABSOLUTE:
case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
case ZBX_JSONPATH_TOKEN_CONST_STR:
case ZBX_JSONPATH_TOKEN_CONST_NUM:
zbx_strcpy_alloc(data, data_alloc, data_offset, token->text);
case ZBX_JSONPATH_TOKEN_PAREN_LEFT:
zbx_strcpy_alloc(data, data_alloc, data_offset, "(");
case ZBX_JSONPATH_TOKEN_PAREN_RIGHT:
zbx_strcpy_alloc(data, data_alloc, data_offset, ")");
case ZBX_JSONPATH_TOKEN_OP_PLUS:
zbx_strcpy_alloc(data, data_alloc, data_offset, "+");
case ZBX_JSONPATH_TOKEN_OP_MINUS: