static char *test_parser_errors(void *context) { int idx = 0; static char error[1024]; while (err_vectors[idx].data) { qd_field_iterator_t *field = qd_field_iterator_binary(err_vectors[idx].data, err_vectors[idx].length); qd_parsed_field_t *parsed = qd_parse(field); if (qd_parse_ok(parsed)) { sprintf(error, "(%d) Unexpected Parse Success", idx); return error; } if (strcmp(qd_parse_error(parsed), err_vectors[idx].expected_error) != 0) { sprintf(error, "(%d) Error: Expected %s, Got %s", idx, err_vectors[idx].expected_error, qd_parse_error(parsed)); return error; } qd_parse_free(parsed); qd_field_iterator_free(field); idx++; } return 0; }
static char *test_parser_fixed_scalars(void *context) { int idx = 0; static char error[1024]; while (fs_vectors[idx].data) { qd_field_iterator_t *field = qd_field_iterator_binary(fs_vectors[idx].data, fs_vectors[idx].length); qd_parsed_field_t *parsed = qd_parse(field); if (!qd_parse_ok(parsed)) return "Unexpected Parse Error"; if (qd_parse_tag(parsed) != fs_vectors[idx].expected_tag) { sprintf(error, "(%d) Tag: Expected %02x, Got %02x", idx, fs_vectors[idx].expected_tag, qd_parse_tag(parsed)); return error; } if (fs_vectors[idx].check_uint && qd_parse_as_uint(parsed) != fs_vectors[idx].expected_ulong) { sprintf(error, "(%d) UINT: Expected %"PRIx64", Got %"PRIx32, idx, fs_vectors[idx].expected_ulong, qd_parse_as_uint(parsed)); return error; } if (fs_vectors[idx].check_ulong && qd_parse_as_ulong(parsed) != fs_vectors[idx].expected_ulong) { sprintf(error, "(%d) ULONG: Expected %"PRIx64", Got %"PRIx64, idx, fs_vectors[idx].expected_ulong, qd_parse_as_ulong(parsed)); return error; } if (fs_vectors[idx].check_int && qd_parse_as_int(parsed) != fs_vectors[idx].expected_long) { sprintf(error, "(%d) INT: Expected %"PRIx64", Got %"PRIx32, idx, fs_vectors[idx].expected_long, qd_parse_as_int(parsed)); return error; } if (fs_vectors[idx].check_long && qd_parse_as_long(parsed) != fs_vectors[idx].expected_long) { sprintf(error, "(%d) LONG: Expected %"PRIx64", Got %"PRIx64, idx, fs_vectors[idx].expected_long, qd_parse_as_long(parsed)); return error; } idx++; qd_field_iterator_free(field); qd_parse_free(parsed); } return 0; }
qd_field_iterator_t *qdr_terminus_dnp_address(qdr_terminus_t *term) { pn_data_t *props = term->properties; if (!props) return 0; pn_data_rewind(props); if (pn_data_next(props) && pn_data_enter(props) && pn_data_next(props)) { pn_bytes_t sym = pn_data_get_symbol(props); if (sym.start && strcmp(QD_DYNAMIC_NODE_PROPERTY_ADDRESS, sym.start) == 0) { if (pn_data_next(props)) { pn_bytes_t val = pn_data_get_string(props); if (val.start && *val.start != '\0') return qd_field_iterator_binary(val.start, val.size); } } } return 0; }