static int do_test (void) { setup_interface (); static const char *test_addresses[] = { "::", "::1", "2001:db8::1", NULL }; for (int i = 0; test_addresses[i] != NULL; ++i) { expect_success (test_addresses[i], "0", 0); expect_success (test_addresses[i], "5555", 5555); expect_failure (test_addresses[i], ""); expect_failure (test_addresses[i], "-1"); expect_failure (test_addresses[i], "-99"); expect_failure (test_addresses[i], "037777777777"); expect_failure (test_addresses[i], "0x"); expect_failure (test_addresses[i], "0x1"); } if (interface_name != NULL) { expect_success ("fe80::1", interface_name, interface_index); expect_success ("ff02::1", interface_name, interface_index); expect_failure ("::", interface_name); expect_failure ("::1", interface_name); expect_failure ("ff01::1", interface_name); expect_failure ("2001:db8::1", interface_name); } return 0; }
END_TEST /* Test that an error is reported for unknown entities if we don't have an external subset. */ START_TEST(test_wfc_undeclared_entity_no_external_subset) { expect_failure("<doc>&entity;</doc>", XML_ERROR_UNDEFINED_ENTITY, "Parser did not report undefined entity w/out a DTD."); }
END_TEST START_TEST(test_u0000_char) { /* test that a NUL byte (in US-ASCII data) is an error */ expect_failure("<doc>�</doc>", XML_ERROR_BAD_CHAR_REF, "Parser did not report error on NUL-byte."); }
END_TEST /* Regression test for SF bug #695401: unbound prefix. */ START_TEST(test_ns_unbound_prefix_on_element) { char *text = "<a:doc/>"; expect_failure(text, XML_ERROR_UNBOUND_PREFIX, "did not report unbound prefix on element"); }
END_TEST /* Regression test for SF bug #695401: unbound prefix. */ START_TEST(test_ns_unbound_prefix_on_attribute) { char *text = "<doc a:attr=''/>"; expect_failure(text, XML_ERROR_UNBOUND_PREFIX, "did not report unbound prefix on attribute"); }
END_TEST /* Regression test for SF bug #692964: two prefixes for one namespace. */ START_TEST(test_ns_duplicate_attrs_diff_prefixes) { char *text = "<doc xmlns:a='http://xml.libexpat.org/a'\n" " xmlns:b='http://xml.libexpat.org/a'\n" " a:a='v' b:a='v' />"; expect_failure(text, XML_ERROR_DUPLICATE_ATTRIBUTE, "did not report multiple attributes with same URI+name"); }
END_TEST /* Regression test #2 for SF bug #673791. */ START_TEST(test_ns_prefix_with_empty_uri_2) { char *text = "<?xml version='1.0'?>\n" "<docelem xmlns:pre=''/>"; expect_failure(text, XML_ERROR_UNDECLARING_PREFIX, "Did not report setting namespace URI with prefix to ''."); }
END_TEST START_TEST(test_wfc_no_recursive_entity_refs) { char *text = "<!DOCTYPE doc [\n" " <!ENTITY entity '&entity;'>\n" "]>\n" "<doc>&entity;</doc>"; expect_failure(text, XML_ERROR_RECURSIVE_ENTITY_REF, "Parser did not report recursive entity reference."); }
END_TEST /* Test that an error is reported for unknown entities if we don't read an external subset, but have been declared standalone. */ START_TEST(test_wfc_undeclared_entity_standalone) { char *text = "<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n" "<!DOCTYPE doc SYSTEM 'foo'>\n" "<doc>&entity;</doc>"; expect_failure(text, XML_ERROR_UNDEFINED_ENTITY, "Parser did not report undefined entity (standalone)."); }
END_TEST /* * XML declaration tests. */ START_TEST(test_xmldecl_misplaced) { expect_failure("\n" "<?xml version='1.0'?>\n" "<a/>", XML_ERROR_MISPLACED_XML_PI, "failed to report misplaced XML declaration"); }
END_TEST /* Regression test #1 for SF bug #673791. */ START_TEST(test_ns_prefix_with_empty_uri_1) { char *text = "<doc xmlns:prefix='http://xml.libexpat.org/'>\n" " <e xmlns:prefix=''/>\n" "</doc>"; expect_failure(text, XML_ERROR_UNDECLARING_PREFIX, "Did not report re-setting namespace" " URI with prefix to ''."); }
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_UNDECLARING_PREFIX, "Didn't report attr default setting NS w/ prefix to ''."); }