summaryrefslogtreecommitdiff
path: root/tests/runtests.c
diff options
context:
space:
mode:
authorfdrake <fdrake>2002-06-28 14:20:07 +0000
committerfdrake <fdrake>2002-06-28 14:20:07 +0000
commitdb1694049bf1bb50cb74a77c19723966a8a50ed8 (patch)
tree29451be09526d537e6241c8ee57dc68817188984 /tests/runtests.c
parent3b77fa1c4f040a2ddab54e05d5f7c698865aa62c (diff)
downloadlibexpat-db1694049bf1bb50cb74a77c19723966a8a50ed8.tar.gz
Add regression tests for SF bug #566334:
"Default namespace => wrong element names"
Diffstat (limited to 'tests/runtests.c')
-rw-r--r--tests/runtests.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/runtests.c b/tests/runtests.c
index 50346cb..f2e9c14 100644
--- a/tests/runtests.c
+++ b/tests/runtests.c
@@ -490,6 +490,85 @@ START_TEST(test_return_ns_triplet)
}
END_TEST
+static void
+overwrite_start_checker(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ CharData *storage = (CharData *) userData;
+ CharData_AppendString(storage, "start ");
+ CharData_AppendXMLChars(storage, name, -1);
+ while (*atts != NULL) {
+ CharData_AppendString(storage, "\nattribute ");
+ CharData_AppendXMLChars(storage, *atts, -1);
+ atts += 2;
+ }
+ CharData_AppendString(storage, "\n");
+}
+
+static void
+overwrite_end_checker(void *userData, const XML_Char *name)
+{
+ CharData *storage = (CharData *) userData;
+ CharData_AppendString(storage, "end ");
+ CharData_AppendXMLChars(storage, name, -1);
+ CharData_AppendString(storage, "\n");
+}
+
+static void
+run_ns_tagname_overwrite_test(char *text, char *result)
+{
+ CharData storage;
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetElementHandler(parser,
+ overwrite_start_checker, overwrite_end_checker);
+ if (!XML_Parse(parser, text, strlen(text), 1))
+ xml_failure(parser);
+ CharData_CheckString(&storage, result);
+}
+
+/* Regression test for SF bug #566334. */
+START_TEST(test_ns_tagname_overwrite)
+{
+ char *text =
+ "<n:e xmlns:n='http://xml.libexpat.org/'>\n"
+ " <n:f n:attr='foo'/>\n"
+ " <n:g n:attr2='bar'/>\n"
+ "</n:e>";
+ char *result =
+ "start http://xml.libexpat.org/ e\n"
+ "start http://xml.libexpat.org/ f\n"
+ "attribute http://xml.libexpat.org/ attr\n"
+ "end http://xml.libexpat.org/ f\n"
+ "start http://xml.libexpat.org/ g\n"
+ "attribute http://xml.libexpat.org/ attr2\n"
+ "end http://xml.libexpat.org/ g\n"
+ "end http://xml.libexpat.org/ e\n";
+ run_ns_tagname_overwrite_test(text, result);
+}
+END_TEST
+
+/* Regression test for SF bug #566334. */
+START_TEST(test_ns_tagname_overwrite_triplet)
+{
+ char *text =
+ "<n:e xmlns:n='http://xml.libexpat.org/'>\n"
+ " <n:f n:attr='foo'/>\n"
+ " <n:g n:attr2='bar'/>\n"
+ "</n:e>";
+ char *result =
+ "start http://xml.libexpat.org/ e n\n"
+ "start http://xml.libexpat.org/ f n\n"
+ "attribute http://xml.libexpat.org/ attr n\n"
+ "end http://xml.libexpat.org/ f n\n"
+ "start http://xml.libexpat.org/ g n\n"
+ "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);
+ run_ns_tagname_overwrite_test(text, result);
+}
+END_TEST
static Suite *
make_basic_suite(void)
@@ -531,6 +610,8 @@ make_basic_suite(void)
tcase_add_checked_fixture(tc_namespace,
namespace_setup, namespace_teardown);
tcase_add_test(tc_namespace, test_return_ns_triplet);
+ tcase_add_test(tc_namespace, test_ns_tagname_overwrite);
+ tcase_add_test(tc_namespace, test_ns_tagname_overwrite_triplet);
return s;
}