From: Rhodri James Date: Wed, 8 Feb 2017 13:06:32 +0000 (+0000) Subject: Improve test coverage of XML_ResumeParser X-Git-Tag: R_2_2_1~94 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=012de3c01b789ba68320a7092a444469c7613c68;p=libexpat Improve test coverage of XML_ResumeParser --- diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index 9d9d2126..a9268d37 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -1762,6 +1762,27 @@ START_TEST(test_resume_invalid_parse) } END_TEST +/* Test that re-suspended parses are correctly passed through */ +START_TEST(test_resume_resuspended) +{ + const char *text = "Helloworld"; + + resumable = XML_TRUE; + XML_SetCharacterDataHandler(parser, + clearing_aborting_character_handler); + if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + resumable = XML_TRUE; + XML_SetCharacterDataHandler(parser, + clearing_aborting_character_handler); + if (XML_ResumeParser(parser) != XML_STATUS_SUSPENDED) + fail("Resumption not suspended"); + /* This one should succeed and finish up */ + if (XML_ResumeParser(parser) != XML_STATUS_OK) + xml_failure(parser); +} +END_TEST + /* Test resetting a subordinate parser does exactly nothing */ static int XMLCALL external_entity_resetter(XML_Parser parser, @@ -3252,6 +3273,7 @@ make_suite(void) tcase_add_test(tc_basic, test_attributes); tcase_add_test(tc_basic, test_reset_in_entity); tcase_add_test(tc_basic, test_resume_invalid_parse); + tcase_add_test(tc_basic, test_resume_resuspended); tcase_add_test(tc_basic, test_subordinate_reset); tcase_add_test(tc_basic, test_subordinate_suspend); tcase_add_test(tc_basic, test_explicit_encoding);