From: Rhodri James Date: Mon, 12 Jun 2017 16:20:10 +0000 (+0100) Subject: Test UTF-16BE vs explicit UTF-16LE encoding X-Git-Tag: R_2_2_3~22^2~69 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2f40b6d5fabcaf85dcf6a132befaf36cee445e02;p=libexpat Test UTF-16BE vs explicit UTF-16LE encoding --- diff --git a/expat/tests/runtests.c b/expat/tests/runtests.c index 59d3b35b..1f4757f7 100644 --- a/expat/tests/runtests.c +++ b/expat/tests/runtests.c @@ -5776,6 +5776,40 @@ START_TEST(test_ext_entity_utf16_be) } END_TEST +/* Test big-endian UTF-16 given an explicit little-endian encoding */ +START_TEST(test_ext_entity_utf16_le) +{ + const char *text = + "\n" + "]>\n" + "&en;"; + ExtTest2 test_data = { + "\0<\0e\0/\0>", + 8, + "utf-16le", + NULL, + EE_PARSE_NONE + }; + const XML_Char *expected = + "\xe3\xb0\x80" /* U+3C00 */ + "\xe6\x94\x80" /* U+6A00 */ + "\xe2\xbc\x80" /* U+2F00 */ + "\xe3\xb8\x80"; /* U+3E00 */ + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(parser, external_entity_loader2); + XML_SetUserData(parser, &test_data); + XML_SetCharacterDataHandler(parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), + XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + /* Test not-quite-UTF-8 BOM (0xEF 0xBB 0xBF) */ START_TEST(test_ext_entity_utf8_non_bom) { @@ -11106,6 +11140,7 @@ make_suite(void) tcase_add_test(tc_basic, test_ext_entity_latin1_utf16le_bom2); tcase_add_test(tc_basic, test_ext_entity_latin1_utf16be_bom2); tcase_add_test(tc_basic, test_ext_entity_utf16_be); + tcase_add_test(tc_basic, test_ext_entity_utf16_le); tcase_add_test(tc_basic, test_ext_entity_utf8_non_bom); suite_add_tcase(s, tc_namespace);