// tag validation --------------------------------------------------------------------------------- void ensure_tag(const fix_group_node* node, size_t tag, const char* value) { const fix_tag* pt = get_fix_tag(node, tag); ensure(pt != nullptr); ensure(pt->tag == tag); ensure(pt->length == strlen(value)); ensure(memcmp(pt->value, value, pt->length) == 0); }
const struct fix_group_node* ensure_group_tag(const struct fix_group_node* node, size_t tag, size_t len) { const fix_group_node* group; const fix_tag* pt = get_fix_tag(node, tag); ensure(pt != nullptr); ensure(pt->tag == tag); ensure(pt->length == len); ensure(!pt->value); group = pt->group; ensure(group); return group; }
static void validate_mb_message(const fix_message* pm) { ensure(pm->version == FIX_4_2); ensure(pm->type[0] == '0' && pm->type[1] == 0); const fix_group_node* const node = get_fix_message_root_node(pm); ensure(node != nullptr); ensure(get_fix_node_size(node) == 5); ensure_tag(node, 49, "A"); ensure_tag(node, 56, "B"); ensure_tag(node, 34, "12"); ensure_tag_as_utc_timestamp(node, 52, "20100304-07:59:30.000"); ensure_tag(node, 355, "XYZ"); ensure(!get_fix_tag(node, 354)); }