#include "../kit/xml.h"
#define KIT_TEST_FILE xml
#include "../kit/kit_test.h"
TEST("xml parse tag") {
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")));
xml_destroy(&res.xml);
}
is_destroy(is);
}
TEST("xml parse tag not closed") {
is_handle_t is = IS_WRAP_STRING(SZ(""));
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 parse tag text") {
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.text, SZ(" bar ")));
xml_destroy(&res.xml);
}
is_destroy(is);
}
TEST("xml parse empty tag") {
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")));
xml_destroy(&res.xml);
}
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