diff options
Diffstat (limited to 'tests/run-scanner.c')
-rw-r--r-- | tests/run-scanner.c | 57 |
1 files changed, 35 insertions, 22 deletions
diff --git a/tests/run-scanner.c b/tests/run-scanner.c index e3a67f2..2c8d33e 100644 --- a/tests/run-scanner.c +++ b/tests/run-scanner.c @@ -7,39 +7,52 @@ int main(int argc, char *argv[]) { - FILE *file; - yaml_parser_t parser; - yaml_token_t token; - 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_token_t token; + int done = 0; + int count = 0; + int error = 0; - yaml_parser_set_input_file(&parser, file); + printf("[%d] Scanning '%s': ", number, argv[number]); + fflush(stdout); - while (!done) - { - assert(yaml_parser_scan(&parser, &token)); + file = fopen(argv[number], "rb"); + assert(file); - done = (token.type == YAML_STREAM_END_TOKEN); + assert(yaml_parser_initialize(&parser)); - yaml_token_delete(&token); + yaml_parser_set_input_file(&parser, file); - count ++; - } + while (!done) + { + if (!yaml_parser_scan(&parser, &token)) { + error = 1; + break; + } - yaml_parser_delete(&parser); + done = (token.type == YAML_STREAM_END_TOKEN); - fclose(file); + yaml_token_delete(&token); - printf("Parsing the file '%s': %d tokens\n", argv[1], count); + count ++; + } + + yaml_parser_delete(&parser); + + assert(!fclose(file)); + + printf("%s (%d tokens)\n", (error ? "FAILURE" : "SUCCESS"), count); + } return 0; } |