diff options
Diffstat (limited to 'web/server/h2o/libh2o/deps/yoml/test-yoml.c')
-rw-r--r-- | web/server/h2o/libh2o/deps/yoml/test-yoml.c | 278 |
1 files changed, 0 insertions, 278 deletions
diff --git a/web/server/h2o/libh2o/deps/yoml/test-yoml.c b/web/server/h2o/libh2o/deps/yoml/test-yoml.c deleted file mode 100644 index d154138cc..000000000 --- a/web/server/h2o/libh2o/deps/yoml/test-yoml.c +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdio.h> -#include "yoml.h" -#include "yoml-parser.h" - -#include "picotest.h" - -static yoml_t *parse(const char *fn, const char *s) -{ - yaml_parser_t parser; - yoml_t *doc; - - yaml_parser_initialize(&parser); - yaml_parser_set_input_string(&parser, (yaml_char_t*)s, strlen(s)); - doc = yoml_parse_document(&parser, NULL, NULL, fn); - yaml_parser_delete(&parser); - - return doc; -} - -static yoml_t *get_value(yoml_t *mapping, const char *key) -{ - size_t i; - for (i = 0; i != mapping->data.mapping.size; ++i) - if (mapping->data.mapping.elements[i].key->type == YOML_TYPE_SCALAR && - strcmp(mapping->data.mapping.elements[i].key->data.scalar, key) == 0) - return mapping->data.mapping.elements[i].value; - return NULL; -} - -int main(int argc, char **argv) -{ - yoml_t *doc, *t; - size_t i; - - doc = parse("foo.yaml", "abc"); - ok(doc != NULL); - ok(strcmp(doc->filename, "foo.yaml") == 0); - ok(doc->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.scalar, "abc") == 0); - yoml_free(doc, NULL); - - doc = parse( - "foo.yaml", - "---\n" - "a: b\n" - "c: d\n" - "---\n" - "e: f\n"); - ok(doc != NULL); - ok(strcmp(doc->filename, "foo.yaml") == 0); - ok(doc->type == YOML_TYPE_MAPPING); - ok(doc->data.mapping.size == 2); - t = doc->data.mapping.elements[0].key; - ok(strcmp(t->filename, "foo.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "a") == 0); - t = doc->data.mapping.elements[0].value; - ok(strcmp(t->filename, "foo.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "b") == 0); - t = doc->data.mapping.elements[1].key; - ok(strcmp(t->filename, "foo.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "c") == 0); - t = doc->data.mapping.elements[1].value; - ok(strcmp(t->filename, "foo.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "d") == 0); - yoml_free(doc, NULL); - - doc = parse( - "bar.yaml", - "- a: b\n" - " c: d\n" - "- e\n"); - ok(doc != NULL); - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(doc->type == YOML_TYPE_SEQUENCE); - ok(doc->data.sequence.size == 2); - t = doc->data.sequence.elements[0]; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_MAPPING); - ok(t->data.mapping.size == 2); - t = doc->data.sequence.elements[0]->data.mapping.elements[0].key; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "a") == 0); - t = doc->data.sequence.elements[0]->data.mapping.elements[0].value; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "b") == 0); - t = doc->data.sequence.elements[0]->data.mapping.elements[1].key; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "c") == 0); - t = doc->data.sequence.elements[0]->data.mapping.elements[1].value; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "d") == 0); - t = doc->data.sequence.elements[1]; - ok(strcmp(doc->filename, "bar.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "e") == 0); - yoml_free(doc, NULL); - - doc = parse( - "baz.yaml", - "- &abc\n" - " - 1\n" - " - 2\n" - "- *abc\n"); - ok(doc != NULL); - ok(strcmp(doc->filename, "baz.yaml") == 0); - ok(doc->type == YOML_TYPE_SEQUENCE); - ok(doc->data.sequence.size == 2); - ok(doc->data.sequence.elements[0] == doc->data.sequence.elements[1]); - t = doc->data.sequence.elements[0]; - ok(strcmp(t->filename, "baz.yaml") == 0); - ok(t->_refcnt == 2); - ok(t->type == YOML_TYPE_SEQUENCE); - ok(t->data.sequence.size == 2); - t = doc->data.sequence.elements[0]->data.sequence.elements[0]; - ok(strcmp(t->filename, "baz.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "1") == 0); - t = doc->data.sequence.elements[0]->data.sequence.elements[1]; - ok(strcmp(t->filename, "baz.yaml") == 0); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "2") == 0); - - doc = parse( - "foo.yaml", - "- &link\n" - " x: 1\n" - " y: 2\n" - "- <<: *link\n" - " y: 3\n"); - ok(doc != NULL); - ok(doc->type == YOML_TYPE_SEQUENCE); - ok(doc->data.sequence.size == 2); - ok(doc->data.sequence.elements[0]->type == YOML_TYPE_MAPPING); - ok(doc->data.sequence.elements[0]->data.mapping.size == 2); - ok(doc->data.sequence.elements[0]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].value->data.scalar, "1") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].key->data.scalar, "y") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].value->data.scalar, "2") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].value->data.scalar, "1") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].key->data.scalar, "y") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].value->data.scalar, "3") == 0); - - doc = parse( - "foo.yaml", - "- &CENTER { x: 1, y: 2 }\n" - "- &LEFT { x: 0, y: 2 }\n" - "- &BIG { r: 10 }\n" - "- &SMALL { r: 1 }\n" - "- # Explicit keys\n" - " x: 1\n" - " y: 2\n" - " r: 10\n" - "- # Merge one map\n" - " << : *CENTER\n" - " r: 10\n" - "- # Merge multiple maps\n" - " << : [ *CENTER, *BIG ]\n" - "- # Override\n" - " << : [ *BIG, *LEFT, *SMALL ]\n" - " x: 1\n"); - ok(doc != NULL); - ok(doc->type == YOML_TYPE_SEQUENCE); - for (i = 4; i <= 7; ++i) { - ok(doc->data.sequence.elements[i]->type == YOML_TYPE_MAPPING); - ok(doc->data.sequence.elements[i]->data.mapping.size == 3); - t = get_value(doc->data.sequence.elements[i], "x"); - ok(t != NULL); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "1") == 0); - t = get_value(doc->data.sequence.elements[i], "y"); - ok(t != NULL); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "2") == 0); - t = get_value(doc->data.sequence.elements[i], "r"); - ok(t != NULL); - ok(t->type == YOML_TYPE_SCALAR); - ok(strcmp(t->data.scalar, "10") == 0); - } - - doc = parse( - "foo.yaml", - "- &link\n" - " x: 1\n" - " x: 2\n" - "-\n" - " x: 3\n" - " <<: *link\n"); - ok(doc != NULL); - ok(doc->type == YOML_TYPE_SEQUENCE); - ok(doc->data.sequence.size == 2); - ok(doc->data.sequence.elements[0]->type == YOML_TYPE_MAPPING); - ok(doc->data.sequence.elements[0]->data.mapping.size == 2); - ok(doc->data.sequence.elements[0]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].value->data.scalar, "1") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[0]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].value->data.scalar, "2") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.size == 3); - ok(doc->data.sequence.elements[1]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].value->data.scalar, "3") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].value->data.scalar, "1") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[2].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[2].key->data.scalar, "x") == 0); - ok(doc->data.sequence.elements[1]->data.mapping.elements[2].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[2].value->data.scalar, "2") == 0); - - doc = parse( - "foo.yaml", - "a: &link1\n" - " x: 1\n" - "b: &link2\n" - " <<: *link1\n" - " y: 2\n" - "c:\n" - " <<: *link2\n" - ); - ok(doc != NULL); - ok(doc->type == YOML_TYPE_MAPPING); - ok(doc->data.mapping.size == 3); - ok(doc->data.mapping.elements[2].value->type == YOML_TYPE_MAPPING); - ok(doc->data.mapping.elements[2].value->data.mapping.size == 2); - ok(doc->data.mapping.elements[2].value->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[0].key->data.scalar, "x") == 0); - ok(doc->data.mapping.elements[2].value->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[0].value->data.scalar, "1") == 0); - ok(doc->data.mapping.elements[2].value->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[1].key->data.scalar, "y") == 0); - ok(doc->data.mapping.elements[2].value->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR); - ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[1].value->data.scalar, "2") == 0); - - return done_testing(); -} |