27#define WIN32_LEAN_AND_MEAN
38DEFINE_GUID(CLSID_CUri, 0xDF2FCE13, 0x25EC, 0x45BB, 0x9D,0x4C, 0xCE,0xCD,0x47,0xC2,0x43,0x0C);
40#define URI_STR_PROPERTY_COUNT Uri_PROPERTY_STRING_LAST+1
41#define URI_DWORD_PROPERTY_COUNT (Uri_PROPERTY_DWORD_LAST - Uri_PROPERTY_DWORD_START)+1
42#define URI_BUILDER_STR_PROPERTY_COUNT 7
44#define DEFINE_EXPECT(func) \
45 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
47#define SET_EXPECT(func) \
48 expect_ ## func = TRUE
50#define CHECK_EXPECT(func) \
52 ok(expect_ ##func, "unexpected call " #func "\n"); \
53 expect_ ## func = FALSE; \
54 called_ ## func = TRUE; \
57#define CHECK_EXPECT2(func) \
59 ok(expect_ ##func, "unexpected call " #func "\n"); \
60 called_ ## func = TRUE; \
63#define CHECK_CALLED(func) \
65 ok(called_ ## func, "expected " #func "\n"); \
66 expect_ ## func = called_ ## func = FALSE; \
82static const WCHAR http_urlW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
83 '.',
'o',
'r',
'g',
'/',0};
84static const WCHAR http_url_fragW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
85 '.',
'o',
'r',
'g',
'/',
'#',
'F',
'r',
'a',
'g',0};
87static const WCHAR combine_baseW[] = {
'w',
'i',
'n',
'e',
't',
'e',
's',
't',
':',
'?',
't',
88 'e',
's',
't',
'i',
'n',
'g',0};
94static const WCHAR parse_urlW[] = {
'w',
'i',
'n',
'e',
't',
'e',
's',
't',
':',
't',
'e',
's',
't',0};
107 {Uri_CREATE_DECODE_EXTRA_INFO | Uri_CREATE_NO_DECODE_EXTRA_INFO,
E_INVALIDARG},
108 {Uri_CREATE_CANONICALIZE | Uri_CREATE_NO_CANONICALIZE,
E_INVALIDARG},
109 {Uri_CREATE_CRACK_UNKNOWN_SCHEMES | Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES,
E_INVALIDARG},
110 {Uri_CREATE_PRE_PROCESS_HTML_URI | Uri_CREATE_NO_PRE_PROCESS_HTML_URI,
E_INVALIDARG},
111 {Uri_CREATE_IE_SETTINGS | Uri_CREATE_NO_IE_SETTINGS,
E_INVALIDARG}
141 {
"http://www.winehq.org/tests/../tests/../..", 0,
S_OK,
FALSE,
154 {
"http://www.winehq.org/tests/../tests/../..",
S_OK,
FALSE},
166 {
"http://winehq.org/tests/.././tests", 0,
S_OK,
FALSE,
179 {
"http://winehq.org/tests/.././tests",
S_OK,
FALSE},
191 {
"HtTp://www.winehq.org/tests/..?query=x&return=y", 0,
S_OK,
FALSE,
193 {
"http://www.winehq.org/?query=x&return=y",
S_OK,
FALSE},
195 {
"http://www.winehq.org/?query=x&return=y",
S_OK,
FALSE},
204 {
"HtTp://www.winehq.org/tests/..?query=x&return=y",
S_OK,
FALSE},
216 {
"HtTpS://www.winehq.org/tests/..?query=x&return=y", 0,
S_OK,
FALSE,
218 {
"https://www.winehq.org/?query=x&return=y",
S_OK,
FALSE},
220 {
"https://www.winehq.org/?query=x&return=y",
S_OK,
FALSE},
229 {
"HtTpS://www.winehq.org/tests/..?query=x&return=y",
S_OK,
FALSE},
241 {
"hTTp://us%45r%3Ainfo@examp%4CE.com:80/path/a/b/./c/../%2E%2E/Forbidden'<|> Characters", 0,
S_OK,
FALSE,
243 {
"http://usEr%3Ainfo@example.com/path/a/Forbidden'%3C%7C%3E%20Characters",
S_OK,
FALSE},
245 {
"http://example.com/path/a/Forbidden'%3C%7C%3E%20Characters",
S_OK,
FALSE},
251 {
"/path/a/Forbidden'%3C%7C%3E%20Characters",
S_OK,
FALSE},
252 {
"/path/a/Forbidden'%3C%7C%3E%20Characters",
S_OK,
FALSE},
254 {
"hTTp://us%45r%3Ainfo@examp%4CE.com:80/path/a/b/./c/../%2E%2E/Forbidden'<|> Characters",
S_OK,
FALSE},
266 {
"ftp://winepass:wine@ftp.winehq.org:9999/dir/foo bar.txt", 0,
S_OK,
FALSE,
268 {
"ftp://winepass:wine@ftp.winehq.org:9999/dir/foo%20bar.txt",
S_OK,
FALSE},
269 {
"winepass:wine@ftp.winehq.org:9999",
S_OK,
FALSE},
270 {
"ftp://ftp.winehq.org:9999/dir/foo%20bar.txt",
S_OK,
FALSE},
279 {
"ftp://winepass:wine@ftp.winehq.org:9999/dir/foo bar.txt",
S_OK,
FALSE},
291 {
"file://c:\\tests\\../tests/foo%20bar.mp3", 0,
S_OK,
FALSE,
293 {
"file:///c:/tests/foo%2520bar.mp3",
S_OK,
FALSE},
295 {
"file:///c:/tests/foo%2520bar.mp3",
S_OK,
FALSE},
301 {
"/c:/tests/foo%2520bar.mp3",
S_OK,
FALSE},
302 {
"/c:/tests/foo%2520bar.mp3",
S_OK,
FALSE},
304 {
"file://c:\\tests\\../tests/foo%20bar.mp3",
S_OK,
FALSE},
316 {
"file://c:\\tests\\../tests/foo%20bar.mp3", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
318 {
"file:///c:/tests/../tests/foo%2520bar.mp3",
S_OK,
FALSE},
320 {
"file:///c:/tests/../tests/foo%2520bar.mp3",
S_OK,
FALSE},
326 {
"/c:/tests/../tests/foo%2520bar.mp3",
S_OK,
FALSE},
327 {
"/c:/tests/../tests/foo%2520bar.mp3",
S_OK,
FALSE},
329 {
"file://c:\\tests\\../tests/foo%20bar.mp3",
S_OK,
FALSE},
341 {
"FILE://localhost/test dir\\../tests/test%20file.README.txt", 0,
S_OK,
FALSE,
343 {
"file:///tests/test%20file.README.txt",
S_OK,
FALSE},
345 {
"file:///tests/test%20file.README.txt",
S_OK,
FALSE},
351 {
"/tests/test%20file.README.txt",
S_OK,
FALSE},
352 {
"/tests/test%20file.README.txt",
S_OK,
FALSE},
354 {
"FILE://localhost/test dir\\../tests/test%20file.README.txt",
S_OK,
FALSE},
366 {
"file:///z:/test dir/README.txt", 0,
S_OK,
FALSE,
368 {
"file:///z:/test%20dir/README.txt",
S_OK},
370 {
"file:///z:/test%20dir/README.txt",
S_OK},
376 {
"/z:/test%20dir/README.txt",
S_OK},
377 {
"/z:/test%20dir/README.txt",
S_OK},
379 {
"file:///z:/test dir/README.txt",
S_OK},
391 {
"file:///z:/test dir/README.txt#hash part", 0,
S_OK,
FALSE,
393 {
"file:///z:/test%20dir/README.txt#hash%20part",
S_OK},
395 {
"file:///z:/test%20dir/README.txt#hash%20part",
S_OK},
397 {
".txt#hash%20part",
S_OK},
401 {
"/z:/test%20dir/README.txt#hash%20part",
S_OK},
402 {
"/z:/test%20dir/README.txt#hash%20part",
S_OK},
404 {
"file:///z:/test dir/README.txt#hash part",
S_OK},
416 {
"urn:nothing:should:happen here", 0,
S_OK,
FALSE,
418 {
"urn:nothing:should:happen here",
S_OK,
FALSE},
420 {
"urn:nothing:should:happen here",
S_OK,
FALSE},
426 {
"nothing:should:happen here",
S_OK,
FALSE},
427 {
"nothing:should:happen here",
S_OK,
FALSE},
429 {
"urn:nothing:should:happen here",
S_OK,
FALSE},
441 {
"http://127.0.0.1/tests/../test dir/./test.txt", 0,
S_OK,
FALSE,
443 {
"http://127.0.0.1/test%20dir/test.txt",
S_OK,
FALSE},
445 {
"http://127.0.0.1/test%20dir/test.txt",
S_OK,
FALSE},
454 {
"http://127.0.0.1/tests/../test dir/./test.txt",
S_OK,
FALSE},
466 {
"http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", 0,
S_OK,
FALSE,
468 {
"http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/",
S_OK,
FALSE},
469 {
"[fedc:ba98:7654:3210:fedc:ba98:7654:3210]",
S_OK,
FALSE},
470 {
"http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/",
S_OK,
FALSE},
474 {
"fedc:ba98:7654:3210:fedc:ba98:7654:3210",
S_OK,
FALSE},
479 {
"http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
S_OK,
FALSE},
516 {
"http://[FEDC:BA98:0:0:0:0:0:3210]", 0,
S_OK,
FALSE,
518 {
"http://[fedc:ba98::3210]/",
S_OK,
FALSE},
520 {
"http://[fedc:ba98::3210]/",
S_OK,
FALSE},
529 {
"http://[FEDC:BA98:0:0:0:0:0:3210]",
S_OK,
FALSE},
541 {
"1234://www.winehq.org", 0,
S_OK,
FALSE,
567 {
"C:/test/test.mp3", Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME,
S_OK,
FALSE,
593 {
"\\\\Server/test.mp3", Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME,
S_OK,
FALSE,
618 {
"C:/test/test.mp3#fragment|part", Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME|Uri_CREATE_FILE_USE_DOS_PATH|Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
620 {
"file://C:\\test\\test.mp3#fragment|part",
S_OK,
FALSE},
622 {
"file://C:\\test\\test.mp3#fragment|part",
S_OK,
FALSE},
628 {
"C:\\test\\test.mp3#fragment|part",
S_OK,
FALSE},
629 {
"C:\\test\\test.mp3#fragment|part",
S_OK,
FALSE},
631 {
"C:/test/test.mp3#fragment|part",
S_OK,
FALSE},
643 {
"C:/test/test.mp3?query|part", Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME|Uri_CREATE_FILE_USE_DOS_PATH|Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
645 {
"file://C:\\test\\test.mp3?query|part",
S_OK,
FALSE},
647 {
"file://C:\\test\\test.mp3?query|part",
S_OK,
FALSE},
654 {
"C:\\test\\test.mp3?query|part",
S_OK,
FALSE},
656 {
"C:/test/test.mp3?query|part",
S_OK,
FALSE},
668 {
"C:/test/test.mp3?query|part#hash|part", Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME|Uri_CREATE_FILE_USE_DOS_PATH|Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
670 {
"file://C:\\test\\test.mp3?query|part#hash|part",
S_OK,
FALSE},
672 {
"file://C:\\test\\test.mp3?query|part#hash|part",
S_OK,
FALSE},
679 {
"C:\\test\\test.mp3?query|part",
S_OK,
FALSE},
681 {
"C:/test/test.mp3?query|part#hash|part",
S_OK,
FALSE},
693 {
"www.winehq.org/test", Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME,
S_OK,
FALSE,
719 {
"*:www.winehq.org/test", 0,
S_OK,
FALSE,
744 {
"/../some dir/test.ext", Uri_CREATE_ALLOW_RELATIVE,
S_OK,
FALSE,
769 {
"//implicit/wildcard/uri scheme", Uri_CREATE_ALLOW_RELATIVE|Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME,
S_OK,
FALSE,
771 {
"*://implicit/wildcard/uri%20scheme",
S_OK,
FALSE},
773 {
"*://implicit/wildcard/uri%20scheme",
S_OK,
FALSE},
779 {
"//implicit/wildcard/uri%20scheme",
S_OK,
FALSE},
780 {
"//implicit/wildcard/uri%20scheme",
S_OK,
FALSE},
782 {
"//implicit/wildcard/uri scheme",
S_OK,
FALSE},
795 {
"zip://google.com", Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES,
S_OK,
FALSE,
821 {
"ftp://user:pass:word@winehq.org/", 0,
S_OK,
FALSE,
823 {
"ftp://user:pass:word@winehq.org/",
S_OK,
FALSE},
824 {
"user:pass:word@winehq.org",
S_OK,
FALSE},
834 {
"ftp://user:pass:word@winehq.org/",
S_OK,
FALSE},
847 {
"ftp://w%49%4Ee:PA%53%53@ftp.google.com/", 0,
S_OK,
FALSE,
849 {
"ftp://wINe:PASS@ftp.google.com/",
S_OK,
FALSE},
860 {
"ftp://w%49%4Ee:PA%53%53@ftp.google.com/",
S_OK,
FALSE},
873 {
"ftp://w%5D%5Be:PA%7B%7D@ftp.google.com/", 0,
S_OK,
FALSE,
875 {
"ftp://w%5D%5Be:PA%7B%7D@ftp.google.com/",
S_OK,
FALSE},
876 {
"w%5D%5Be:PA%7B%7D@ftp.google.com",
S_OK,
FALSE},
886 {
"ftp://w%5D%5Be:PA%7B%7D@ftp.google.com/",
S_OK,
FALSE},
899 {
"ftp://empty:@ftp.google.com/", 0,
S_OK,
FALSE,
901 {
"ftp://empty:@ftp.google.com/",
S_OK,
FALSE},
912 {
"ftp://empty:@ftp.google.com/",
S_OK,
FALSE},
925 {
"ftp://\" \"weird@ftp.google.com/", 0,
S_OK,
FALSE,
927 {
"ftp://%22%20%22weird@ftp.google.com/",
S_OK,
FALSE},
928 {
"%22%20%22weird@ftp.google.com",
S_OK,
FALSE},
938 {
"ftp://\" \"weird@ftp.google.com/",
S_OK,
FALSE},
951 {
"ftp://\" \"weird@ftp.google.com/", Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS,
S_OK,
FALSE,
953 {
"ftp://\" \"weird@ftp.google.com/",
S_OK,
FALSE},
954 {
"\" \"weird@ftp.google.com",
S_OK,
FALSE},
964 {
"ftp://\" \"weird@ftp.google.com/",
S_OK,
FALSE},
977 {
"ftp://\"%20\"weird@ftp.google.com/\"%20\"weird", Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS,
S_OK,
FALSE,
979 {
"ftp://\"%20\"weird@ftp.google.com/\"%20\"weird",
S_OK,
FALSE},
980 {
"\"%20\"weird@ftp.google.com",
S_OK,
FALSE},
981 {
"ftp://ftp.google.com/\"%20\"weird",
S_OK,
FALSE},
990 {
"ftp://\"%20\"weird@ftp.google.com/\"%20\"weird",
S_OK,
FALSE},
1003 {
"zip://%xy:word@winehq.org/", 0,
S_OK,
FALSE,
1005 {
"zip://%xy:word@winehq.org/",
S_OK,
FALSE},
1007 {
"zip://%xy:word@winehq.org/",
S_OK,
FALSE},
1016 {
"zip://%xy:word@winehq.org/",
S_OK,
FALSE},
1031 {
"zip://%2E:%52%53ord@winehq.org/", 0,
S_OK,
FALSE,
1033 {
"zip://%2E:%52%53ord@winehq.org/",
S_OK,
FALSE},
1034 {
"%2E:%52%53ord@winehq.org",
S_OK,
FALSE},
1035 {
"zip://%2E:%52%53ord@winehq.org/",
S_OK,
FALSE},
1044 {
"zip://%2E:%52%53ord@winehq.org/",
S_OK,
FALSE},
1056 {
"ftp://[](),'test':word@winehq.org/", 0,
S_OK,
FALSE,
1058 {
"ftp://[](),'test':word@winehq.org/",
S_OK,
FALSE},
1059 {
"[](),'test':word@winehq.org",
S_OK,
FALSE},
1069 {
"ftp://[](),'test':word@winehq.org/",
S_OK,
FALSE},
1081 {
"ftp://test?:word@winehq.org/", 0,
S_OK,
FALSE,
1083 {
"ftp://test/?:word@winehq.org/",
S_OK,
FALSE},
1085 {
"ftp://test/?:word@winehq.org/",
S_OK,
FALSE},
1094 {
"ftp://test?:word@winehq.org/",
S_OK,
FALSE},
1106 {
"ftp://test#:word@winehq.org/", 0,
S_OK,
FALSE,
1108 {
"ftp://test/#:word@winehq.org/",
S_OK,
FALSE},
1110 {
"ftp://test/#:word@winehq.org/",
S_OK,
FALSE},
1119 {
"ftp://test#:word@winehq.org/",
S_OK,
FALSE},
1132 {
"zip://test\\:word@winehq.org/", 0,
S_OK,
FALSE,
1134 {
"zip://test\\:word@winehq.org/",
S_OK,
FALSE},
1136 {
"zip://test\\:word@winehq.org/",
S_OK,
FALSE},
1145 {
"zip://test\\:word@winehq.org/",
S_OK,
FALSE},
1158 {
"http://127.000.000.100/", 0,
S_OK,
FALSE,
1183 {
"http://127.0.0.1:8000", 0,
S_OK,
FALSE,
1185 {
"http://127.0.0.1:8000/",
S_OK},
1186 {
"127.0.0.1:8000",
S_OK},
1187 {
"http://127.0.0.1:8000/",
S_OK},
1196 {
"http://127.0.0.1:8000",
S_OK},
1364 {
"http://[FEDC:BA98::3210]", 0,
S_OK,
FALSE,
1366 {
"http://[fedc:ba98::3210]/",
S_OK,
FALSE},
1368 {
"http://[fedc:ba98::3210]/",
S_OK,
FALSE},
1377 {
"http://[FEDC:BA98::3210]",
S_OK,
FALSE},
1414 {
"http://[FEDC:BA98::]", 0,
S_OK,
FALSE,
1440 {
"http://[1::3:4:5:6:7:8]", 0,
S_OK,
FALSE,
1442 {
"http://[1:0:3:4:5:6:7:8]/",
S_OK,
FALSE},
1444 {
"http://[1:0:3:4:5:6:7:8]/",
S_OK,
FALSE},
1491 {
"http://[xyz:12345.com/test", 0,
S_OK,
FALSE,
1493 {
"http://[xyz:12345.com/test",
S_OK,
FALSE},
1495 {
"http://[xyz:12345.com/test",
S_OK,
FALSE},
1504 {
"http://[xyz:12345.com/test",
S_OK,
FALSE},
1519 {
"ftp://www.[works].com/", 0,
S_OK,
FALSE,
1545 {
"http://www.google.com]:12345/", 0,
S_OK,
FALSE,
1547 {
"http://www.google.com]:12345/",
S_OK,
FALSE},
1549 {
"http://www.google.com]:12345/",
S_OK,
FALSE},
1558 {
"http://www.google.com]:12345/",
S_OK,
FALSE},
1571 {
"zip://w%XXw%GEw.google.com/", 0,
S_OK,
FALSE,
1573 {
"zip://w%XXw%GEw.google.com/",
S_OK,
FALSE},
1575 {
"zip://w%XXw%GEw.google.com/",
S_OK,
FALSE},
1584 {
"zip://w%XXw%GEw.google.com/",
S_OK,
FALSE},
1623 {
"http://WWW.GOOGLE.com/", 0,
S_OK,
FALSE,
1651 {
"http://www.%7Cgoogle|.com/", 0,
S_OK,
FALSE,
1653 {
"http://www.%7cgoogle%7c.com/",
S_OK,
FALSE},
1655 {
"http://www.%7cgoogle%7c.com/",
S_OK,
FALSE},
1664 {
"http://www.%7Cgoogle|.com/",
S_OK,
FALSE},
1677 {
"http://[1:2:3:4:5:6:0.0.0.0]", 0,
S_OK,
FALSE,
1690 {
"http://[1:2:3:4:5:6:0.0.0.0]",
S_OK,
FALSE},
1703 {
"http://[::001.002.003.000]", 0,
S_OK,
FALSE,
1716 {
"http://[::001.002.003.000]",
S_OK,
FALSE},
1729 {
"zip://[0001:0:000:0004:0005:0006:001.002.003.000]", 0,
S_OK,
FALSE,
1731 {
"zip://[0001:0:000:0004:0005:0006:001.002.003.000]/",
S_OK,
FALSE},
1732 {
"[0001:0:000:0004:0005:0006:001.002.003.000]",
S_OK,
FALSE},
1733 {
"zip://[0001:0:000:0004:0005:0006:001.002.003.000]/",
S_OK,
FALSE},
1737 {
"0001:0:000:0004:0005:0006:001.002.003.000",
S_OK,
FALSE},
1742 {
"zip://[0001:0:000:0004:0005:0006:001.002.003.000]",
S_OK,
FALSE},
1755 {
"http://[ffff::192.222.111.32]", 0,
S_OK,
FALSE,
1757 {
"http://[ffff::c0de:6f20]/",
S_OK,
FALSE},
1759 {
"http://[ffff::c0de:6f20]/",
S_OK,
FALSE},
1768 {
"http://[ffff::192.222.111.32]",
S_OK,
FALSE},
1781 {
"http://google.com:65535", 0,
S_OK,
FALSE,
1783 {
"http://google.com:65535/",
S_OK,
FALSE},
1785 {
"http://google.com:65535/",
S_OK,
FALSE},
1806 {
"zip://google.com:65536", 0,
S_OK,
FALSE,
1831 {
"zip://google.com:65536:25", 0,
S_OK,
FALSE,
1833 {
"zip://google.com:65536:25/",
S_OK,
FALSE},
1835 {
"zip://google.com:65536:25/",
S_OK,
FALSE},
1844 {
"zip://google.com:65536:25",
S_OK,
FALSE},
1856 {
"zip://[::ffff]:abcd", 0,
S_OK,
FALSE,
1881 {
"zip://127.0.0.1:abcd", 0,
S_OK,
FALSE,
1907 {
"http://google.com:00035", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
1911 {
"http://google.com:00035",
S_OK,
FALSE,
"http://google.com:35"},
1933 {
"http://google.com:80", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
1958 {
"http://google.com.uk", 0,
S_OK,
FALSE,
1983 {
"http://google.co.uk", 0,
S_OK,
FALSE,
2008 {
"http://google.com.com", 0,
S_OK,
FALSE,
2059 {
"http://google.foo.uk", 0,
S_OK,
FALSE,
2134 {
"http://www.co.google.com.[]", 0,
S_OK,
FALSE,
2136 {
"http://www.co.google.com.[]/",
S_OK,
FALSE},
2138 {
"http://www.co.google.com.[]/",
S_OK,
FALSE},
2147 {
"http://www.co.google.com.[]",
S_OK,
FALSE},
2184 {
"http://www.co.google.us.test", 0,
S_OK,
FALSE,
2186 {
"http://www.co.google.us.test/",
S_OK,
FALSE},
2188 {
"http://www.co.google.us.test/",
S_OK,
FALSE},
2197 {
"http://www.co.google.us.test",
S_OK,
FALSE},
2234 {
"zip://www.google.com\\test", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
2236 {
"zip://www.google.com\\test",
S_OK,
FALSE},
2238 {
"zip://www.google.com\\test",
S_OK,
FALSE},
2247 {
"zip://www.google.com\\test",
S_OK,
FALSE},
2259 {
"urn:excepts:bad:%XY:encoded", 0,
S_OK,
FALSE,
2261 {
"urn:excepts:bad:%XY:encoded",
S_OK,
FALSE},
2263 {
"urn:excepts:bad:%XY:encoded",
S_OK,
FALSE},
2272 {
"urn:excepts:bad:%XY:encoded",
S_OK,
FALSE},
2287 {
"file://C:/te%3Es%2Et/tes%t.mp3", 0,
S_OK,
FALSE,
2289 {
"file:///C:/te%253Es%252Et/tes%25t.mp3",
S_OK,
FALSE},
2291 {
"file:///C:/te%253Es%252Et/tes%25t.mp3",
S_OK,
FALSE},
2297 {
"/C:/te%253Es%252Et/tes%25t.mp3",
S_OK,
FALSE},
2298 {
"/C:/te%253Es%252Et/tes%25t.mp3",
S_OK,
FALSE},
2300 {
"file://C:/te%3Es%2Et/tes%t.mp3",
S_OK,
FALSE},
2315 {
"file:///C:/te%3Es%2Et/t%23es%t.mp3", 0,
S_OK,
FALSE,
2317 {
"file:///C:/te%3Es.t/t#es%25t.mp3",
S_OK,
FALSE},
2319 {
"file:///C:/te%3Es.t/t#es%25t.mp3",
S_OK,
FALSE},
2325 {
"/C:/te%3Es.t/t#es%25t.mp3",
S_OK,
FALSE},
2326 {
"/C:/te%3Es.t/t#es%25t.mp3",
S_OK,
FALSE},
2328 {
"file:///C:/te%3Es%2Et/t%23es%t.mp3",
S_OK,
FALSE},
2341 {
"http://[::001.002.003.000]/%3F%23%2E%54/test", 0,
S_OK,
FALSE,
2343 {
"http://[::1.2.3.0]/%3F%23.T/test",
S_OK,
FALSE},
2345 {
"http://[::1.2.3.0]/%3F%23.T/test",
S_OK,
FALSE},
2354 {
"http://[::001.002.003.000]/%3F%23%2E%54/test",
S_OK,
FALSE},
2367 {
"file:///C:/\"test\"/test.mp3", Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS,
S_OK,
FALSE,
2369 {
"file:///C:/%22test%22/test.mp3",
S_OK,
FALSE},
2371 {
"file:///C:/%22test%22/test.mp3",
S_OK,
FALSE},
2380 {
"file:///C:/\"test\"/test.mp3",
S_OK,
FALSE},
2393 {
"1234://4294967295/<|>\" test<|>", 0,
S_OK,
FALSE,
2395 {
"1234://4294967295/<|>\" test<|>",
S_OK,
FALSE},
2397 {
"1234://4294967295/<|>\" test<|>",
S_OK,
FALSE},
2406 {
"1234://4294967295/<|>\" test<|>",
S_OK,
FALSE},
2419 {
"http://gov.uk/<|> test<|>", 0,
S_OK,
FALSE,
2421 {
"http://gov.uk/%3C%7C%3E%20test%3C%7C%3E",
S_OK,
FALSE},
2423 {
"http://gov.uk/%3C%7C%3E%20test%3C%7C%3E",
S_OK,
FALSE},
2429 {
"/%3C%7C%3E%20test%3C%7C%3E",
S_OK,
FALSE},
2430 {
"/%3C%7C%3E%20test%3C%7C%3E",
S_OK,
FALSE},
2432 {
"http://gov.uk/<|> test<|>",
S_OK,
FALSE},
2444 {
"http://gov.uk/test/../test2/././../test3/.././././", 0,
S_OK,
FALSE,
2457 {
"http://gov.uk/test/../test2/././../test3/.././././",
S_OK,
FALSE},
2469 {
"http://gov.uk/test/test2/../../..", 0,
S_OK,
FALSE,
2482 {
"http://gov.uk/test/test2/../../..",
S_OK,
FALSE},
2494 {
"http://gov.uk/test/test2/../../.", 0,
S_OK,
FALSE,
2507 {
"http://gov.uk/test/test2/../../.",
S_OK,
FALSE},
2519 {
"file://c:\\tests\\../tests\\./.\\..\\foo%20bar.mp3", 0,
S_OK,
FALSE,
2521 {
"file:///c:/foo%2520bar.mp3",
S_OK,
FALSE},
2523 {
"file:///c:/foo%2520bar.mp3",
S_OK,
FALSE},
2532 {
"file://c:\\tests\\../tests\\./.\\..\\foo%20bar.mp3",
S_OK,
FALSE},
2545 {
"zip://gov.uk/test/test2/../../.", 0,
S_OK,
FALSE,
2558 {
"zip://gov.uk/test/test2/../../.",
S_OK,
FALSE},
2571 {
"http://gov.uk/test/test2/../../.", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
2573 {
"http://gov.uk/test/test2/../../.",
S_OK,
FALSE},
2575 {
"http://gov.uk/test/test2/../../.",
S_OK,
FALSE},
2584 {
"http://gov.uk/test/test2/../../.",
S_OK,
FALSE},
2597 {
"*:gov.uk/test/test2/../../.", 0,
S_OK,
FALSE,
2599 {
"*:gov.uk/test/test2/../../.",
S_OK,
FALSE},
2601 {
"*:gov.uk/test/test2/../../.",
S_OK,
FALSE},
2610 {
"*:gov.uk/test/test2/../../.",
S_OK,
FALSE},
2623 {
"mailto:\"acco<|>unt@example.com\"", 0,
S_OK,
FALSE,
2625 {
"mailto:%22acco%3C%7C%3Eunt@example.com%22",
S_OK,
FALSE},
2627 {
"mailto:%22acco%3C%7C%3Eunt@example.com%22",
S_OK,
FALSE},
2633 {
"%22acco%3C%7C%3Eunt@example.com%22",
S_OK,
FALSE},
2634 {
"%22acco%3C%7C%3Eunt@example.com%22",
S_OK,
FALSE},
2636 {
"mailto:\"acco<|>unt@example.com\"",
S_OK,
FALSE},
2648 {
"news:test.tes<|>t.com", 0,
S_OK,
FALSE,
2650 {
"news:test.tes%3C%7C%3Et.com",
S_OK,
FALSE},
2652 {
"news:test.tes%3C%7C%3Et.com",
S_OK,
FALSE},
2674 {
"news:test.tes<|>t.com", Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS,
S_OK,
FALSE,
2700 {
"urn:test.tes<|>t.com", 0,
S_OK,
FALSE,
2726 {
"news:test.%74%65%73%74.com", 0,
S_OK,
FALSE,
2739 {
"news:test.%74%65%73%74.com",
S_OK,
FALSE},
2752 {
"news:test.%74%65%73%74.com", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
2765 {
"news:test.%74%65%73%74.com",
S_OK,
FALSE},
2778 {
"urn:test.%74%65%73%74.com", 0,
S_OK,
FALSE,
2780 {
"urn:test.%74%65%73%74.com",
S_OK,
FALSE},
2782 {
"urn:test.%74%65%73%74.com",
S_OK,
FALSE},
2791 {
"urn:test.%74%65%73%74.com",
S_OK,
FALSE},
2804 {
"zip://www.winehq.org/tests/..?query=%xx&return=y", 0,
S_OK,
FALSE,
2806 {
"zip://www.winehq.org/?query=%xx&return=y",
S_OK,
FALSE},
2808 {
"zip://www.winehq.org/?query=%xx&return=y",
S_OK,
FALSE},
2817 {
"zip://www.winehq.org/tests/..?query=%xx&return=y",
S_OK,
FALSE},
2830 {
"http://www.winehq.org/tests/..?query=%xx&return=y", Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
2832 {
"http://www.winehq.org/?query=%xx&return=y",
S_OK,
FALSE},
2834 {
"http://www.winehq.org/?query=%xx&return=y",
S_OK,
FALSE},
2843 {
"http://www.winehq.org/tests/..?query=%xx&return=y",
S_OK,
FALSE},
2856 {
"http://www.winehq.org/tests/..?query=<|>&return=y", Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
2858 {
"http://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2860 {
"http://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2869 {
"http://www.winehq.org/tests/..?query=<|>&return=y",
S_OK,
FALSE},
2882 {
"http://www.winehq.org/tests/..?query=<|>&return=y", Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS,
S_OK,
FALSE,
2884 {
"http://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2886 {
"http://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2895 {
"http://www.winehq.org/tests/..?query=<|>&return=y",
S_OK,
FALSE},
2908 {
"http://www.winehq.org/tests/..?query=<|>&return=y", 0,
S_OK,
FALSE,
2910 {
"http://www.winehq.org/?query=%3C%7C%3E&return=y",
S_OK,
FALSE},
2912 {
"http://www.winehq.org/?query=%3C%7C%3E&return=y",
S_OK,
FALSE},
2919 {
"/?query=%3C%7C%3E&return=y",
S_OK,
FALSE},
2920 {
"?query=%3C%7C%3E&return=y",
S_OK,
FALSE},
2921 {
"http://www.winehq.org/tests/..?query=<|>&return=y",
S_OK,
FALSE},
2934 {
"zip://www.winehq.org/tests/..?query=<|>&return=y", 0,
S_OK,
FALSE,
2936 {
"zip://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2938 {
"zip://www.winehq.org/?query=<|>&return=y",
S_OK,
FALSE},
2947 {
"zip://www.winehq.org/tests/..?query=<|>&return=y",
S_OK,
FALSE},
2960 {
"http://www.winehq.org/tests/..?query=%30%31&return=y", 0,
S_OK,
FALSE,
2962 {
"http://www.winehq.org/?query=01&return=y",
S_OK,
FALSE},
2964 {
"http://www.winehq.org/?query=01&return=y",
S_OK,
FALSE},
2973 {
"http://www.winehq.org/tests/..?query=%30%31&return=y",
S_OK,
FALSE},
2986 {
"zip://www.winehq.org/tests/..?query=%30%31&return=y", 0,
S_OK,
FALSE,
2988 {
"zip://www.winehq.org/?query=%30%31&return=y",
S_OK,
FALSE},
2990 {
"zip://www.winehq.org/?query=%30%31&return=y",
S_OK,
FALSE},
2999 {
"zip://www.winehq.org/tests/..?query=%30%31&return=y",
S_OK,
FALSE},
3012 {
"http://www.winehq.org/tests/..?query=%30%31&return=y", Uri_CREATE_NO_DECODE_EXTRA_INFO,
S_OK,
FALSE,
3014 {
"http://www.winehq.org/?query=%30%31&return=y",
S_OK,
FALSE},
3016 {
"http://www.winehq.org/?query=%30%31&return=y",
S_OK,
FALSE},
3025 {
"http://www.winehq.org/tests/..?query=%30%31&return=y",
S_OK,
FALSE},
3037 {
"http://www.winehq.org?query=12&return=y", Uri_CREATE_NO_CANONICALIZE,
S_OK,
FALSE,
3039 {
"http://www.winehq.org?query=12&return=y",
S_OK,
FALSE},
3041 {
"http://www.winehq.org?query=12&return=y",
S_OK,
FALSE},
3050 {
"http://www.winehq.org?query=12&return=y",
S_OK,
FALSE},