Skip to content

Commit 06f0260

Browse files
committed
add some testcases for xml.c
1 parent 4af996e commit 06f0260

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

tests/api/test_xml.c

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,56 @@ const char *a_data_xml_attr = "\
4747

4848
const char *res_xml = "<x xmlns=\"urn:a\"><bubba>test</bubba></x>";
4949

50+
const char *a_err_data_xml_001 = "<x xmlns=><bubba>test</bubba></x>";
51+
52+
const char *a_err_data_xml_002 = "<x xmlns*><bubba>test</bubba></x>";
53+
54+
const char *a_err_data_xml_003 = "\
55+
<!DOCTYPE>\n\
56+
<x xmlns=\"urn:a\">\n\
57+
<bubba> test </bubba>\n\
58+
</x>\n";
59+
60+
/* Create a model that has different bytes. α:two bytes 阳:three bytes 𪐕:four bytes */
61+
const char *a_correct_data_xml_001 = "<α阳𪐕 xmlns=\"urn:a\"><bubba>test</bubba></α阳𪐕>";
62+
63+
const char *a_correct_data_xml_002 = "<x xmlns=\"urn:a\"><bubba>&apos; and &quot;</bubba></x>";
64+
65+
const char *a_correct_data_xml_003 = "\
66+
<x xmlns=\"urn:a\">\n\
67+
<!-- this is comment -->\n\
68+
<bubba>test</bubba>\n\
69+
</x>\n";
70+
71+
const char *a_correct_data_xml_004 = "\
72+
<x xmlns=\"urn:a\">\n\
73+
test\n\
74+
<bubba>test</bubba>\n\
75+
</x>\n";
76+
77+
const char *a_correct_data_xml_005 = "\
78+
<!-- this is comment -->\n\
79+
<x xmlns=\"urn:a\">\n\
80+
<bubba>test</bubba>\n\
81+
</x>\n";
82+
83+
const char *a_correct_data_xml_006 = "\
84+
<x xmlns=\"urn:a\">\n\
85+
<![CDATA[ you and me ]]>\n\
86+
<bubba>test</bubba>\n\
87+
</x>\n";
88+
89+
const char *a_correct_data_xml_007 = "\
90+
<x xmlns=\"urn:a\">\n\
91+
<?xml version=\" 1.0 \" ?>\n\
92+
<bubba>test</bubba>\n\
93+
</x>\n";
94+
95+
const char *a_correct_data_xml_008 = "\
96+
<x xmlns=\"urn:a\">\n\
97+
<bubba><bubba>test</bubba>test</bubba>\n\
98+
</x>\n";
99+
50100
int
51101
generic_init(char *yang_file, char *yang_folder)
52102
{
@@ -484,6 +534,64 @@ test_lyxml_free_withsiblings(void **state)
484534
lyxml_free_withsiblings(ctx, xml);
485535
}
486536

537+
void
538+
test_lyxml_xmlns_wrong_format(void **state)
539+
{
540+
(void)state;
541+
struct lyxml_elem *xml = NULL;
542+
543+
xml = lyxml_parse_mem(ctx, a_err_data_xml_001, 0);
544+
assert_ptr_equal(xml, NULL);
545+
lyxml_free(ctx, xml);
546+
547+
xml = lyxml_parse_mem(ctx, a_err_data_xml_002, 0);
548+
assert_ptr_equal(xml, NULL);
549+
lyxml_free(ctx, xml);
550+
551+
xml = lyxml_parse_mem(ctx, a_err_data_xml_003, 0);
552+
assert_ptr_equal(xml, NULL);
553+
lyxml_free(ctx, xml);
554+
}
555+
556+
void
557+
test_lyxml_xmlns_correct_format(void **state)
558+
{
559+
(void)state;
560+
struct lyxml_elem *xml = NULL;
561+
562+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_001, 0);
563+
assert_string_equal("α阳𪐕", xml->name);
564+
lyxml_free(ctx, xml);
565+
566+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_002, 0);
567+
assert_string_equal("' and \"", xml->child->content);
568+
lyxml_free(ctx, xml);
569+
570+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_003, 0);
571+
assert_ptr_not_equal(xml, NULL);
572+
lyxml_free(ctx, xml);
573+
574+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_004, 0);
575+
assert_ptr_not_equal(xml, NULL);
576+
lyxml_free(ctx, xml);
577+
578+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_005, 0);
579+
assert_ptr_not_equal(xml, NULL);
580+
lyxml_free(ctx, xml);
581+
582+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_006, 0);
583+
assert_ptr_not_equal(xml, NULL);
584+
lyxml_free(ctx, xml);
585+
586+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_007, 0);
587+
assert_ptr_not_equal(xml, NULL);
588+
lyxml_free(ctx, xml);
589+
590+
xml = lyxml_parse_mem(ctx, a_correct_data_xml_008, 0);
591+
assert_ptr_not_equal(xml, NULL);
592+
lyxml_free(ctx, xml);
593+
}
594+
487595
int main(void)
488596
{
489597
const struct CMUnitTest tests[] = {
@@ -499,6 +607,8 @@ int main(void)
499607
cmocka_unit_test_setup_teardown(test_lyxml_get_ns, setup_f, teardown_f),
500608
cmocka_unit_test_setup_teardown(test_lyxml_dup, setup_f, teardown_f),
501609
cmocka_unit_test_setup_teardown(test_lyxml_free_withsiblings, setup_f, teardown_f),
610+
cmocka_unit_test_setup_teardown(test_lyxml_xmlns_wrong_format, setup_f, teardown_f),
611+
cmocka_unit_test_setup_teardown(test_lyxml_xmlns_correct_format, setup_f, teardown_f),
502612
};
503613

504614
return cmocka_run_group_tests(tests, NULL, NULL);

0 commit comments

Comments
 (0)