[Expat-checkins] expat/tests runtests.c,1.38,1.39
Fred L. Drake
fdrake@users.sourceforge.net
Tue Nov 12 20:26:08 2002
Update of /cvsroot/expat/expat/tests
In directory usw-pr-cvs1:/tmp/cvs-serv19141
Modified Files:
runtests.c
Log Message:
Added regression test for SF bug #483514: Default handler reports
handled events.
Index: runtests.c
===================================================================
RCS file: /cvsroot/expat/expat/tests/runtests.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- runtests.c 12 Nov 2002 19:22:49 -0000 1.38
+++ runtests.c 12 Nov 2002 20:26:05 -0000 1.39
@@ -59,6 +59,70 @@
_expect_failure((text), (errorCode), (errorMessage), \
__FILE__, __LINE__)
+/* Dummy handlers for when we need to set a handler to tickle a bug,
+ but it doesn't need to do anything.
+*/
+
+static void
+dummy_start_doctype_handler(void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset)
+{}
+
+static void
+dummy_end_doctype_handler(void *userData)
+{}
+
+static void
+dummy_entity_decl_handler(void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName)
+{}
+
+static void
+dummy_notation_decl_handler(void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{}
+
+static void
+dummy_element_decl_handler(void *userData,
+ const XML_Char *name,
+ XML_Content *model)
+{}
+
+static void
+dummy_attlist_decl_handler(void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired)
+{}
+
+static void
+dummy_comment_handler(void *userData, const XML_Char *data)
+{}
+
+static void
+dummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data)
+{}
+
+static void
+dummy_start_element(void *userData,
+ const XML_Char *name, const XML_Char **atts)
+{}
+
/*
* Character & encoding tests.
@@ -680,6 +744,33 @@
}
END_TEST
+/* Regression test for SF bug #483514. */
+START_TEST(test_dtd_default_handling)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ "<!ENTITY e SYSTEM 'http://xml.libexpat.org/e'>\n"
+ "<!NOTATION n SYSTEM 'http://xml.libexpat.org/n'>\n"
+ "<!ELEMENT doc EMPTY>\n"
+ "<!ATTLIST doc a CDATA #IMPLIED>\n"
+ "<?pi in dtd?>\n"
+ "<!--comment in dtd-->\n"
+ "]><doc/>";
+
+ XML_SetDefaultHandler(parser, accumulate_characters);
+ XML_SetDoctypeDeclHandler(parser,
+ dummy_start_doctype_handler,
+ dummy_end_doctype_handler);
+ XML_SetEntityDeclHandler(parser, dummy_entity_decl_handler);
+ XML_SetNotationDeclHandler(parser, dummy_notation_decl_handler);
+ XML_SetElementDeclHandler(parser, dummy_element_decl_handler);
+ XML_SetAttlistDeclHandler(parser, dummy_attlist_decl_handler);
+ XML_SetProcessingInstructionHandler(parser, dummy_pi_handler);
+ XML_SetCommentHandler(parser, dummy_comment_handler);
+ run_character_check(text, "\n\n\n\n\n\n\n<doc/>");
+}
+END_TEST
+
/*
* Namespaces tests.
@@ -896,13 +987,6 @@
return 1;
}
-static void
-start_element_dummy(void *userData,
- const XML_Char *name, const XML_Char **atts)
-{
- return;
-}
-
START_TEST(test_default_ns_from_ext_subset_and_ext_ge)
{
char *text =
@@ -917,7 +1001,7 @@
XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
XML_SetExternalEntityRefHandler(parser, external_entity_handler);
/* We actually need to set this handler to tickle this bug. */
- XML_SetStartElementHandler(parser, start_element_dummy);
+ XML_SetStartElementHandler(parser, dummy_start_element);
XML_SetUserData(parser, NULL);
if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
xml_failure(parser);
@@ -963,6 +1047,7 @@
tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset);
tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs);
tcase_add_test(tc_basic, test_ext_entity_set_encoding);
+ tcase_add_test(tc_basic, test_dtd_default_handling);
suite_add_tcase(s, tc_namespace);
tcase_add_checked_fixture(tc_namespace,
More information about the Expat-checkins
mailing list