From 18c419ffb4e750c3c9ea8570cf18f3099267b1bb Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Tue, 19 Sep 2023 05:34:00 +0200 Subject: Update xml parsing --- source/tests/xml.test.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) (limited to 'source/tests/xml.test.c') diff --git a/source/tests/xml.test.c b/source/tests/xml.test.c index 7d2151c..52ff7c0 100644 --- a/source/tests/xml.test.c +++ b/source/tests/xml.test.c @@ -58,4 +58,89 @@ TEST("xml parse empty tag") { is_destroy(is); } +TEST("xml parse tail") { + is_handle_t is = IS_WRAP_STRING(SZ(" bar")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE(AR_EQUAL(res.xml.tag, SZ("foo"))); + REQUIRE(AR_EQUAL(res.xml.tail, SZ(" bar"))); + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse empty tail") { + is_handle_t is = IS_WRAP_STRING(SZ(" bar")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE(AR_EQUAL(res.xml.tag, SZ("foo"))); + REQUIRE(AR_EQUAL(res.xml.tail, SZ(" bar"))); + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse property") { + is_handle_t is = IS_WRAP_STRING(SZ("")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE(AR_EQUAL(res.xml.tag, SZ("foo"))); + REQUIRE_EQ(res.xml.properties.size, 1); + if (res.xml.properties.size == 1) { + REQUIRE(AR_EQUAL(res.xml.properties.values[0].name, SZ("bar"))); + REQUIRE(AR_EQUAL(res.xml.properties.values[0].value, SZ("42"))); + } + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse empty property") { + is_handle_t is = IS_WRAP_STRING(SZ("")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE(AR_EQUAL(res.xml.tag, SZ("foo"))); + REQUIRE_EQ(res.xml.properties.size, 1); + if (res.xml.properties.size == 1) { + REQUIRE(AR_EQUAL(res.xml.properties.values[0].name, SZ("bar"))); + REQUIRE(AR_EQUAL(res.xml.properties.values[0].value, SZ("42"))); + } + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse child") { + is_handle_t is = IS_WRAP_STRING(SZ("")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE(AR_EQUAL(res.xml.tag, SZ("foo"))); + REQUIRE_EQ(res.xml.children.size, 1); + if (res.xml.children.size == 1) + REQUIRE(AR_EQUAL(res.xml.children.values[0].tag, SZ("bar"))); + xml_destroy(&res.xml); + } + + is_destroy(is); +} + #undef KIT_TEST_FILE -- cgit v1.2.3