+typedef struct _TEST_URL_ESCAPEW {
+ const WCHAR url[INTERNET_MAX_URL_LENGTH];
+ DWORD flags;
+ HRESULT expectret;
+ const WCHAR expecturl[INTERNET_MAX_URL_LENGTH];
+ const WCHAR win7url[INTERNET_MAX_URL_LENGTH]; /* <= Win7 */
+ const WCHAR vistaurl[INTERNET_MAX_URL_LENGTH]; /* <= Vista/2k8 */
+} TEST_URL_ESCAPEW;
+
+static const TEST_URL_ESCAPEW TEST_ESCAPEW[] = {
+ {{' ','<','>','"',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','2','0','%','3','C','%','3','E','%','2','2',0}},
+ {{'{','}','|','\\',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','7','B','%','7','D','%','7','C','%','5','C',0}},
+ {{'^',']','[','`',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','5','E','%','5','D','%','5','B','%','6','0',0}},
+ {{'&','/','?','#',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','2','6','/','?','#',0}},
+ {{'M','a','s','s',0}, URL_ESCAPE_AS_UTF8, S_OK, {'M','a','s','s',0}},
+
+ /* broken < Win8/10 */
+
+ {{'M','a',0xdf,0}, URL_ESCAPE_AS_UTF8, S_OK, {'M','a','%','C','3','%','9','F',0},
+ {'M','a','%','D','F',0}},
+ /* 0x2070E */
+ {{0xd841,0xdf0e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','F','0','%','A','0','%','9','C','%','8','E',0},
+ {'%','E','F','%','B','F','%','B','D','%','E','F','%','B','F','%','B','D',0},
+ {0xd841,0xdf0e,0}},
+ /* 0x27A3E */
+ {{0xd85e,0xde3e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','F','0','%','A','7','%','A','8','%','B','E',0},
+ {'%','E','F','%','B','F','%','B','D','%','E','F','%','B','F','%','B','D',0},
+ {0xd85e,0xde3e,0}},
+
+ {{0xd85e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D',0},
+ {0xd85e,0}},
+ {{0xd85e,0x41}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D','A',0},
+ {0xd85e,'A',0}},
+ {{0xdc00,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D',0},
+ {0xdc00,0}},
+ {{0xffff,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','F',0},
+ {0xffff,0}},
+};
+