diff options
author | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-08-18 04:54:45 +0300 |
---|---|---|
committer | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-08-18 04:54:45 +0300 |
commit | 544100da719843438372c6e30739bf9b5d3ebb9c (patch) | |
tree | 00894be08c33d97dd0873052d01609f5a78c2a54 /src/tests | |
download | parcini-544100da719843438372c6e30739bf9b5d3ebb9c.tar.gz parcini-544100da719843438372c6e30739bf9b5d3ebb9c.zip |
Init
Basically functional.
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/parcini.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/tests/parcini.c b/src/tests/parcini.c new file mode 100644 index 0000000..f53ab09 --- /dev/null +++ b/src/tests/parcini.c @@ -0,0 +1,138 @@ +#include "tests/tests.h" +#include "parcini.h" + +#include <string.h> + +#define PARCINI_TEST_FILE "test.ini" + +void +test_parcini_parse_file(void) +{ + parcini_t *parser = parcini_from_file(PARCINI_TEST_FILE); + struct parcini_line line; + enum parcini_result res; + + /* line 1 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 1); + asserteq(strcmp(line.section, ""), 0); + asserteq(strcmp(line.key, "key1"), 0); + asserteq(line.value.type, PARCINI_VALUE_STRING); + asserteq(strcmp(line.value.value.string, "string"), 0); + + /* line 2 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 2); + asserteq(strcmp(line.section, ""), 0); + asserteq(strcmp(line.key, "key2"), 0); + asserteq(line.value.type, PARCINI_VALUE_INTEGER); + asserteq(line.value.value.integer, -1520); + + /* line 3 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 3); + asserteq(strcmp(line.section, ""), 0); + asserteq(strcmp(line.key, "key3"), 0); + asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); + asserteq(line.value.value.boolean, false); + + /* line 4 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EMPTY_LINE); + asserteq(line.lineno, 4); + + /* line 5 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EMPTY_LINE); + asserteq(line.lineno, 5); + + /* line 6 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_SECTION); + asserteq(line.lineno, 6); + asserteq(strcmp(line.section, "asection"), 0); + asserteq(line.key, NULL); + asserteq(line.value.type, PARCINI_VALUE_NONE); + + /* line 7 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 7); + asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.key, "skey"), 0); + asserteq(line.value.type, PARCINI_VALUE_STRING); + asserteq(strcmp(line.value.value.string, "ur 2 slow"), 0); + + /* line 8 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_VALUE_PARSE_ERROR); + asserteq(line.lineno, 8); + + /* line 9 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEY_PARSE_ERROR); + asserteq(line.lineno, 9); + + /* line 10 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_VALUE_PARSE_ERROR); + asserteq(line.lineno, 10); + + /* line 11 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_VALUE_RANGE_ERROR); + asserteq(line.lineno, 11); + + /* line 12 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 12); + asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.key, "bool2"), 0); + asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); + asserteq(line.value.value.boolean, true); + + /* line 13 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 13); + asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.key, "bool3"), 0); + asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); + asserteq(line.value.value.boolean, false); + + /* line 14 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_KEYVALUE); + asserteq(line.lineno, 14); + asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.key, "bool3"), 0); + asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); + asserteq(line.value.value.boolean, true); + + /* line 15 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EMPTY_LINE); + asserteq(line.lineno, 15); + + /* line 16 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_SECTION_PARSE_ERROR); + asserteq(line.lineno, 16); + + /* EOF */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EOF); + + parcini_destroy(parser); +} + +int +main(void) +{ + INIT_TESTS(); + RUN_TEST(test_parcini_parse_file); +} |