From 89af984b167aa9ed31b9a90abcd9c57920ba59e7 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Sat, 6 Apr 2019 17:48:15 +0900 Subject: [PATCH] [KERNEL32_APITEST] 5-byte, 6-byte, ... UTF-8 sequences --- .../apitests/kernel32/MultiByteToWideChar.c | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c index a3f6e8ff469..80d77a7fe1a 100644 --- a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c +++ b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c @@ -111,6 +111,40 @@ static const ENTRY Entries[] = /* Japanese CP932 truncated source */ { __LINE__, 1, 0xBEAF, CP932, 0, SJIS_Japanese, 1, 4, {0x30FB, 0x7F7F}, 2 }, { __LINE__, 0, ERROR_NO_UNICODE_TRANSLATION, CP932, MB_ERR_INVALID_CHARS, SJIS_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 }, + /* invalid 5-byte UTF-8 sequences */ + { __LINE__, 1, 48815, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 1, 4, {0xFFFD, 0x7F7F}, 2 }, + { __LINE__, 2, 48815, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 2, 4, {0xFFFD, 0xFFFD, 0x7F7F}, 3 }, + { __LINE__, 3, 48815, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 3, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 }, + { __LINE__, 4, 48815, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 4, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 }, + { __LINE__, 5, 48815, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 5, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 6, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + /* invalid 6-byte UTF-8 sequences */ + { __LINE__, 1, 48815, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 1, 4, {0xFFFD, 0x7F7F}, 2 }, + { __LINE__, 2, 48815, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 2, 4, {0xFFFD, 0xFFFD, 0x7F7F}, 3 }, + { __LINE__, 3, 48815, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 3, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 }, + { __LINE__, 4, 48815, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 4, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 }, + { __LINE__, 5, 48815, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 5, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 6, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFC\xA3\xA3\xA3\xA3\xA3", 7, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + /* invalid 7-byte UTF-8 sequences */ + { __LINE__, 1, 48815, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 4, {0xFFFD, 0x7F7F}, 2 }, + { __LINE__, 2, 48815, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 4, {0xFFFD, 0xFFFD, 0x7F7F}, 3 }, + { __LINE__, 3, 48815, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 }, + { __LINE__, 4, 48815, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 }, + { __LINE__, 5, 48815, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 8, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + /* invalid UTF-8 sequences */ + { __LINE__, 1, 48815, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 1, 4, {0xFFFD, 0x7F7F}, 2 }, + { __LINE__, 2, 48815, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 2, 4, {0xFFFD, 0xFFFD, 0x7F7F}, 3 }, + { __LINE__, 3, 48815, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 3, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 }, + { __LINE__, 4, 48815, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 4, 4, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 }, + { __LINE__, 5, 48815, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 5, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 6, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 7, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 8, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, + { __LINE__, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, "\xFF\xA3\xA3\xA3\xA3\xA3\xA3", 9, 5, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 }, }; static void TestEntry(const ENTRY *pEntry)