diff options
Diffstat (limited to 'web/server/h2o/libh2o/deps/yaml/tests/run-parser.c')
-rw-r--r-- | web/server/h2o/libh2o/deps/yaml/tests/run-parser.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/deps/yaml/tests/run-parser.c b/web/server/h2o/libh2o/deps/yaml/tests/run-parser.c new file mode 100644 index 000000000..13031121a --- /dev/null +++ b/web/server/h2o/libh2o/deps/yaml/tests/run-parser.c @@ -0,0 +1,63 @@ +#include <yaml.h> + +#include <stdlib.h> +#include <stdio.h> + +#ifdef NDEBUG +#undef NDEBUG +#endif +#include <assert.h> + +int +main(int argc, char *argv[]) +{ + int number; + + if (argc < 2) { + printf("Usage: %s file1.yaml ...\n", argv[0]); + return 0; + } + + 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; + + printf("[%d] Parsing '%s': ", number, argv[number]); + fflush(stdout); + + file = fopen(argv[number], "rb"); + assert(file); + + assert(yaml_parser_initialize(&parser)); + + yaml_parser_set_input_file(&parser, file); + + while (!done) + { + if (!yaml_parser_parse(&parser, &event)) { + error = 1; + break; + } + + done = (event.type == YAML_STREAM_END_EVENT); + + yaml_event_delete(&event); + + count ++; + } + + yaml_parser_delete(&parser); + + assert(!fclose(file)); + + printf("%s (%d events)\n", (error ? "FAILURE" : "SUCCESS"), count); + } + + return 0; +} + |