diff options
Diffstat (limited to 'tests/run-parser.c')
-rw-r--r-- | tests/run-parser.c | 57 |
1 files changed, 35 insertions, 22 deletions
diff --git a/tests/run-parser.c b/tests/run-parser.c index 16f4ce1..8c1a5db 100644 --- a/tests/run-parser.c +++ b/tests/run-parser.c @@ -7,39 +7,52 @@ int main(int argc, char *argv[]) { - FILE *file; - yaml_parser_t parser; - yaml_event_t event; - int done = 0; - int count = 0; - - if (argc != 2) { - printf("Usage: %s file.yaml\n", argv[0]); + int number; + + if (argc < 2) { + printf("Usage: %s file1.yaml ...\n", argv[0]); return 0; } - file = fopen(argv[1], "rb"); - assert(file); - assert(yaml_parser_initialize(&parser)); + for (number = 1; number < argc; number ++) + { + FILE *file; + yaml_parser_t parser; + yaml_event_t event; + int done = 0; + int count = 0; + int error = 0; - yaml_parser_set_input_file(&parser, file); + printf("[%d] Parsing '%s': ", number, argv[number]); + fflush(stdout); - while (!done) - { - assert(yaml_parser_parse(&parser, &event)); + file = fopen(argv[number], "rb"); + assert(file); - done = (event.type == YAML_STREAM_END_EVENT); + assert(yaml_parser_initialize(&parser)); - yaml_event_delete(&event); + yaml_parser_set_input_file(&parser, file); - count ++; - } + while (!done) + { + if (!yaml_parser_parse(&parser, &event)) { + error = 1; + break; + } - yaml_parser_delete(&parser); + done = (event.type == YAML_STREAM_END_EVENT); - fclose(file); + yaml_event_delete(&event); - printf("Parsing the file '%s': %d events\n", argv[1], count); + count ++; + } + + yaml_parser_delete(&parser); + + assert(!fclose(file)); + + printf("%s (%d events)\n", (error ? "FAILURE" : "SUCCESS"), count); + } return 0; } |