#include #include #include #include static void check(char *tag, char *name, xer_check_tag_e value) { xer_check_tag_e xct; xct = xer_check_tag(tag, strlen(tag), name); printf("[%s] vs [%s]: %d == %d\n", tag, name, xct, value); assert(xct == value); } static void check_next(char *xerbuf, int expected_chunk_size, pxer_chunk_type_e expected_chunk_type) { int xerbuf_len = strlen(xerbuf); pxer_chunk_type_e ch_type; ssize_t ch_size; int state = 0; if(expected_chunk_size == -1) expected_chunk_size = xerbuf_len; ch_size = xer_next_token(&state, xerbuf, xerbuf_len, &ch_type); printf("[%s]:%d\n", xerbuf, xerbuf_len); printf("chunk sizes: %ld vs %ld, chunk types: %d vs %ld\n", (long)ch_size, (long)expected_chunk_size, ch_type, (long)expected_chunk_type ); if(expected_chunk_type == PXER_WMORE) { assert(ch_size == 0); } else { assert(ch_size == expected_chunk_size); assert(ch_type == expected_chunk_type); } } int main() { check("", "", XCT_BROKEN); check("<", "", XCT_BROKEN); check(">", "", XCT_BROKEN); check("", "", XCT_BROKEN); check("<>", "", XCT_UNKNOWN_OP); check("", "", XCT_UNKNOWN_CL); check("", "a", XCT_BROKEN); check("<>", "a", XCT_UNKNOWN_OP); check("", "a", XCT_UNKNOWN_CL); check("a", "a", XCT_BROKEN); check("", "a", XCT_OPENING); check("", "a", XCT_CLOSING); check("", "a", XCT_BROKEN); check("", "a", XCT_BOTH); check("", "a", XCT_OPENING); check("", "a", XCT_CLOSING); check("", "a", XCT_BROKEN); check("", "a", XCT_BOTH); check("", "a", XCT_UNKNOWN_OP); check("", "tag", XCT_OPENING); check("", "tag", XCT_CLOSING); check("", "tag", XCT_BROKEN); check("", "tag", XCT_BOTH); check("", "ta", XCT_UNKNOWN_OP); check("", "ta", XCT_UNKNOWN_CL); check("", "ta", XCT_BROKEN); check("", "ta", XCT_UNKNOWN_BO); check("", "tag", XCT_BOTH); check_next("", -1, PXER_TAG); check_next("la", 5, PXER_TAG); check_next("", -1, PXER_COMMENT); return 0; }