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); +} | 
