From 1d8e0e95dbe1791c801f152728c1eec41f96d2c5 Mon Sep 17 00:00:00 2001 From: fdrake Date: Tue, 28 Jan 2003 05:33:37 +0000 Subject: - 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() --- tests/runtests.c | 112 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 33 deletions(-) (limited to 'tests') 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[] = "\0"; /* 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"; - 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, "%ccd", 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"; 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 = ""; 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) " \n" " "; /* missing */ 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) " \n" " "; /* missing */ 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-+" ""; - 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) ""; 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) { "\n" "&entity;"; - 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) " \n" ""; - 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 = + "\n" + " \n" + "]>\n" + ""; + + 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 = + "\n" + " \n" + "]>\n" + ""; + /* 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 = "\n" " \n" ""; - 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; -- cgit v1.2.1