[Expat-checkins] expat/tests runtests.c,1.22,1.23

fdrake@users.sourceforge.net fdrake@users.sourceforge.net
Fri Jun 28 16:05:04 2002


Update of /cvsroot/expat/expat/tests
In directory usw-pr-cvs1:/tmp/cvs-serv2069/tests

Modified Files:
	runtests.c 
Log Message:
Fix SF bug #575168: "Missing events for end-element".

Index: runtests.c
===================================================================
RCS file: /cvsroot/expat/expat/tests/runtests.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- runtests.c	28 Jun 2002 14:20:07 -0000	1.22
+++ runtests.c	28 Jun 2002 23:04:49 -0000	1.23
@@ -286,6 +286,34 @@
 
 
 /*
+ * Element event tests.
+ */
+
+static void
+end_element_event_handler(void *userData, const XML_Char *name)
+{
+    CharData *storage = (CharData *) userData;
+    CharData_AppendString(storage, "/");
+    CharData_AppendXMLChars(storage, name, -1);
+}
+
+START_TEST(test_end_element_events)
+{
+    char *text = "<a><b><c/></b><d><f/></d></a>";
+    char *expected = "/c/b/f/d/a";
+    CharData storage;
+
+    CharData_Init(&storage);
+    XML_SetUserData(parser, &storage);
+    XML_SetEndElementHandler(parser, end_element_event_handler);
+    if (!XML_Parse(parser, text, strlen(text), 1))
+        xml_failure(parser);
+    CharData_CheckString(&storage, expected);
+}
+END_TEST
+
+
+/*
  * Attribute tests.
  */
 
@@ -578,6 +606,7 @@
     TCase *tc_attrs = tcase_create("attributes");
     TCase *tc_xmldecl = tcase_create("XML declaration");
     TCase *tc_namespace = tcase_create("XML namespaces");
+    TCase *tc_elements = tcase_create("element events");
 
     suite_add_tcase(s, tc_chars);
     tcase_add_checked_fixture(tc_chars, basic_setup, basic_teardown);
@@ -597,6 +626,10 @@
     tcase_add_test(tc_chars, test_french_latin1);
     tcase_add_test(tc_chars, test_french_utf8);
     tcase_add_test(tc_chars, test_line_count);
+
+    suite_add_tcase(s, tc_elements);
+    tcase_add_checked_fixture(tc_elements, basic_setup, basic_teardown);
+    tcase_add_test(tc_elements, test_end_element_events);
 
     suite_add_tcase(s, tc_attrs);
     tcase_add_checked_fixture(tc_attrs, basic_setup, basic_teardown);