]> granicus.if.org Git - libexpat/commitdiff
Test group with choice in element declaration
authorRhodri James <rhodri@kynesim.co.uk>
Mon, 13 Mar 2017 14:57:18 +0000 (14:57 +0000)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 22 Jul 2017 19:46:17 +0000 (21:46 +0200)
expat/tests/runtests.c

index bcfba9fa5d5cbc36492fe92773fecb1a3a56944a..16f305ffd13c2b509ee00f355679f0b46518d093 100644 (file)
@@ -4235,6 +4235,31 @@ START_TEST(test_nested_groups)
 }
 END_TEST
 
+START_TEST(test_group_choice)
+{
+    const char *text =
+        "<!DOCTYPE doc [\n"
+        "<!ELEMENT doc (a|b|c)+>\n"
+        "<!ELEMENT a EMPTY>\n"
+        "<!ELEMENT b (#PCDATA)>\n"
+        "<!ELEMENT c ANY>\n"
+        "]>\n"
+        "<doc>\n"
+        "<a/>\n"
+        "<b attr='foo'>This is a foo</b>\n"
+        "<c></c>\n"
+        "</doc>\n";
+
+    XML_SetElementDeclHandler(parser, dummy_element_decl_handler);
+    dummy_handler_flags = 0;
+    if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text),
+                                XML_TRUE) == XML_STATUS_ERROR)
+        xml_failure(parser);
+    if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG)
+        fail("Element handler flag not raised");
+}
+END_TEST
+
 /*
  * Namespaces tests.
  */
@@ -7259,6 +7284,7 @@ make_suite(void)
     tcase_add_test(tc_basic, test_dtd_stop_processing);
     tcase_add_test(tc_basic, test_public_notation_no_sysid);
     tcase_add_test(tc_basic, test_nested_groups);
+    tcase_add_test(tc_basic, test_group_choice);
 
     suite_add_tcase(s, tc_namespace);
     tcase_add_checked_fixture(tc_namespace,