summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorfdrake <fdrake>2003-01-21 05:41:24 +0000
committerfdrake <fdrake>2003-01-21 05:41:24 +0000
commit4b8b29ce9951566734cf1e31afa28d9b85b3916f (patch)
tree501728955b856957f78c76f11250ab5168c9c93c /tests
parent90a12229084a04c92ed7703e823dbbe0f2f7bb26 (diff)
downloadlibexpat-4b8b29ce9951566734cf1e31afa28d9b85b3916f.tar.gz
Fix test case regarding reporting of undefined entities and
non-validating parsers (see section 5.1 of the XML 1.0 specification).
Diffstat (limited to 'tests')
-rw-r--r--tests/runtests.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/tests/runtests.c b/tests/runtests.c
index 246d4eb..e8738da 100644
--- a/tests/runtests.c
+++ b/tests/runtests.c
@@ -827,11 +827,11 @@ external_entity_loader(XML_Parser parser,
}
/* Test that an error is reported for unknown entities if we have read
- an external subset.
+ an external subset, and standalone is true.
*/
-START_TEST(test_wfc_undeclared_entity_with_external_subset) {
+START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) {
char *text =
- "<?xml version='1.0' encoding='us-ascii'?>\n"
+ "<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
"<!DOCTYPE doc SYSTEM 'foo'>\n"
"<doc>&entity;</doc>";
char *foo_text =
@@ -846,6 +846,25 @@ START_TEST(test_wfc_undeclared_entity_with_external_subset) {
}
END_TEST
+/* Test that no error is reported for unknown entities if we have read
+ an external subset, and standalone is false.
+*/
+START_TEST(test_wfc_undeclared_entity_with_external_subset) {
+ char *text =
+ "<?xml version='1.0' encoding='us-ascii'?>\n"
+ "<!DOCTYPE doc SYSTEM 'foo'>\n"
+ "<doc>&entity;</doc>";
+ char *foo_text =
+ "<!ELEMENT doc (#PCDATA)*>";
+
+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
+ XML_SetUserData(parser, foo_text);
+ XML_SetExternalEntityRefHandler(parser, external_entity_loader);
+ if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
START_TEST(test_wfc_no_recursive_entity_refs)
{
char *text =
@@ -1165,6 +1184,8 @@ make_basic_suite(void)
tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset);
tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone);
tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset);
+ tcase_add_test(tc_basic,
+ test_wfc_undeclared_entity_with_external_subset_standalone);
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);