@@ -47,6 +47,56 @@ const char *a_data_xml_attr = "\
4747
4848const 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>' and "</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+
50100int
51101generic_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+
487595int 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