summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorfdrake <fdrake>2003-01-28 05:33:37 +0000
committerfdrake <fdrake>2003-01-28 05:33:37 +0000
commit1d8e0e95dbe1791c801f152728c1eec41f96d2c5 (patch)
tree7a664513f82dcaa89feb4cf72a0c346e37465b63 /tests
parentec8853b04f2b4754f6ed731cf618190c4bd568d9 (diff)
downloadlibexpat-1d8e0e95dbe1791c801f152728c1eec41f96d2c5.tar.gz
- two more tests based on Karl's comments on SF patch #673791
- pass XML_TRUE or XML_FALSE as the isFinal parameter for XML_Parse()
Diffstat (limited to 'tests')
-rw-r--r--tests/runtests.c112
1 files changed, 79 insertions, 33 deletions
diff --git a/tests/runtests.c b/tests/runtests.c
index 1d9f133..4da96dd 100644
--- a/tests/runtests.c
+++ b/tests/runtests.c
@@ -49,7 +49,7 @@ static void
_expect_failure(char *text, enum XML_Error errorCode, char *errorMessage,
char *file, int lineno)
{
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_OK)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK)
/* Hackish use of _fail_unless() macro, but let's us report
the right filename and line number. */
_fail_unless(0, file, lineno, errorMessage);
@@ -135,7 +135,7 @@ START_TEST(test_nul_byte)
char text[] = "<doc>\0</doc>";
/* test that a NUL byte (in US-ASCII data) is an error */
- if (XML_Parse(parser, text, sizeof(text) - 1, 1) == XML_STATUS_OK)
+ if (XML_Parse(parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_OK)
fail("Parser did not report error on NUL-byte.");
if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN)
xml_failure(parser);
@@ -157,7 +157,7 @@ START_TEST(test_bom_utf8)
/* This test is really just making sure we don't core on a UTF-8 BOM. */
char *text = "\357\273\277<e/>";
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -166,7 +166,7 @@ START_TEST(test_bom_utf16_be)
{
char text[] = "\376\377\0<\0e\0/\0>";
- if (XML_Parse(parser, text, sizeof(text) - 1, 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -175,7 +175,7 @@ START_TEST(test_bom_utf16_le)
{
char text[] = "\377\376<\0e\0/\0>\0";
- if (XML_Parse(parser, text, sizeof(text) - 1, 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -207,7 +207,7 @@ _run_character_check(XML_Char *text, XML_Char *expected,
CharData_Init(&storage);
XML_SetUserData(parser, &storage);
XML_SetCharacterDataHandler(parser, accumulate_characters);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
_xml_failure(parser, file, line);
CharData_CheckXMLChars(&storage, expected);
}
@@ -224,7 +224,7 @@ _run_attribute_check(XML_Char *text, XML_Char *expected,
CharData_Init(&storage);
XML_SetUserData(parser, &storage);
XML_SetStartElementHandler(parser, accumulate_attribute);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
_xml_failure(parser, file, line);
CharData_CheckXMLChars(&storage, expected);
}
@@ -308,7 +308,7 @@ START_TEST(test_illegal_utf8)
for (i = 128; i <= 255; ++i) {
sprintf(text, "<e>%ccd</e>", i);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_OK) {
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) {
sprintf(text,
"expected token error for '%c' (ordinal %d) in UTF-8 text",
i, i);
@@ -335,7 +335,7 @@ START_TEST(test_utf16)
"\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'"
"\000>\000s\000o\000m\000e\000 \000t\000e\000x\000t\000<\000/"
"\000d\000o\000c\000>";
- if (XML_Parse(parser, text, sizeof(text) - 1, 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -350,12 +350,13 @@ START_TEST(test_utf16_le_epilog_newline)
if (first_chunk_bytes >= sizeof(text) - 1)
fail("bad value of first_chunk_bytes");
- if (XML_Parse(parser, text, first_chunk_bytes, 0) == XML_STATUS_ERROR)
+ if ( XML_Parse(parser, text, first_chunk_bytes, XML_FALSE)
+ == XML_STATUS_ERROR)
xml_failure(parser);
else {
enum XML_Status rc;
rc = XML_Parse(parser, text + first_chunk_bytes,
- sizeof(text) - first_chunk_bytes - 1, 1);
+ sizeof(text) - first_chunk_bytes - 1, XML_TRUE);
if (rc == XML_STATUS_ERROR)
xml_failure(parser);
}
@@ -388,7 +389,7 @@ START_TEST(test_line_number_after_parse)
"\n</tag>";
int lineno;
- if (XML_Parse(parser, text, strlen(text), 0) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR)
xml_failure(parser);
lineno = XML_GetCurrentLineNumber(parser);
if (lineno != 4) {
@@ -405,7 +406,7 @@ START_TEST(test_column_number_after_parse)
char *text = "<tag></tag>";
int colno;
- if (XML_Parse(parser, text, strlen(text), 0) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR)
xml_failure(parser);
colno = XML_GetCurrentColumnNumber(parser);
if (colno != 11) {
@@ -470,7 +471,7 @@ START_TEST(test_line_and_column_numbers_inside_handlers)
XML_SetUserData(parser, &storage);
XML_SetStartElementHandler(parser, start_element_event_handler2);
XML_SetEndElementHandler(parser, end_element_event_handler2);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
CharData_CheckString(&storage, expected);
@@ -485,7 +486,7 @@ START_TEST(test_line_number_after_error)
" <b>\n"
" </a>"; /* missing </b> */
int lineno;
- if (XML_Parse(parser, text, strlen(text), 0) != XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR)
fail("Expected a parse error");
lineno = XML_GetCurrentLineNumber(parser);
@@ -505,7 +506,7 @@ START_TEST(test_column_number_after_error)
" <b>\n"
" </a>"; /* missing </b> */
int colno;
- if (XML_Parse(parser, text, strlen(text), 0) != XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR)
fail("Expected a parse error");
colno = XML_GetCurrentColumnNumber(parser);
@@ -547,7 +548,7 @@ START_TEST(test_really_long_lines)
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
"</e>";
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -574,7 +575,7 @@ START_TEST(test_end_element_events)
CharData_Init(&storage);
XML_SetUserData(parser, &storage);
XML_SetEndElementHandler(parser, end_element_event_handler);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
CharData_CheckString(&storage, expected);
}
@@ -687,7 +688,7 @@ START_TEST(test_attr_whitespace_normalization)
XML_SetStartElementHandler(parser,
check_attr_contains_normalized_whitespace);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -731,7 +732,7 @@ START_TEST(test_unknown_encoding_internal_entity)
"<test a='&foo;'/>";
XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, NULL);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -757,7 +758,8 @@ external_entity_loader_set_encoding(XML_Parser parser,
fail("Could not create external entity parser.");
if (!XML_SetEncoding(extparser, "utf-8"))
fail("XML_SetEncoding() ignored for external entity");
- if (XML_Parse(extparser, text, strlen(text), 1) == XML_STATUS_ERROR) {
+ if ( XML_Parse(extparser, text, strlen(text), XML_TRUE)
+ == XML_STATUS_ERROR) {
xml_failure(parser);
return 0;
}
@@ -786,7 +788,7 @@ START_TEST(test_wfc_undeclared_entity_unread_external_subset) {
"<!DOCTYPE doc SYSTEM 'foo'>\n"
"<doc>&entity;</doc>";
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -829,7 +831,8 @@ external_entity_loader(XML_Parser parser,
extparser = XML_ExternalEntityParserCreate(parser, context, NULL);
if (extparser == NULL)
fail("Could not create external entity parser.");
- if (XML_Parse(extparser, text, strlen(text), 1) == XML_STATUS_ERROR) {
+ if ( XML_Parse(extparser, text, strlen(text), XML_TRUE)
+ == XML_STATUS_ERROR) {
xml_failure(parser);
return XML_STATUS_ERROR;
}
@@ -870,7 +873,7 @@ START_TEST(test_wfc_undeclared_entity_with_external_subset) {
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)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -929,7 +932,7 @@ START_TEST(test_empty_ns_without_namespaces)
" <e xmlns:prefix=''/>\n"
"</doc>";
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -998,10 +1001,10 @@ START_TEST(test_return_ns_triplet)
"http://expat.sf.net/ e foo",
"http://expat.sf.net/ a bar"
};
- XML_SetReturnNSTriplet(parser, 1);
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
XML_SetUserData(parser, elemstr);
XML_SetElementHandler(parser, triplet_start_checker, triplet_end_checker);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -1038,7 +1041,7 @@ run_ns_tagname_overwrite_test(char *text, char *result)
XML_SetUserData(parser, &storage);
XML_SetElementHandler(parser,
overwrite_start_checker, overwrite_end_checker);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
CharData_CheckString(&storage, result);
}
@@ -1081,7 +1084,7 @@ START_TEST(test_ns_tagname_overwrite_triplet)
"attribute http://xml.libexpat.org/ attr2 n\n"
"end http://xml.libexpat.org/ g n\n"
"end http://xml.libexpat.org/ e n\n";
- XML_SetReturnNSTriplet(parser, 1);
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
run_ns_tagname_overwrite_test(text, result);
}
END_TEST
@@ -1115,7 +1118,7 @@ START_TEST(test_start_ns_clears_start_element)
XML_SetStartElementHandler(parser, start_element_fail);
XML_SetStartNamespaceDeclHandler(parser, start_ns_clearing_start_element);
XML_UseParserAsHandlerArg(parser);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -1142,7 +1145,7 @@ external_entity_handler(XML_Parser parser,
XML_SetUserData(parser, (void *) callno);
p2 = XML_ExternalEntityParserCreate(parser, context, NULL);
- if (XML_Parse(p2, text, strlen(text), 1) == XML_STATUS_ERROR) {
+ if (XML_Parse(p2, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) {
xml_failure(p2);
return 0;
}
@@ -1166,7 +1169,7 @@ START_TEST(test_default_ns_from_ext_subset_and_ext_ge)
/* We actually need to set this handler to tickle this bug. */
XML_SetStartElementHandler(parser, dummy_start_element);
XML_SetUserData(parser, NULL);
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -1199,13 +1202,54 @@ START_TEST(test_ns_prefix_with_empty_uri_2)
}
END_TEST
+/* Regression test #3 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_3)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ELEMENT doc EMPTY>\n"
+ " <!ATTLIST doc\n"
+ " xmlns:prefix CDATA ''>\n"
+ "]>\n"
+ "<doc/>";
+
+ expect_failure(text,
+ XML_ERROR_SYNTAX,
+ "Didn't report attr default setting NS w/ prefix to ''.");
+}
+END_TEST
+
+/* Regression test #4 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_4)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ELEMENT prefix:doc EMPTY>\n"
+ " <!ATTLIST prefix:doc\n"
+ " xmlns:prefix CDATA 'http://xml.libexpat.org/'>\n"
+ "]>\n"
+ "<prefix:doc/>";
+ /* Packaged info expected by the end element handler;
+ the weird structuring lets us re-use the triplet_end_checker()
+ function also used for another test. */
+ char *elemstr[] = {
+ "http://xml.libexpat.org/ doc prefix"
+ };
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
+ XML_SetUserData(parser, elemstr);
+ XML_SetEndElementHandler(parser, triplet_end_checker);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
START_TEST(test_ns_default_with_empty_uri)
{
char *text =
"<doc xmlns='http://xml.libexpat.org/'>\n"
" <e xmlns=''/>\n"
"</doc>";
- if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
xml_failure(parser);
}
END_TEST
@@ -1268,6 +1312,8 @@ make_basic_suite(void)
tcase_add_test(tc_namespace, test_default_ns_from_ext_subset_and_ext_ge);
tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_1);
tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_2);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_3);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_4);
tcase_add_test(tc_namespace, test_ns_default_with_empty_uri);
return s;