94 lines
3.6 KiB
C
94 lines
3.6 KiB
C
#include <assert.h>
|
|
#include <string.h>
|
|
|
|
#include <public/zOmni.h>
|
|
#include <public/xmlNSS.h>
|
|
#include <include/guid.h>
|
|
|
|
int main(void)
|
|
{
|
|
utf8_t xml[] = " <root attr=\"value\"><child>text</child><empty /></root>";
|
|
utf8_t *start = xml;
|
|
utf8_t *end = xml + strlen((char *)xml) - 1;
|
|
XML_ElementInfo_s info;
|
|
utf8_t *tag = NULL;
|
|
NINT tagLen = 0;
|
|
|
|
memset(&info, 0, sizeof(info));
|
|
assert(XML_isWhiteSpace(start));
|
|
XML_skipWhiteSpace(&start, end);
|
|
assert(start == xml + 2);
|
|
|
|
assert(XML_GetNextTag(start, end, &info, &tag, &tagLen) == zOK);
|
|
assert(tagLen == 4);
|
|
assert(memcmp(tag, "root", 4) == 0);
|
|
assert(XML_GetTagAttribute((utf8_t *)"attr", &info) == zOK);
|
|
assert(info.attributeValueLen == 5);
|
|
assert(memcmp(info.attributeValueStart, "value", 5) == 0);
|
|
|
|
memset(&info, 0, sizeof(info));
|
|
assert(XML_GetTagElement((utf8_t *)"child", start, end, &info) == zOK);
|
|
assert(info.dataLen == 4);
|
|
assert(memcmp(info.dataStart, "text", 4) == 0);
|
|
|
|
utf8_t cdata_xml[] = "<root><![CDATA[abc<ignored>]]></root>";
|
|
utf8_t *cdata_start = cdata_xml;
|
|
utf8_t *cdata_end = cdata_xml + strlen((char *)cdata_xml) - 1;
|
|
memset(&info, 0, sizeof(info));
|
|
assert(XML_GetTagElement((utf8_t *)"root", cdata_start, cdata_end, &info) == zOK);
|
|
assert(info.dataLen == 12);
|
|
assert(memcmp(info.dataStart, "abc<ignored>", 12) == 0);
|
|
|
|
|
|
utf8_t name_data[] = " Mars ";
|
|
unicode_t unicode_name[16];
|
|
utf8_t *new_cursor = NULL;
|
|
memset(unicode_name, 0, sizeof(unicode_name));
|
|
assert(XML_SingleNameToUnicodeName(name_data, name_data + strlen((char *)name_data) - 1,
|
|
16, unicode_name, &new_cursor) == zOK);
|
|
assert(unicode_name[0] == 'M');
|
|
assert(unicode_name[1] == 'a');
|
|
assert(unicode_name[2] == 'r');
|
|
assert(unicode_name[3] == 's');
|
|
assert(unicode_name[4] == 0);
|
|
assert(new_cursor == name_data + strlen((char *)" Mars"));
|
|
|
|
utf8_t guid_text[] = " 12345678-9abc-0def-80-01-020304050607 ";
|
|
GUID_t guid;
|
|
memset(&guid, 0, sizeof(guid));
|
|
assert(XML_UTF8ToGUID(guid_text, guid_text + strlen((char *)guid_text) - 1,
|
|
&guid, &new_cursor) == LB_GUIDValidate(&guid));
|
|
assert(guid.timeLow == 0x12345678UL);
|
|
assert(guid.clockSeqHighAndReserved == 0x80);
|
|
assert(guid.node[5] == 0x07);
|
|
|
|
utf8_t quad_text[] = " 0x123456789abcdef0 ";
|
|
QUAD quad_value = 0;
|
|
assert(XML_UTF8ToQUAD(quad_text, quad_text + strlen((char *)quad_text) - 1,
|
|
&quad_value, &new_cursor) == zOK);
|
|
assert(quad_value == 0x123456789abcdef0ULL);
|
|
|
|
utf8_t squad_text[] = " -42 ";
|
|
SQUAD squad_value = 0;
|
|
assert(XML_UTF8ToSQUAD(squad_text, squad_text + strlen((char *)squad_text) - 1,
|
|
&squad_value, &new_cursor) == zOK);
|
|
assert(squad_value == -42);
|
|
|
|
utf8_t ulong_text[] = " 0755 ";
|
|
unsigned long ulong_value = 0;
|
|
assert(XML_UTF8ToUlong(ulong_text, ulong_text + strlen((char *)ulong_text) - 1,
|
|
&ulong_value, &new_cursor) == zOK);
|
|
assert(ulong_value == 0755UL);
|
|
|
|
utf8_t nested_xml[] = "<root><inner><result>wrong</result></inner><result>right</result></root>";
|
|
utf8_t *nested_start = nested_xml + strlen("<root>");
|
|
utf8_t *nested_end = nested_xml + strlen((char *)nested_xml) - strlen("</root>") - 1;
|
|
memset(&info, 0, sizeof(info));
|
|
assert(XML_GetTagElementAtCurrentLevel((utf8_t *)"result", nested_start,
|
|
nested_end, &info) == zOK);
|
|
assert(info.dataLen == 5);
|
|
assert(memcmp(info.dataStart, "right", 5) == 0);
|
|
|
|
return 0;
|
|
}
|