From a6b362e7bedca7f0dfe9e352ea7a895e4ac7e3c4 Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Fri, 22 Sep 2023 18:34:05 +0200 Subject: xml escapes; xml full text --- source/tests/xml.test.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) (limited to 'source/tests') diff --git a/source/tests/xml.test.c b/source/tests/xml.test.c index e477acb..2a0b114 100644 --- a/source/tests/xml.test.c +++ b/source/tests/xml.test.c @@ -161,6 +161,26 @@ TEST("xml parse child") { is_destroy(is); } +TEST("xml parse child with text and tail") { + is_handle_t is = IS_WRAP_STRING(SZ("text tail")); + 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.text, SZ("text"))); + REQUIRE_EQ(res.xml.children.size, 1); + if (res.xml.children.size == 1) { + REQUIRE(AR_EQUAL(res.xml.children.values[0].tag, SZ("bar"))); + REQUIRE(AR_EQUAL(res.xml.children.values[0].tail, SZ(" tail"))); + } + xml_destroy(&res.xml); + } + + is_destroy(is); +} + TEST("xml parse declaration") { is_handle_t is = IS_WRAP_STRING(SZ("")); xml_parse_result_t res = xml_parse(is, NULL); @@ -300,4 +320,90 @@ TEST("xml parse comment tail between text") { is_destroy(is); } +TEST("xml parse escaped text") { + is_handle_t is = IS_WRAP_STRING(SZ("<foo>")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + REQUIRE_EQ(res.xml.is_declaration, 0); + REQUIRE(AR_EQUAL(res.xml.text, SZ(""))); + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse escaped quote 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_EQ(res.xml.is_declaration, 0); + 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("&\""))); + } + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse escaped apostrophe 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_EQ(res.xml.is_declaration, 0); + 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("&'"))); + } + xml_destroy(&res.xml); + } + + is_destroy(is); +} + +TEST("xml parse invalid escape") { + is_handle_t is = IS_WRAP_STRING(SZ("&foobar;")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_ERROR_INTERNAL); + + if (res.status == KIT_OK) + xml_destroy(&res.xml); + + is_destroy(is); +} + +TEST("xml full text") { + is_handle_t is = IS_WRAP_STRING( + SZ("foo text bar text tail")); + xml_parse_result_t res = xml_parse(is, NULL); + + REQUIRE_EQ(res.status, KIT_OK); + + if (res.status == KIT_OK) { + xml_text_t text = xml_full_text(&res.xml, NULL); + REQUIRE_EQ(text.status, KIT_OK); + REQUIRE(AR_EQUAL(text.text, SZ("foo text bar text tail"))); + DA_DESTROY(text.text); + xml_destroy(&res.xml); + } + + is_destroy(is); +} + #undef KIT_TEST_FILE -- cgit v1.2.3