diff --git a/generate.ts b/generate.ts index 60146a0fd64d65ffc7279438a266938f047cb09e..6b19e976e2a7ee76198208fbf05d8a2d916020e8 100644 --- a/generate.ts +++ b/generate.ts @@ -37,8 +37,8 @@ w.write(` pub fn parseFail(input: []const u8, base: ?[]const u8) !void { const allocator = std.testing.allocator; _ = url.URL.parse(allocator, input, base) catch |err| switch (err) { - error.SkipZigTest => |e| return e, - else => return, + error.InvalidURL => return, + error.OutOfMemory => return error.OutOfMemory, }; return error.FailZigTest; } @@ -63,21 +63,22 @@ pub fn parsePass(input: []const u8, base: ?[]const u8, href: []const u8, origin: pub fn parseIDNAFail(comptime input: []const u8) !void { const allocator = std.testing.allocator; _ = url.URL.parse(allocator, "https://" ++ input ++ "/x", null) catch |err| switch (err) { - error.SkipZigTest => |e| return e, - else => return, + error.InvalidURL => return, + error.OutOfMemory => return error.OutOfMemory, }; return error.FailZigTest; } -pub fn parseIDNAPass(input: []const u8, output: []const u8) !void { - _ = input; +pub fn parseIDNAPass(comptime input: []const u8, comptime output: []const u8) !void { _ = output; // new URL('https://{idnaTest.input}/x'); + const allocator = std.testing.allocator; + const u = try url.URL.parse(allocator, "https://" ++ input ++ "/x", null); + defer allocator.free(u.href); // assert_equals(url.host, idnaTest.output); // assert_equals(url.hostname, idnaTest.output); // assert_equals(url.pathname, "/x"); // assert_equals(url.href, 'https://{idnaTest.output}/x'); - return error.SkipZigTest; } `); @@ -111,8 +112,6 @@ for (const c of casesidna.filter((v) => typeof v !== "string").filter((v) => v.o } w.write(`\n`); -// prettier-ignore -if (false) for (const c of casesidna.filter((v) => typeof v !== "string").filter((v) => v.output !== null)) { w.write(`test { try parseIDNAPass("${stringEscape(c.input)}", "${stringEscape(c.output!)}"); }\n`); } diff --git a/url.zig b/url.zig index 28e76d76e61a61be6f0324952d5e75e9ae548a61..94c051ae918f79124a0691df48d72a9512618da1 100644 --- a/url.zig +++ b/url.zig @@ -27,9 +27,9 @@ pub const URL = struct { } /// https://url.spec.whatwg.org/#concept-basic-url-parser - fn parseBasic(alloc: std.mem.Allocator, input: []const u8, base: ?URL, state_override: ?BasicParserState) error{ SkipZigTest, InvalidURL, OutOfMemory }!URL { + fn parseBasic(alloc: std.mem.Allocator, input: []const u8, base: ?URL, state_override: ?BasicParserState) error{ InvalidURL, OutOfMemory }!URL { // input is a scalar value string - if (!std.unicode.utf8ValidateSlice(input)) return error.SkipZigTest; + if (!std.unicode.utf8ValidateSlice(input)) return error.InvalidURL; var inputl = std.ArrayList(u8).init(alloc); defer inputl.deinit(); @@ -190,7 +190,7 @@ pub const URL = struct { // 2. Otherwise, if base has an opaque path and c is U+0023 (#), set url’s scheme to base’s scheme, url’s path to base’s path, url’s query to base’s query, url’s fragment to the empty string, and set state to fragment state. // 3. Otherwise, if base’s scheme is not "file", set state to relative state and decrease pointer by 1. // 4. Otherwise, set state to file state and decrease pointer by 1. - return error.SkipZigTest; + return error.InvalidURL; }, .special_relative_or_authority => { // 1. If c is U+002F (/) and remaining starts with U+002F (/), then set state to special authority ignore slashes state and increase pointer by 1. diff --git a/zig-out/test.zig b/zig-out/test.zig index 67639a9211b7717b978b3da5737d9ba8fcbc8190..fe2a831b456c72f3eba0ba75d296f465cc3140bc 100644 --- a/zig-out/test.zig +++ b/zig-out/test.zig @@ -7,8 +7,8 @@ const expect = @import("expect").expect; pub fn parseFail(input: []const u8, base: ?[]const u8) !void { const allocator = std.testing.allocator; _ = url.URL.parse(allocator, input, base) catch |err| switch (err) { - error.SkipZigTest => |e| return e, - else => return, + error.InvalidURL => return, + error.OutOfMemory => return error.OutOfMemory, }; return error.FailZigTest; } @@ -33,21 +33,22 @@ pub fn parsePass(input: []const u8, base: ?[]const u8, href: []const u8, origin: pub fn parseIDNAFail(comptime input: []const u8) !void { const allocator = std.testing.allocator; _ = url.URL.parse(allocator, "https://" ++ input ++ "/x", null) catch |err| switch (err) { - error.SkipZigTest => |e| return e, - else => return, + error.InvalidURL => return, + error.OutOfMemory => return error.OutOfMemory, }; return error.FailZigTest; } -pub fn parseIDNAPass(input: []const u8, output: []const u8) !void { - _ = input; +pub fn parseIDNAPass(comptime input: []const u8, comptime output: []const u8) !void { _ = output; // new URL('https://{idnaTest.input}/x'); + const allocator = std.testing.allocator; + const u = try url.URL.parse(allocator, "https://" ++ input ++ "/x", null); + defer allocator.free(u.href); // assert_equals(url.host, idnaTest.output); // assert_equals(url.hostname, idnaTest.output); // assert_equals(url.pathname, "/x"); // assert_equals(url.href, 'https://{idnaTest.output}/x'); - return error.SkipZigTest; } test { try parseFail("file://example:1/", null); } @@ -2474,3 +2475,796 @@ test { try parseIDNAFail("\xf0\x91\x86\x80\xe4\x81\xb4\xf1\xa4\xa7\xa3\xef\xbc\x test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb324h"); } test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb324h32o"); } +test { try parseIDNAPass("fass.de", "fass.de"); } +test { try parseIDNAPass("fa\xc3\x9f.de", "xn--fa-hia.de"); } +test { try parseIDNAPass("Fa\xc3\x9f.de", "xn--fa-hia.de"); } +test { try parseIDNAPass("xn--fa-hia.de", "xn--fa-hia.de"); } +test { try parseIDNAPass("\xc3\xa0.\xd7\x90\xcc\x88", "xn--0ca.xn--ssa73l"); } +test { try parseIDNAPass("a\xcc\x80.\xd7\x90\xcc\x88", "xn--0ca.xn--ssa73l"); } +test { try parseIDNAPass("A\xcc\x80.\xd7\x90\xcc\x88", "xn--0ca.xn--ssa73l"); } +test { try parseIDNAPass("\xc3\x80.\xd7\x90\xcc\x88", "xn--0ca.xn--ssa73l"); } +test { try parseIDNAPass("xn--0ca.xn--ssa73l", "xn--0ca.xn--ssa73l"); } +test { try parseIDNAPass("\xc3\xa0\xcc\x88.\xd7\x90", "xn--0ca81i.xn--4db"); } +test { try parseIDNAPass("a\xcc\x80\xcc\x88.\xd7\x90", "xn--0ca81i.xn--4db"); } +test { try parseIDNAPass("A\xcc\x80\xcc\x88.\xd7\x90", "xn--0ca81i.xn--4db"); } +test { try parseIDNAPass("\xc3\x80\xcc\x88.\xd7\x90", "xn--0ca81i.xn--4db"); } +test { try parseIDNAPass("xn--0ca81i.xn--4db", "xn--0ca81i.xn--4db"); } +test { try parseIDNAPass("ab", "ab"); } +test { try parseIDNAPass("a\xe0\xa5\x8d\xe2\x80\x8cb", "xn--ab-fsf604u"); } +test { try parseIDNAPass("A\xe0\xa5\x8d\xe2\x80\x8cB", "xn--ab-fsf604u"); } +test { try parseIDNAPass("A\xe0\xa5\x8d\xe2\x80\x8cb", "xn--ab-fsf604u"); } +test { try parseIDNAPass("xn--ab-fsf", "xn--ab-fsf"); } +test { try parseIDNAPass("a\xe0\xa5\x8db", "xn--ab-fsf"); } +test { try parseIDNAPass("A\xe0\xa5\x8dB", "xn--ab-fsf"); } +test { try parseIDNAPass("A\xe0\xa5\x8db", "xn--ab-fsf"); } +test { try parseIDNAPass("xn--ab-fsf604u", "xn--ab-fsf604u"); } +test { try parseIDNAPass("a\xe0\xa5\x8d\xe2\x80\x8db", "xn--ab-fsf014u"); } +test { try parseIDNAPass("A\xe0\xa5\x8d\xe2\x80\x8dB", "xn--ab-fsf014u"); } +test { try parseIDNAPass("A\xe0\xa5\x8d\xe2\x80\x8db", "xn--ab-fsf014u"); } +test { try parseIDNAPass("xn--ab-fsf014u", "xn--ab-fsf014u"); } +test { try parseIDNAPass("\xc2\xa1", "xn--7a"); } +test { try parseIDNAPass("xn--7a", "xn--7a"); } +test { try parseIDNAPass("\xe1\xa7\x9a", "xn--pkf"); } +test { try parseIDNAPass("xn--pkf", "xn--pkf"); } +test { try parseIDNAPass("", ""); } +test { try parseIDNAPass("\xe3\x80\x82", "."); } +test { try parseIDNAPass(".", "."); } +test { try parseIDNAPass("\xea\xad\xa0", "xn--3y9a"); } +test { try parseIDNAPass("xn--3y9a", "xn--3y9a"); } +test { try parseIDNAPass("1234567890\xc3\xa41234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); } +test { try parseIDNAPass("1234567890a\xcc\x881234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); } +test { try parseIDNAPass("1234567890A\xcc\x881234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); } +test { try parseIDNAPass("1234567890\xc3\x841234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); } +test { try parseIDNAPass("xn--12345678901234567890123456789012345678901234567890123456-fxe", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); } +test { try parseIDNAPass("www.eXample.cOm", "www.example.com"); } +test { try parseIDNAPass("B\xc3\xbccher.de", "xn--bcher-kva.de"); } +test { try parseIDNAPass("Bu\xcc\x88cher.de", "xn--bcher-kva.de"); } +test { try parseIDNAPass("bu\xcc\x88cher.de", "xn--bcher-kva.de"); } +test { try parseIDNAPass("b\xc3\xbccher.de", "xn--bcher-kva.de"); } +test { try parseIDNAPass("B\xc3\x9cCHER.DE", "xn--bcher-kva.de"); } +test { try parseIDNAPass("BU\xcc\x88CHER.DE", "xn--bcher-kva.de"); } +test { try parseIDNAPass("xn--bcher-kva.de", "xn--bcher-kva.de"); } +test { try parseIDNAPass("\xc3\x96BB", "xn--bb-eka"); } +test { try parseIDNAPass("O\xcc\x88BB", "xn--bb-eka"); } +test { try parseIDNAPass("o\xcc\x88bb", "xn--bb-eka"); } +test { try parseIDNAPass("\xc3\xb6bb", "xn--bb-eka"); } +test { try parseIDNAPass("\xc3\x96bb", "xn--bb-eka"); } +test { try parseIDNAPass("O\xcc\x88bb", "xn--bb-eka"); } +test { try parseIDNAPass("xn--bb-eka", "xn--bb-eka"); } +test { try parseIDNAPass("FA\xe1\xba\x9e.de", "xn--fa-hia.de"); } +test { try parseIDNAPass("FA\xe1\xba\x9e.DE", "xn--fa-hia.de"); } +test { try parseIDNAPass("\xce\xb2\xcf\x8c\xce\xbb\xce\xbf\xcf\x82.com", "xn--nxasmm1c.com"); } +test { try parseIDNAPass("\xce\xb2\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x82.com", "xn--nxasmm1c.com"); } +test { try parseIDNAPass("\xce\x92\xce\x9f\xcc\x81\xce\x9b\xce\x9f\xce\xa3.COM", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\x92\xce\x8c\xce\x9b\xce\x9f\xce\xa3.COM", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\xb2\xcf\x8c\xce\xbb\xce\xbf\xcf\x83.com", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\xb2\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x83.com", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\x92\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x83.com", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\x92\xcf\x8c\xce\xbb\xce\xbf\xcf\x83.com", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("xn--nxasmq6b.com", "xn--nxasmq6b.com"); } +test { try parseIDNAPass("\xce\x92\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x82.com", "xn--nxasmm1c.com"); } +test { try parseIDNAPass("\xce\x92\xcf\x8c\xce\xbb\xce\xbf\xcf\x82.com", "xn--nxasmm1c.com"); } +test { try parseIDNAPass("xn--nxasmm1c.com", "xn--nxasmm1c.com"); } +test { try parseIDNAPass("xn--nxasmm1c", "xn--nxasmm1c"); } +test { try parseIDNAPass("\xce\xb2\xcf\x8c\xce\xbb\xce\xbf\xcf\x82", "xn--nxasmm1c"); } +test { try parseIDNAPass("\xce\xb2\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x82", "xn--nxasmm1c"); } +test { try parseIDNAPass("\xce\x92\xce\x9f\xcc\x81\xce\x9b\xce\x9f\xce\xa3", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\x92\xce\x8c\xce\x9b\xce\x9f\xce\xa3", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\xb2\xcf\x8c\xce\xbb\xce\xbf\xcf\x83", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\xb2\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x83", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\x92\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x83", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\x92\xcf\x8c\xce\xbb\xce\xbf\xcf\x83", "xn--nxasmq6b"); } +test { try parseIDNAPass("xn--nxasmq6b", "xn--nxasmq6b"); } +test { try parseIDNAPass("\xce\x92\xcf\x8c\xce\xbb\xce\xbf\xcf\x82", "xn--nxasmm1c"); } +test { try parseIDNAPass("\xce\x92\xce\xbf\xcc\x81\xce\xbb\xce\xbf\xcf\x82", "xn--nxasmm1c"); } +test { try parseIDNAPass("www.\xe0\xb7\x81\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x93.com", "www.xn--10cl1a0b660p.com"); } +test { try parseIDNAPass("WWW.\xe0\xb7\x81\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x93.COM", "www.xn--10cl1a0b660p.com"); } +test { try parseIDNAPass("Www.\xe0\xb7\x81\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x93.com", "www.xn--10cl1a0b660p.com"); } +test { try parseIDNAPass("www.xn--10cl1a0b.com", "www.xn--10cl1a0b.com"); } +test { try parseIDNAPass("www.\xe0\xb7\x81\xe0\xb7\x8a\xe0\xb6\xbb\xe0\xb7\x93.com", "www.xn--10cl1a0b.com"); } +test { try parseIDNAPass("WWW.\xe0\xb7\x81\xe0\xb7\x8a\xe0\xb6\xbb\xe0\xb7\x93.COM", "www.xn--10cl1a0b.com"); } +test { try parseIDNAPass("Www.\xe0\xb7\x81\xe0\xb7\x8a\xe0\xb6\xbb\xe0\xb7\x93.com", "www.xn--10cl1a0b.com"); } +test { try parseIDNAPass("www.xn--10cl1a0b660p.com", "www.xn--10cl1a0b660p.com"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xe2\x80\x8c\xd8\xa7\xdb\x8c", "xn--mgba3gch31f060k"); } +test { try parseIDNAPass("xn--mgba3gch31f", "xn--mgba3gch31f"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xd8\xa7\xdb\x8c", "xn--mgba3gch31f"); } +test { try parseIDNAPass("xn--mgba3gch31f060k", "xn--mgba3gch31f060k"); } +test { try parseIDNAPass("xn--mgba3gch31f060k.com", "xn--mgba3gch31f060k.com"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xe2\x80\x8c\xd8\xa7\xdb\x8c.com", "xn--mgba3gch31f060k.com"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xe2\x80\x8c\xd8\xa7\xdb\x8c.COM", "xn--mgba3gch31f060k.com"); } +test { try parseIDNAPass("xn--mgba3gch31f.com", "xn--mgba3gch31f.com"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xd8\xa7\xdb\x8c.com", "xn--mgba3gch31f.com"); } +test { try parseIDNAPass("\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xd8\xa7\xdb\x8c.COM", "xn--mgba3gch31f.com"); } +test { try parseIDNAPass("a.b\xef\xbc\x8ec\xe3\x80\x82d\xef\xbd\xa1", "a.b.c.d."); } +test { try parseIDNAPass("a.b.c\xe3\x80\x82d\xe3\x80\x82", "a.b.c.d."); } +test { try parseIDNAPass("A.B.C\xe3\x80\x82D\xe3\x80\x82", "a.b.c.d."); } +test { try parseIDNAPass("A.b.c\xe3\x80\x82D\xe3\x80\x82", "a.b.c.d."); } +test { try parseIDNAPass("a.b.c.d.", "a.b.c.d."); } +test { try parseIDNAPass("A.B\xef\xbc\x8eC\xe3\x80\x82D\xef\xbd\xa1", "a.b.c.d."); } +test { try parseIDNAPass("A.b\xef\xbc\x8ec\xe3\x80\x82D\xef\xbd\xa1", "a.b.c.d."); } +test { try parseIDNAPass("U\xcc\x88.xn--tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\x9c.xn--tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\xbc.xn--tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("u\xcc\x88.xn--tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("U\xcc\x88.XN--TDA", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\x9c.XN--TDA", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\x9c.xn--Tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("U\xcc\x88.xn--Tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("xn--tda.xn--tda", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\xbc.\xc3\xbc", "xn--tda.xn--tda"); } +test { try parseIDNAPass("u\xcc\x88.u\xcc\x88", "xn--tda.xn--tda"); } +test { try parseIDNAPass("U\xcc\x88.U\xcc\x88", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\x9c.\xc3\x9c", "xn--tda.xn--tda"); } +test { try parseIDNAPass("\xc3\x9c.\xc3\xbc", "xn--tda.xn--tda"); } +test { try parseIDNAPass("U\xcc\x88.u\xcc\x88", "xn--tda.xn--tda"); } +test { try parseIDNAPass("a1.com", "a1.com"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82\xef\xbc\xaa\xef\xbc\xb0", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82JP", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82jp", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82Jp", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("xn--wgv71a119e.jp", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e.jp", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e.JP", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e.Jp", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82\xef\xbd\x8a\xef\xbd\x90", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\xe3\x80\x82\xef\xbc\xaa\xef\xbd\x90", "xn--wgv71a119e.jp"); } +test { try parseIDNAPass("\xe2\x98\x95", "xn--53h"); } +test { try parseIDNAPass("xn--53h", "xn--53h"); } +test { try parseIDNAPass("1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.assbcssssssssd\xcf\x83\xcf\x83ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\xc5\x9dssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.assbcssssssssd\xcf\x83\xcf\x83ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\xcc\x82ssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.ASSBCSSSSSSSSD\xce\xa3\xce\xa3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\xcc\x82SSZ", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.ASSBCSSSSSSSSD\xce\xa3\xce\xa3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSS\xc5\x9cSSZ", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.Assbcssssssssd\xcf\x83\xcf\x83ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\xc5\x9dssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("1.Assbcssssssssd\xcf\x83\xcf\x83ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\xcc\x82ssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); } +test { try parseIDNAPass("xn--bss", "xn--bss"); } +test { try parseIDNAPass("\xe5\xa4\x99", "xn--bss"); } +test { try parseIDNAPass("\xcb\xa3\xcd\x8f\xe2\x84\x95\xe2\x80\x8b\xef\xb9\xa3\xc2\xad\xef\xbc\x8d\xe1\xa0\x8c\xe2\x84\xac\xef\xb8\x80\xc5\xbf\xe2\x81\xa4\xf0\x9d\x94\xb0\xf3\xa0\x87\xaf\xef\xac\x84", "xn--bssffl"); } +test { try parseIDNAPass("x\xcd\x8fN\xe2\x80\x8b-\xc2\xad-\xe1\xa0\x8cB\xef\xb8\x80s\xe2\x81\xa4s\xf3\xa0\x87\xafffl", "xn--bssffl"); } +test { try parseIDNAPass("x\xcd\x8fn\xe2\x80\x8b-\xc2\xad-\xe1\xa0\x8cb\xef\xb8\x80s\xe2\x81\xa4s\xf3\xa0\x87\xafffl", "xn--bssffl"); } +test { try parseIDNAPass("X\xcd\x8fN\xe2\x80\x8b-\xc2\xad-\xe1\xa0\x8cB\xef\xb8\x80S\xe2\x81\xa4S\xf3\xa0\x87\xafFFL", "xn--bssffl"); } +test { try parseIDNAPass("X\xcd\x8fn\xe2\x80\x8b-\xc2\xad-\xe1\xa0\x8cB\xef\xb8\x80s\xe2\x81\xa4s\xf3\xa0\x87\xafffl", "xn--bssffl"); } +test { try parseIDNAPass("xn--bssffl", "xn--bssffl"); } +test { try parseIDNAPass("\xe5\xa4\xa1\xe5\xa4\x9e\xe5\xa4\x9c\xe5\xa4\x99", "xn--bssffl"); } +test { try parseIDNAPass("\xcb\xa3\xcd\x8f\xe2\x84\x95\xe2\x80\x8b\xef\xb9\xa3\xc2\xad\xef\xbc\x8d\xe1\xa0\x8c\xe2\x84\xac\xef\xb8\x80S\xe2\x81\xa4\xf0\x9d\x94\xb0\xf3\xa0\x87\xafFFL", "xn--bssffl"); } +test { try parseIDNAPass("x\xcd\x8fN\xe2\x80\x8b-\xc2\xad-\xe1\xa0\x8cB\xef\xb8\x80S\xe2\x81\xa4s\xf3\xa0\x87\xafFFL", "xn--bssffl"); } +test { try parseIDNAPass("\xcb\xa3\xcd\x8f\xe2\x84\x95\xe2\x80\x8b\xef\xb9\xa3\xc2\xad\xef\xbc\x8d\xe1\xa0\x8c\xe2\x84\xac\xef\xb8\x80s\xe2\x81\xa4\xf0\x9d\x94\xb0\xf3\xa0\x87\xafffl", "xn--bssffl"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("\xc3\xa41234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); } +test { try parseIDNAPass("a\xcc\x881234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); } +test { try parseIDNAPass("A\xcc\x881234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); } +test { try parseIDNAPass("\xc3\x841234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); } +test { try parseIDNAPass("xn--1234567890123456789012345678901234567890123456789012345-9te", "xn--1234567890123456789012345678901234567890123456789012345-9te"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\xa41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("a.b..-q--a-.e", "a.b..-q--a-.e"); } +test { try parseIDNAPass("a.b..-q--\xc3\xa4-.e", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("a.b..-q--a\xcc\x88-.e", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("A.B..-Q--A\xcc\x88-.E", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("A.B..-Q--\xc3\x84-.E", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("A.b..-Q--\xc3\x84-.E", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("A.b..-Q--A\xcc\x88-.E", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("a.b..xn---q----jra.e", "a.b..xn---q----jra.e"); } +test { try parseIDNAPass("a..c", "a..c"); } +test { try parseIDNAPass("a.-b.", "a.-b."); } +test { try parseIDNAPass("a.b-.c", "a.b-.c"); } +test { try parseIDNAPass("a.-.c", "a.-.c"); } +test { try parseIDNAPass("a.bc--de.f", "a.bc--de.f"); } +test { try parseIDNAPass("\xc3\xa4.\xc2\xad.c", "xn--4ca..c"); } +test { try parseIDNAPass("a\xcc\x88.\xc2\xad.c", "xn--4ca..c"); } +test { try parseIDNAPass("A\xcc\x88.\xc2\xad.C", "xn--4ca..c"); } +test { try parseIDNAPass("\xc3\x84.\xc2\xad.C", "xn--4ca..c"); } +test { try parseIDNAPass("xn--4ca..c", "xn--4ca..c"); } +test { try parseIDNAPass("\xc3\xa4.-b.", "xn--4ca.-b."); } +test { try parseIDNAPass("a\xcc\x88.-b.", "xn--4ca.-b."); } +test { try parseIDNAPass("A\xcc\x88.-B.", "xn--4ca.-b."); } +test { try parseIDNAPass("\xc3\x84.-B.", "xn--4ca.-b."); } +test { try parseIDNAPass("xn--4ca.-b.", "xn--4ca.-b."); } +test { try parseIDNAPass("\xc3\xa4.b-.c", "xn--4ca.b-.c"); } +test { try parseIDNAPass("a\xcc\x88.b-.c", "xn--4ca.b-.c"); } +test { try parseIDNAPass("A\xcc\x88.B-.C", "xn--4ca.b-.c"); } +test { try parseIDNAPass("\xc3\x84.B-.C", "xn--4ca.b-.c"); } +test { try parseIDNAPass("\xc3\x84.b-.C", "xn--4ca.b-.c"); } +test { try parseIDNAPass("A\xcc\x88.b-.C", "xn--4ca.b-.c"); } +test { try parseIDNAPass("xn--4ca.b-.c", "xn--4ca.b-.c"); } +test { try parseIDNAPass("\xc3\xa4.-.c", "xn--4ca.-.c"); } +test { try parseIDNAPass("a\xcc\x88.-.c", "xn--4ca.-.c"); } +test { try parseIDNAPass("A\xcc\x88.-.C", "xn--4ca.-.c"); } +test { try parseIDNAPass("\xc3\x84.-.C", "xn--4ca.-.c"); } +test { try parseIDNAPass("xn--4ca.-.c", "xn--4ca.-.c"); } +test { try parseIDNAPass("\xc3\xa4.bc--de.f", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("a\xcc\x88.bc--de.f", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("A\xcc\x88.BC--DE.F", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("\xc3\x84.BC--DE.F", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("\xc3\x84.bc--De.f", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("A\xcc\x88.bc--De.f", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("xn--4ca.bc--de.f", "xn--4ca.bc--de.f"); } +test { try parseIDNAPass("A0", "a0"); } +test { try parseIDNAPass("0A", "0a"); } +test { try parseIDNAPass("\xd7\x90\xd7\x87", "xn--vdbr"); } +test { try parseIDNAPass("xn--vdbr", "xn--vdbr"); } +test { try parseIDNAPass("\xd7\x909\xd7\x87", "xn--9-ihcz"); } +test { try parseIDNAPass("xn--9-ihcz", "xn--9-ihcz"); } +test { try parseIDNAPass("\xd7\x90\xd7\xaa", "xn--4db6c"); } +test { try parseIDNAPass("xn--4db6c", "xn--4db6c"); } +test { try parseIDNAPass("\xd7\x90\xd7\xb3\xd7\xaa", "xn--4db6c0a"); } +test { try parseIDNAPass("xn--4db6c0a", "xn--4db6c0a"); } +test { try parseIDNAPass("\xd7\x907\xd7\xaa", "xn--7-zhc3f"); } +test { try parseIDNAPass("xn--7-zhc3f", "xn--7-zhc3f"); } +test { try parseIDNAPass("\xd7\x90\xd9\xa7\xd7\xaa", "xn--4db6c6t"); } +test { try parseIDNAPass("xn--4db6c6t", "xn--4db6c6t"); } +test { try parseIDNAPass("\xe0\xae\xb9\xe0\xaf\x8d\xe2\x80\x8d", "xn--dmc4b194h"); } +test { try parseIDNAPass("xn--dmc4b", "xn--dmc4b"); } +test { try parseIDNAPass("\xe0\xae\xb9\xe0\xaf\x8d", "xn--dmc4b"); } +test { try parseIDNAPass("xn--dmc4b194h", "xn--dmc4b194h"); } +test { try parseIDNAPass("xn--dmc", "xn--dmc"); } +test { try parseIDNAPass("\xe0\xae\xb9", "xn--dmc"); } +test { try parseIDNAPass("\xe0\xae\xb9\xe0\xaf\x8d\xe2\x80\x8c", "xn--dmc4by94h"); } +test { try parseIDNAPass("xn--dmc4by94h", "xn--dmc4by94h"); } +test { try parseIDNAPass("\xd9\x84\xd9\xb0\xe2\x80\x8c\xdb\xad\xdb\xaf", "xn--ghb2gxqia7523a"); } +test { try parseIDNAPass("xn--ghb2gxqia", "xn--ghb2gxqia"); } +test { try parseIDNAPass("\xd9\x84\xd9\xb0\xdb\xad\xdb\xaf", "xn--ghb2gxqia"); } +test { try parseIDNAPass("xn--ghb2gxqia7523a", "xn--ghb2gxqia7523a"); } +test { try parseIDNAPass("\xd9\x84\xd9\xb0\xe2\x80\x8c\xdb\xaf", "xn--ghb2g3qq34f"); } +test { try parseIDNAPass("xn--ghb2g3q", "xn--ghb2g3q"); } +test { try parseIDNAPass("\xd9\x84\xd9\xb0\xdb\xaf", "xn--ghb2g3q"); } +test { try parseIDNAPass("xn--ghb2g3qq34f", "xn--ghb2g3qq34f"); } +test { try parseIDNAPass("\xd9\x84\xe2\x80\x8c\xdb\xad\xdb\xaf", "xn--ghb25aga828w"); } +test { try parseIDNAPass("xn--ghb25aga", "xn--ghb25aga"); } +test { try parseIDNAPass("\xd9\x84\xdb\xad\xdb\xaf", "xn--ghb25aga"); } +test { try parseIDNAPass("xn--ghb25aga828w", "xn--ghb25aga828w"); } +test { try parseIDNAPass("\xd9\x84\xe2\x80\x8c\xdb\xaf", "xn--ghb65a953d"); } +test { try parseIDNAPass("xn--ghb65a", "xn--ghb65a"); } +test { try parseIDNAPass("\xd9\x84\xdb\xaf", "xn--ghb65a"); } +test { try parseIDNAPass("xn--ghb65a953d", "xn--ghb65a953d"); } +test { try parseIDNAPass("xn--ghb2gxq", "xn--ghb2gxq"); } +test { try parseIDNAPass("\xd9\x84\xd9\xb0\xdb\xad", "xn--ghb2gxq"); } +test { try parseIDNAPass("xn--cmba", "xn--cmba"); } +test { try parseIDNAPass("\xdb\xaf\xdb\xaf", "xn--cmba"); } +test { try parseIDNAPass("xn--ghb", "xn--ghb"); } +test { try parseIDNAPass("\xd9\x84", "xn--ghb"); } +test { try parseIDNAPass("a\xe3\x80\x82\xe3\x80\x82b", "a..b"); } +test { try parseIDNAPass("A\xe3\x80\x82\xe3\x80\x82B", "a..b"); } +test { try parseIDNAPass("a..b", "a..b"); } +test { try parseIDNAPass("..xn--skb", "..xn--skb"); } +test { try parseIDNAPass("$", "$"); } +test { try parseIDNAPass("\xe2\x91\xb7.four", "(4).four"); } +test { try parseIDNAPass("(4).four", "(4).four"); } +test { try parseIDNAPass("\xe2\x91\xb7.FOUR", "(4).four"); } +test { try parseIDNAPass("\xe2\x91\xb7.Four", "(4).four"); } +test { try parseIDNAPass("ascii", "ascii"); } +test { try parseIDNAPass("unicode.org", "unicode.org"); } +test { try parseIDNAPass("\xef\xa5\x91\xf0\xaf\xa1\xa8\xf0\xaf\xa1\xb4\xf0\xaf\xa4\x9f\xf0\xaf\xa5\x9f\xf0\xaf\xa6\xbf", "xn--snl253bgitxhzwu2arn60c"); } +test { try parseIDNAPass("\xe9\x99\x8b\xe3\x9b\xbc\xe5\xbd\x93\xf0\xa4\x8e\xab\xe7\xab\xae\xe4\x97\x97", "xn--snl253bgitxhzwu2arn60c"); } +test { try parseIDNAPass("xn--snl253bgitxhzwu2arn60c", "xn--snl253bgitxhzwu2arn60c"); } +test { try parseIDNAPass("\xe9\x9b\xbb\xf0\xa1\x8d\xaa\xe5\xbc\xb3\xe4\x8e\xab\xe7\xaa\xae\xe4\xb5\x97", "xn--kbo60w31ob3z6t3av9z5b"); } +test { try parseIDNAPass("xn--kbo60w31ob3z6t3av9z5b", "xn--kbo60w31ob3z6t3av9z5b"); } +test { try parseIDNAPass("xn--A-1ga", "xn--a-1ga"); } +test { try parseIDNAPass("a\xc3\xb6", "xn--a-1ga"); } +test { try parseIDNAPass("ao\xcc\x88", "xn--a-1ga"); } +test { try parseIDNAPass("AO\xcc\x88", "xn--a-1ga"); } +test { try parseIDNAPass("A\xc3\x96", "xn--a-1ga"); } +test { try parseIDNAPass("A\xc3\xb6", "xn--a-1ga"); } +test { try parseIDNAPass("Ao\xcc\x88", "xn--a-1ga"); } +test { try parseIDNAPass("\xef\xbc\x9d\xcc\xb8", "xn--1ch"); } +test { try parseIDNAPass("\xe2\x89\xa0", "xn--1ch"); } +test { try parseIDNAPass("=\xcc\xb8", "xn--1ch"); } +test { try parseIDNAPass("xn--1ch", "xn--1ch"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x88123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x84123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\xcc\x881234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc3\x841234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); } +test { try parseIDNAPass("\xea\xa1\xa3.\xdf\x8f", "xn--8c9a.xn--qsb"); } +test { try parseIDNAPass("xn--8c9a.xn--qsb", "xn--8c9a.xn--qsb"); } +test { try parseIDNAPass("xn--jbf911clb.xn----p9j493ivi4l", "xn--jbf911clb.xn----p9j493ivi4l"); } +test { try parseIDNAPass("\xe2\x89\xa0\xe1\xa2\x99\xe2\x89\xaf.\xec\x86\xa3-\xe1\xa1\xb4\xe2\xb4\x80", "xn--jbf911clb.xn----p9j493ivi4l"); } +test { try parseIDNAPass("=\xcc\xb8\xe1\xa2\x99>\xcc\xb8.\xe1\x84\x89\xe1\x85\xa9\xe1\x86\xbe-\xe1\xa1\xb4\xe2\xb4\x80", "xn--jbf911clb.xn----p9j493ivi4l"); } +test { try parseIDNAPass("=\xcc\xb8\xe1\xa2\x99>\xcc\xb8.\xe1\x84\x89\xe1\x85\xa9\xe1\x86\xbe-\xe1\xa1\xb4\xe1\x82\xa0", "xn--jbf911clb.xn----p9j493ivi4l"); } +test { try parseIDNAPass("\xe2\x89\xa0\xe1\xa2\x99\xe2\x89\xaf.\xec\x86\xa3-\xe1\xa1\xb4\xe1\x82\xa0", "xn--jbf911clb.xn----p9j493ivi4l"); } +test { try parseIDNAPass("xn--gl0as212a.i.", "xn--gl0as212a.i."); } +test { try parseIDNAPass("\xe7\xb9\xb1\xf0\x91\x96\xbf.i.", "xn--gl0as212a.i."); } +test { try parseIDNAPass("\xe7\xb9\xb1\xf0\x91\x96\xbf.I.", "xn--gl0as212a.i."); } +test { try parseIDNAPass("xn--1ug6928ac48e.i.", "xn--1ug6928ac48e.i."); } +test { try parseIDNAPass("\xe7\xb9\xb1\xf0\x91\x96\xbf\xe2\x80\x8d.i.", "xn--1ug6928ac48e.i."); } +test { try parseIDNAPass("\xe7\xb9\xb1\xf0\x91\x96\xbf\xe2\x80\x8d.I.", "xn--1ug6928ac48e.i."); } +test { try parseIDNAPass("xn--ss-59d.", "xn--ss-59d."); } +test { try parseIDNAPass("ss\xdb\xab.", "xn--ss-59d."); } +test { try parseIDNAPass("SS\xdb\xab.", "xn--ss-59d."); } +test { try parseIDNAPass("Ss\xdb\xab.", "xn--ss-59d."); } +test { try parseIDNAPass("\xf0\x9e\xa4\xb7.\xf0\x90\xae\x90\xf0\x9e\xa2\x81\xf0\x90\xb9\xa0\xd8\xa4", "xn--ve6h.xn--jgb1694kz0b2176a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xb7.\xf0\x90\xae\x90\xf0\x9e\xa2\x81\xf0\x90\xb9\xa0\xd9\x88\xd9\x94", "xn--ve6h.xn--jgb1694kz0b2176a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x95.\xf0\x90\xae\x90\xf0\x9e\xa2\x81\xf0\x90\xb9\xa0\xd9\x88\xd9\x94", "xn--ve6h.xn--jgb1694kz0b2176a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x95.\xf0\x90\xae\x90\xf0\x9e\xa2\x81\xf0\x90\xb9\xa0\xd8\xa4", "xn--ve6h.xn--jgb1694kz0b2176a"); } +test { try parseIDNAPass("xn--ve6h.xn--jgb1694kz0b2176a", "xn--ve6h.xn--jgb1694kz0b2176a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5\xf3\xa0\x85\xae\xef\xbc\x8e\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5\xf3\xa0\x85\xae.\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5\xf3\xa0\x85\xae.\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83\xf3\xa0\x85\xae.\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83\xf3\xa0\x85\xae.\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("xn--de6h.xn--37e857h", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5.\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83.\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83.\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5\xf3\xa0\x85\xae\xef\xbc\x8e\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83\xf3\xa0\x85\xae\xef\xbc\x8e\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x83\xf3\xa0\x85\xae\xef\xbc\x8e\xe1\xa1\x84\xe2\xb4\x8e", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa5.\xe1\xa1\x84\xe1\x82\xae", "xn--de6h.xn--37e857h"); } +test { try parseIDNAPass("xn--ej0b.xn----d87b", "xn--ej0b.xn----d87b"); } +test { try parseIDNAPass("xn----1fa1788k.", "xn----1fa1788k."); } +test { try parseIDNAPass("xn--9ob.xn--4xa", "xn--9ob.xn--4xa"); } +test { try parseIDNAPass("\xdd\x96.\xcf\x83", "xn--9ob.xn--4xa"); } +test { try parseIDNAPass("\xdd\x96.\xce\xa3", "xn--9ob.xn--4xa"); } +test { try parseIDNAPass("\xc3\x9f\xef\xbd\xa1\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("\xc3\x9f\xe3\x80\x82\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("\xc3\x9f\xe3\x80\x82\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("SS\xe3\x80\x82\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("ss\xe3\x80\x82\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("Ss\xe3\x80\x82\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("ss.xn--lgd921mvv0m", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("ss.\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("SS.\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("Ss.\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("xn--zca.xn--lgd921mvv0m", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("\xc3\x9f.\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("\xc3\x9f\xef\xbd\xa1\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "xn--zca.xn--lgd921mvv0m"); } +test { try parseIDNAPass("SS\xef\xbd\xa1\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("ss\xef\xbd\xa1\xf0\x90\x8b\xb3\xe2\xb4\x8c\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("Ss\xef\xbd\xa1\xf0\x90\x8b\xb3\xe1\x82\xac\xe0\xbe\xb8", "ss.xn--lgd921mvv0m"); } +test { try parseIDNAPass("\xe1\x9a\xad\xef\xbd\xa1\xf0\x9d\x8c\xa0\xc3\x9f\xf0\x96\xab\xb1", "xn--hwe.xn--zca4946pblnc"); } +test { try parseIDNAPass("\xe1\x9a\xad\xe3\x80\x82\xf0\x9d\x8c\xa0\xc3\x9f\xf0\x96\xab\xb1", "xn--hwe.xn--zca4946pblnc"); } +test { try parseIDNAPass("\xe1\x9a\xad\xe3\x80\x82\xf0\x9d\x8c\xa0SS\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad\xe3\x80\x82\xf0\x9d\x8c\xa0ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad\xe3\x80\x82\xf0\x9d\x8c\xa0Ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("xn--hwe.xn--ss-ci1ub261a", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad.\xf0\x9d\x8c\xa0ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad.\xf0\x9d\x8c\xa0SS\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad.\xf0\x9d\x8c\xa0Ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("xn--hwe.xn--zca4946pblnc", "xn--hwe.xn--zca4946pblnc"); } +test { try parseIDNAPass("\xe1\x9a\xad.\xf0\x9d\x8c\xa0\xc3\x9f\xf0\x96\xab\xb1", "xn--hwe.xn--zca4946pblnc"); } +test { try parseIDNAPass("\xe1\x9a\xad\xef\xbd\xa1\xf0\x9d\x8c\xa0SS\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad\xef\xbd\xa1\xf0\x9d\x8c\xa0ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("\xe1\x9a\xad\xef\xbd\xa1\xf0\x9d\x8c\xa0Ss\xf0\x96\xab\xb1", "xn--hwe.xn--ss-ci1ub261a"); } +test { try parseIDNAPass("xn--09e4694e..xn--ye6h", "xn--09e4694e..xn--ye6h"); } +test { try parseIDNAPass("xn--1-o7j0610f..xn----381i", "xn--1-o7j0610f..xn----381i"); } +test { try parseIDNAPass("1.xn----zw5a.xn--kp5b", "1.xn----zw5a.xn--kp5b"); } +test { try parseIDNAPass("-\xf0\x90\x8b\xb7\xf0\x96\xbe\x91\xe3\x80\x82\xf3\xa0\x86\xac", "xn----991iq40y."); } +test { try parseIDNAPass("xn----991iq40y.", "xn----991iq40y."); } +test { try parseIDNAPass(".xn--hdh", ".xn--hdh"); } +test { try parseIDNAPass("\xf0\x9e\xa5\x93\xef\xbc\x8e\xdc\x98", "xn--of6h.xn--inb"); } +test { try parseIDNAPass("\xf0\x9e\xa5\x93.\xdc\x98", "xn--of6h.xn--inb"); } +test { try parseIDNAPass("xn--of6h.xn--inb", "xn--of6h.xn--inb"); } +test { try parseIDNAPass("\xf3\xa0\x84\xbd-\xef\xbc\x8e-\xe0\xb7\x8a", "-.xn----ptf"); } +test { try parseIDNAPass("\xf3\xa0\x84\xbd-.-\xe0\xb7\x8a", "-.xn----ptf"); } +test { try parseIDNAPass("-.xn----ptf", "-.xn----ptf"); } +test { try parseIDNAPass("\xe1\x82\xba\xf0\x90\x8b\xb8\xf3\xa0\x84\x84\xe3\x80\x82\xf0\x9d\x9f\x9d\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe1\x82\xba\xf0\x90\x8b\xb8\xf3\xa0\x84\x84\xe3\x80\x825\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe2\xb4\x9a\xf0\x90\x8b\xb8\xf3\xa0\x84\x84\xe3\x80\x825\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("xn--ilj2659d.xn--5-dug9054m", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe2\xb4\x9a\xf0\x90\x8b\xb8.5\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe1\x82\xba\xf0\x90\x8b\xb8.5\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe2\xb4\x9a\xf0\x90\x8b\xb8\xf3\xa0\x84\x84\xe3\x80\x82\xf0\x9d\x9f\x9d\xed\x9f\xb6\xe1\x80\xba", "xn--ilj2659d.xn--5-dug9054m"); } +test { try parseIDNAPass("\xe2\x89\xa0.\xe1\xa0\xbf", "xn--1ch.xn--y7e"); } +test { try parseIDNAPass("=\xcc\xb8.\xe1\xa0\xbf", "xn--1ch.xn--y7e"); } +test { try parseIDNAPass("xn--1ch.xn--y7e", "xn--1ch.xn--y7e"); } +test { try parseIDNAPass("\xdc\xa3\xd6\xa3\xef\xbd\xa1\xe3\x8c\xaa", "xn--ucb18e.xn--eck4c5a"); } +test { try parseIDNAPass("\xdc\xa3\xd6\xa3\xe3\x80\x82\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84", "xn--ucb18e.xn--eck4c5a"); } +test { try parseIDNAPass("xn--ucb18e.xn--eck4c5a", "xn--ucb18e.xn--eck4c5a"); } +test { try parseIDNAPass("\xdc\xa3\xd6\xa3.\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84", "xn--ucb18e.xn--eck4c5a"); } +test { try parseIDNAPass("xn--skb", "xn--skb"); } +test { try parseIDNAPass("\xda\xb9", "xn--skb"); } +test { try parseIDNAPass("\xe2\x89\xaf1.\xe3\x80\x82\xc3\x9f", "xn--1-ogo..xn--zca"); } +test { try parseIDNAPass(">\xcc\xb81.\xe3\x80\x82\xc3\x9f", "xn--1-ogo..xn--zca"); } +test { try parseIDNAPass(">\xcc\xb81.\xe3\x80\x82SS", "xn--1-ogo..ss"); } +test { try parseIDNAPass("\xe2\x89\xaf1.\xe3\x80\x82SS", "xn--1-ogo..ss"); } +test { try parseIDNAPass("\xe2\x89\xaf1.\xe3\x80\x82ss", "xn--1-ogo..ss"); } +test { try parseIDNAPass(">\xcc\xb81.\xe3\x80\x82ss", "xn--1-ogo..ss"); } +test { try parseIDNAPass(">\xcc\xb81.\xe3\x80\x82Ss", "xn--1-ogo..ss"); } +test { try parseIDNAPass("\xe2\x89\xaf1.\xe3\x80\x82Ss", "xn--1-ogo..ss"); } +test { try parseIDNAPass("xn--1-ogo..ss", "xn--1-ogo..ss"); } +test { try parseIDNAPass("xn--1-ogo..xn--zca", "xn--1-ogo..xn--zca"); } +test { try parseIDNAPass(".xn--1ch", ".xn--1ch"); } +test { try parseIDNAPass("\xea\xa1\x86\xe3\x80\x82\xe2\x86\x83\xe0\xbe\xb5\xeb\x86\xae-", "xn--fc9a.xn----qmg097k469k"); } +test { try parseIDNAPass("\xea\xa1\x86\xe3\x80\x82\xe2\x86\x83\xe0\xbe\xb5\xe1\x84\x82\xe1\x85\xaa\xe1\x87\x81-", "xn--fc9a.xn----qmg097k469k"); } +test { try parseIDNAPass("\xea\xa1\x86\xe3\x80\x82\xe2\x86\x84\xe0\xbe\xb5\xe1\x84\x82\xe1\x85\xaa\xe1\x87\x81-", "xn--fc9a.xn----qmg097k469k"); } +test { try parseIDNAPass("\xea\xa1\x86\xe3\x80\x82\xe2\x86\x84\xe0\xbe\xb5\xeb\x86\xae-", "xn--fc9a.xn----qmg097k469k"); } +test { try parseIDNAPass("xn--fc9a.xn----qmg097k469k", "xn--fc9a.xn----qmg097k469k"); } +test { try parseIDNAPass("\xc3\x9f\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa08\xe2\x82\x85", "xn--zca266bwrr.xn--85-psd"); } +test { try parseIDNAPass("\xc3\x9f\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa085", "xn--zca266bwrr.xn--85-psd"); } +test { try parseIDNAPass("SS\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("ss\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("Ss\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("xn--ss-e2f077r.xn--85-psd", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("ss\xe0\xa7\x81\xe1\xb7\xad.\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("SS\xe0\xa7\x81\xe1\xb7\xad.\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("Ss\xe0\xa7\x81\xe1\xb7\xad.\xd8\xa085", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("xn--zca266bwrr.xn--85-psd", "xn--zca266bwrr.xn--85-psd"); } +test { try parseIDNAPass("\xc3\x9f\xe0\xa7\x81\xe1\xb7\xad.\xd8\xa085", "xn--zca266bwrr.xn--85-psd"); } +test { try parseIDNAPass("SS\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa08\xe2\x82\x85", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("ss\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa08\xe2\x82\x85", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("Ss\xe0\xa7\x81\xe1\xb7\xad\xe3\x80\x82\xd8\xa08\xe2\x82\x85", "xn--ss-e2f077r.xn--85-psd"); } +test { try parseIDNAPass("\xef\xb8\x8d\xe0\xaa\x9b\xe3\x80\x82\xe5\xb5\xa8", "xn--6dc.xn--tot"); } +test { try parseIDNAPass("xn--6dc.xn--tot", "xn--6dc.xn--tot"); } +test { try parseIDNAPass("\xe0\xaa\x9b.\xe5\xb5\xa8", "xn--6dc.xn--tot"); } +test { try parseIDNAPass("\xef\xb8\x85\xe3\x80\x82\xe3\x80\x82\xf0\xa6\x80\xbe\xe1\xb3\xa0", "..xn--t6f5138v"); } +test { try parseIDNAPass("..xn--t6f5138v", "..xn--t6f5138v"); } +test { try parseIDNAPass("xn--t6f5138v", "xn--t6f5138v"); } +test { try parseIDNAPass("\xf0\xa6\x80\xbe\xe1\xb3\xa0", "xn--t6f5138v"); } +test { try parseIDNAPass("xn--p8e.xn--1ch3a7084l", "xn--p8e.xn--1ch3a7084l"); } +test { try parseIDNAPass("\xe1\xa1\x99.\xe2\x89\xaf\xf0\x90\x8b\xb2\xe2\x89\xa0", "xn--p8e.xn--1ch3a7084l"); } +test { try parseIDNAPass("\xe1\xa1\x99.>\xcc\xb8\xf0\x90\x8b\xb2=\xcc\xb8", "xn--p8e.xn--1ch3a7084l"); } +test { try parseIDNAPass("-3.xn--fbf115j", "-3.xn--fbf115j"); } +test { try parseIDNAPass("xn--u4e969b.xn--1ch", "xn--u4e969b.xn--1ch"); } +test { try parseIDNAPass("\xe2\x85\x8e\xe1\x9f\x92.\xe2\x89\xa0", "xn--u4e969b.xn--1ch"); } +test { try parseIDNAPass("\xe2\x85\x8e\xe1\x9f\x92.=\xcc\xb8", "xn--u4e969b.xn--1ch"); } +test { try parseIDNAPass("\xe2\x84\xb2\xe1\x9f\x92.=\xcc\xb8", "xn--u4e969b.xn--1ch"); } +test { try parseIDNAPass("\xe2\x84\xb2\xe1\x9f\x92.\xe2\x89\xa0", "xn--u4e969b.xn--1ch"); } +test { try parseIDNAPass("xn----zmb.1-", "xn----zmb.1-"); } +test { try parseIDNAPass("xn--8,-g9oy26fzu4d.xn--kmb6733w", "xn--8,-g9oy26fzu4d.xn--kmb6733w"); } +test { try parseIDNAPass("xn--9-mfs8024b.", "xn--9-mfs8024b."); } +test { try parseIDNAPass("9\xe9\x9a\x81\xe2\xaf\xae.", "xn--9-mfs8024b."); } +test { try parseIDNAPass("xn--2ib43l.xn--te6h", "xn--2ib43l.xn--te6h"); } +test { try parseIDNAPass("\xd9\xbd\xe0\xa5\x83.\xf0\x9e\xa4\xb5", "xn--2ib43l.xn--te6h"); } +test { try parseIDNAPass("\xd9\xbd\xe0\xa5\x83.\xf0\x9e\xa4\x93", "xn--2ib43l.xn--te6h"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x80\xe1\xae\xaa\xe0\xa3\xb6\xef\xbc\x8e\xeb\x88\xb5", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x80\xe1\xae\xaa\xe0\xa3\xb6\xef\xbc\x8e\xe1\x84\x82\xe1\x85\xaf\xe1\x86\xbc", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x80\xe1\xae\xaa\xe0\xa3\xb6.\xeb\x88\xb5", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x80\xe1\xae\xaa\xe0\xa3\xb6.\xe1\x84\x82\xe1\x85\xaf\xe1\x86\xbc", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x8f\xe1\xae\xaa\xe0\xa3\xb6.\xe1\x84\x82\xe1\x85\xaf\xe1\x86\xbc", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x8f\xe1\xae\xaa\xe0\xa3\xb6.\xeb\x88\xb5", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("xn--s5a04sn4u297k.xn--2e1b", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x8f\xe1\xae\xaa\xe0\xa3\xb6\xef\xbc\x8e\xe1\x84\x82\xe1\x85\xaf\xe1\x86\xbc", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("\xea\xa7\x90\xd3\x8f\xe1\xae\xaa\xe0\xa3\xb6\xef\xbc\x8e\xeb\x88\xb5", "xn--s5a04sn4u297k.xn--2e1b"); } +test { try parseIDNAPass("xn--9hb7344k.", "xn--9hb7344k."); } +test { try parseIDNAPass("\xf0\x90\xab\x87\xd9\xa1.", "xn--9hb7344k."); } +test { try parseIDNAPass("\xe1\xa1\x8c.\xe3\x80\x82\xe1\xa2\x91", "xn--c8e..xn--bbf"); } +test { try parseIDNAPass("xn--c8e..xn--bbf", "xn--c8e..xn--bbf"); } +test { try parseIDNAPass("\xe3\x80\x82\xe3\x80\x82\xe1\x82\xa3\xe2\x89\xaf", "..xn--hdh782b"); } +test { try parseIDNAPass("\xe3\x80\x82\xe3\x80\x82\xe1\x82\xa3>\xcc\xb8", "..xn--hdh782b"); } +test { try parseIDNAPass("\xe3\x80\x82\xe3\x80\x82\xe2\xb4\x83>\xcc\xb8", "..xn--hdh782b"); } +test { try parseIDNAPass("\xe3\x80\x82\xe3\x80\x82\xe2\xb4\x83\xe2\x89\xaf", "..xn--hdh782b"); } +test { try parseIDNAPass("..xn--hdh782b", "..xn--hdh782b"); } +test { try parseIDNAPass("\xdf\xa5.\xda\xb5", "xn--dtb.xn--okb"); } +test { try parseIDNAPass("xn--dtb.xn--okb", "xn--dtb.xn--okb"); } +test { try parseIDNAPass(".xn--3e6h", ".xn--3e6h"); } +test { try parseIDNAPass("xn--3e6h", "xn--3e6h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xbf", "xn--3e6h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x9d", "xn--3e6h"); } +test { try parseIDNAPass("\xda\xb9\xef\xbc\x8e\xe1\xa1\xb3\xe1\x85\x9f", "xn--skb.xn--g9e"); } +test { try parseIDNAPass("\xda\xb9.\xe1\xa1\xb3\xe1\x85\x9f", "xn--skb.xn--g9e"); } +test { try parseIDNAPass("xn--skb.xn--g9e", "xn--skb.xn--g9e"); } +test { try parseIDNAPass("\xda\xb9.\xe1\xa1\xb3", "xn--skb.xn--g9e"); } +test { try parseIDNAPass("\xe3\xa8\x9b\xf0\x98\xb1\x8e.\xe3\x80\x827\xe0\xb4\x81", "xn--mbm8237g..xn--7-7hf"); } +test { try parseIDNAPass("xn--mbm8237g..xn--7-7hf", "xn--mbm8237g..xn--7-7hf"); } +test { try parseIDNAPass("xn--ss-4epx629f.xn--ifh802b6a", "xn--ss-4epx629f.xn--ifh802b6a"); } +test { try parseIDNAPass("ss\xea\xab\xb6\xe1\xa2\xa5.\xe2\x8a\xb6\xe2\xb4\xa1\xe2\xb4\x96", "xn--ss-4epx629f.xn--ifh802b6a"); } +test { try parseIDNAPass("SS\xea\xab\xb6\xe1\xa2\xa5.\xe2\x8a\xb6\xe1\x83\x81\xe1\x82\xb6", "xn--ss-4epx629f.xn--ifh802b6a"); } +test { try parseIDNAPass("Ss\xea\xab\xb6\xe1\xa2\xa5.\xe2\x8a\xb6\xe1\x83\x81\xe2\xb4\x96", "xn--ss-4epx629f.xn--ifh802b6a"); } +test { try parseIDNAPass("-.", "-."); } +test { try parseIDNAPass("xn----zmb.xn--rlj2573p", "xn----zmb.xn--rlj2573p"); } +test { try parseIDNAPass("\xe2\x89\xa0\xe3\x80\x82\xf0\x9f\x9e\xb3\xf0\x9d\x9f\xb2", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("=\xcc\xb8\xe3\x80\x82\xf0\x9f\x9e\xb3\xf0\x9d\x9f\xb2", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("\xe2\x89\xa0\xe3\x80\x82\xf0\x9f\x9e\xb36", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("=\xcc\xb8\xe3\x80\x82\xf0\x9f\x9e\xb36", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("xn--1ch.xn--6-dl4s", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("\xe2\x89\xa0.\xf0\x9f\x9e\xb36", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass("=\xcc\xb8.\xf0\x9f\x9e\xb36", "xn--1ch.xn--6-dl4s"); } +test { try parseIDNAPass(".j", ".j"); } +test { try parseIDNAPass("j", "j"); } +test { try parseIDNAPass("xn--rt6a.", "xn--rt6a."); } +test { try parseIDNAPass("\xe9\xb1\x8a.", "xn--rt6a."); } +test { try parseIDNAPass("xn--4-0bd15808a.", "xn--4-0bd15808a."); } +test { try parseIDNAPass("\xf0\x9e\xa4\xba\xdf\x8c4.", "xn--4-0bd15808a."); } +test { try parseIDNAPass("\xf0\x9e\xa4\x98\xdf\x8c4.", "xn--4-0bd15808a."); } +test { try parseIDNAPass("-\xef\xbd\xa1\xe4\x8f\x9b", "-.xn--xco"); } +test { try parseIDNAPass("-\xe3\x80\x82\xe4\x8f\x9b", "-.xn--xco"); } +test { try parseIDNAPass("-.xn--xco", "-.xn--xco"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95\xe2\x89\xaf\xc3\x9f", "xn--tc1a.xn--5-qfa988w745i"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95>\xcc\xb8\xc3\x9f", "xn--tc1a.xn--5-qfa988w745i"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885\xe2\x89\xaf\xc3\x9f", "xn--tc1a.xn--5-qfa988w745i"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885>\xcc\xb8\xc3\x9f", "xn--tc1a.xn--5-qfa988w745i"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885>\xcc\xb8SS", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885\xe2\x89\xafSS", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885\xe2\x89\xafss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885>\xcc\xb8ss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885>\xcc\xb8Ss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe8\x88\x8c.\xea\xa1\x885\xe2\x89\xafSs", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("xn--tc1a.xn--5ss-3m2a5009e", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("xn--tc1a.xn--5-qfa988w745i", "xn--tc1a.xn--5-qfa988w745i"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95>\xcc\xb8SS", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95\xe2\x89\xafSS", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95\xe2\x89\xafss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95>\xcc\xb8ss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95>\xcc\xb8Ss", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xe2\xbe\x86\xef\xbc\x8e\xea\xa1\x88\xef\xbc\x95\xe2\x89\xafSs", "xn--tc1a.xn--5ss-3m2a5009e"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xaa.\xcf\x82", "xn--ie6h.xn--3xa"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x88.\xce\xa3", "xn--ie6h.xn--4xa"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xaa.\xcf\x83", "xn--ie6h.xn--4xa"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x88.\xcf\x83", "xn--ie6h.xn--4xa"); } +test { try parseIDNAPass("xn--ie6h.xn--4xa", "xn--ie6h.xn--4xa"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x88.\xcf\x82", "xn--ie6h.xn--3xa"); } +test { try parseIDNAPass("xn--ie6h.xn--3xa", "xn--ie6h.xn--3xa"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xaa.\xce\xa3", "xn--ie6h.xn--4xa"); } +test { try parseIDNAPass("xn--ilj.xn--4xa", "xn--ilj.xn--4xa"); } +test { try parseIDNAPass("\xe2\xb4\x9a.\xcf\x83", "xn--ilj.xn--4xa"); } +test { try parseIDNAPass("\xe1\x82\xba.\xce\xa3", "xn--ilj.xn--4xa"); } +test { try parseIDNAPass("\xe2\xb4\x9a.\xcf\x82", "xn--ilj.xn--3xa"); } +test { try parseIDNAPass("\xe1\x82\xba.\xcf\x82", "xn--ilj.xn--3xa"); } +test { try parseIDNAPass("xn--ilj.xn--3xa", "xn--ilj.xn--3xa"); } +test { try parseIDNAPass("\xe1\x82\xba.\xcf\x83", "xn--ilj.xn--4xa"); } +test { try parseIDNAPass("\xe6\xb7\xbd\xe3\x80\x82\xe1\xa0\xbe", "xn--34w.xn--x7e"); } +test { try parseIDNAPass("xn--34w.xn--x7e", "xn--34w.xn--x7e"); } +test { try parseIDNAPass("\xe6\xb7\xbd.\xe1\xa0\xbe", "xn--34w.xn--x7e"); } +test { try parseIDNAPass("..", ".."); } +test { try parseIDNAPass("xn---3-p9o.ss--", "xn---3-p9o.ss--"); } +test { try parseIDNAPass("51..xn--8-ogo", "51..xn--8-ogo"); } +test { try parseIDNAPass("\xea\xa1\xa0\xef\xbc\x8e\xdb\xb2", "xn--5c9a.xn--fmb"); } +test { try parseIDNAPass("\xea\xa1\xa0.\xdb\xb2", "xn--5c9a.xn--fmb"); } +test { try parseIDNAPass("xn--5c9a.xn--fmb", "xn--5c9a.xn--fmb"); } +test { try parseIDNAPass("1.2h", "1.2h"); } +test { try parseIDNAPass("xn--skjy82u.xn--gdh", "xn--skjy82u.xn--gdh"); } +test { try parseIDNAPass("\xe2\xb4\x81\xe7\x95\x9d.\xe2\x89\xae", "xn--skjy82u.xn--gdh"); } +test { try parseIDNAPass("\xe2\xb4\x81\xe7\x95\x9d.<\xcc\xb8", "xn--skjy82u.xn--gdh"); } +test { try parseIDNAPass("\xe1\x82\xa1\xe7\x95\x9d.<\xcc\xb8", "xn--skjy82u.xn--gdh"); } +test { try parseIDNAPass("\xe1\x82\xa1\xe7\x95\x9d.\xe2\x89\xae", "xn--skjy82u.xn--gdh"); } +test { try parseIDNAPass("\xf0\x9f\x95\xbc\xef\xbc\x8e\xef\xbe\xa0", "xn--my8h."); } +test { try parseIDNAPass("\xf0\x9f\x95\xbc.\xe1\x85\xa0", "xn--my8h."); } +test { try parseIDNAPass("xn--my8h.", "xn--my8h."); } +test { try parseIDNAPass("\xf0\x9f\x95\xbc.", "xn--my8h."); } +test { try parseIDNAPass("\xcf\x82\xe1\x83\x85\xe3\x80\x82\xdd\x9a", "xn--3xa403s.xn--epb"); } +test { try parseIDNAPass("\xcf\x82\xe2\xb4\xa5\xe3\x80\x82\xdd\x9a", "xn--3xa403s.xn--epb"); } +test { try parseIDNAPass("\xce\xa3\xe1\x83\x85\xe3\x80\x82\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("\xcf\x83\xe2\xb4\xa5\xe3\x80\x82\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("\xce\xa3\xe2\xb4\xa5\xe3\x80\x82\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("xn--4xa203s.xn--epb", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("\xcf\x83\xe2\xb4\xa5.\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("\xce\xa3\xe1\x83\x85.\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("\xce\xa3\xe2\xb4\xa5.\xdd\x9a", "xn--4xa203s.xn--epb"); } +test { try parseIDNAPass("xn--3xa403s.xn--epb", "xn--3xa403s.xn--epb"); } +test { try parseIDNAPass("\xcf\x82\xe2\xb4\xa5.\xdd\x9a", "xn--3xa403s.xn--epb"); } +test { try parseIDNAPass("xn--vkb.xn--08e172a", "xn--vkb.xn--08e172a"); } +test { try parseIDNAPass("\xda\xbc.\xe1\xba\x8f\xe1\xa1\xa4", "xn--vkb.xn--08e172a"); } +test { try parseIDNAPass("\xda\xbc.y\xcc\x87\xe1\xa1\xa4", "xn--vkb.xn--08e172a"); } +test { try parseIDNAPass("\xda\xbc.Y\xcc\x87\xe1\xa1\xa4", "xn--vkb.xn--08e172a"); } +test { try parseIDNAPass("\xda\xbc.\xe1\xba\x8e\xe1\xa1\xa4", "xn--vkb.xn--08e172a"); } +test { try parseIDNAPass("xn--pt9c.xn--0kjya", "xn--pt9c.xn--0kjya"); } +test { try parseIDNAPass("\xf0\x90\xa9\x97.\xe2\xb4\x89\xe2\xb4\x95", "xn--pt9c.xn--0kjya"); } +test { try parseIDNAPass("\xf0\x90\xa9\x97.\xe1\x82\xa9\xe1\x82\xb5", "xn--pt9c.xn--0kjya"); } +test { try parseIDNAPass("\xf0\x90\xa9\x97.\xe1\x82\xa9\xe2\xb4\x95", "xn--pt9c.xn--0kjya"); } +test { try parseIDNAPass("\xf0\xb2\xa4\xb120.\xe9\x9f\xb3.\xea\xa1\xa61.", "xn--20-9802c.xn--0w5a.xn--1-eg4e."); } +test { try parseIDNAPass("xn--20-9802c.xn--0w5a.xn--1-eg4e.", "xn--20-9802c.xn--0w5a.xn--1-eg4e."); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0\xe2\x89\xae\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0<\xcc\xb8\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe2\xb4\x95\xe3\x80\x82\xdb\xb0<\xcc\xb8\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe2\xb4\x95\xe3\x80\x82\xdb\xb0\xe2\x89\xae\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0\xe2\x89\xaeSS\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0<\xcc\xb8SS\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe2\xb4\x95\xe3\x80\x82\xdb\xb0<\xcc\xb8ss\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe2\xb4\x95\xe3\x80\x82\xdb\xb0\xe2\x89\xaess\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0\xe2\x89\xaeSs\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5\xe3\x80\x82\xdb\xb0<\xcc\xb8Ss\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("xn--dlj.xn--ss-jbe65aw27i", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe2\xb4\x95.\xdb\xb0\xe2\x89\xaess\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe2\xb4\x95.\xdb\xb0<\xcc\xb8ss\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5.\xdb\xb0<\xcc\xb8SS\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5.\xdb\xb0\xe2\x89\xaeSS\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5.\xdb\xb0\xe2\x89\xaeSs\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("\xe1\x82\xb5.\xdb\xb0<\xcc\xb8Ss\xdd\x85", "xn--dlj.xn--ss-jbe65aw27i"); } +test { try parseIDNAPass("xn--dlj.xn--zca912alh227g", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe2\xb4\x95.\xdb\xb0\xe2\x89\xae\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("\xe2\xb4\x95.\xdb\xb0<\xcc\xb8\xc3\x9f\xdd\x85", "xn--dlj.xn--zca912alh227g"); } +test { try parseIDNAPass("xn--ge6h.xn--oc9a", "xn--ge6h.xn--oc9a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xa8.\xea\xa1\x8f", "xn--ge6h.xn--oc9a"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x86.\xea\xa1\x8f", "xn--ge6h.xn--oc9a"); } +test { try parseIDNAPass(".xn--ss--bi1b", ".xn--ss--bi1b"); } +test { try parseIDNAPass("\xe9\xbd\x99--\xf0\x9d\x9f\xb0.\xc3\x9f", "xn----4-p16k.xn--zca"); } +test { try parseIDNAPass("\xe9\xbd\x99--4.\xc3\x9f", "xn----4-p16k.xn--zca"); } +test { try parseIDNAPass("\xe9\xbd\x99--4.SS", "xn----4-p16k.ss"); } +test { try parseIDNAPass("\xe9\xbd\x99--4.ss", "xn----4-p16k.ss"); } +test { try parseIDNAPass("\xe9\xbd\x99--4.Ss", "xn----4-p16k.ss"); } +test { try parseIDNAPass("xn----4-p16k.ss", "xn----4-p16k.ss"); } +test { try parseIDNAPass("xn----4-p16k.xn--zca", "xn----4-p16k.xn--zca"); } +test { try parseIDNAPass("\xe9\xbd\x99--\xf0\x9d\x9f\xb0.SS", "xn----4-p16k.ss"); } +test { try parseIDNAPass("\xe9\xbd\x99--\xf0\x9d\x9f\xb0.ss", "xn----4-p16k.ss"); } +test { try parseIDNAPass("\xe9\xbd\x99--\xf0\x9d\x9f\xb0.Ss", "xn----4-p16k.ss"); } +test { try parseIDNAPass("xn--9-i0j5967eg3qz.ss", "xn--9-i0j5967eg3qz.ss"); } +test { try parseIDNAPass("\xf0\xb2\xae\x9a9\xea\x8d\xa9\xe1\x9f\x93.ss", "xn--9-i0j5967eg3qz.ss"); } +test { try parseIDNAPass("\xf0\xb2\xae\x9a9\xea\x8d\xa9\xe1\x9f\x93.SS", "xn--9-i0j5967eg3qz.ss"); } +test { try parseIDNAPass("\xea\x97\xb7\xf0\x91\x86\x80.\xdd\x9d\xf0\x90\xa9\x92", "xn--ju8a625r.xn--hpb0073k"); } +test { try parseIDNAPass("xn--ju8a625r.xn--hpb0073k", "xn--ju8a625r.xn--hpb0073k"); } +test { try parseIDNAPass("xn----3vs.xn--0kj", "xn----3vs.xn--0kj"); } +test { try parseIDNAPass("\xcf\x82.\xd9\x81\xd9\x85\xd9\x8a\xf0\x9f\x9e\x9b1.", "xn--3xa.xn--1-gocmu97674d."); } +test { try parseIDNAPass("\xce\xa3.\xd9\x81\xd9\x85\xd9\x8a\xf0\x9f\x9e\x9b1.", "xn--4xa.xn--1-gocmu97674d."); } +test { try parseIDNAPass("\xcf\x83.\xd9\x81\xd9\x85\xd9\x8a\xf0\x9f\x9e\x9b1.", "xn--4xa.xn--1-gocmu97674d."); } +test { try parseIDNAPass("xn--4xa.xn--1-gocmu97674d.", "xn--4xa.xn--1-gocmu97674d."); } +test { try parseIDNAPass("xn--3xa.xn--1-gocmu97674d.", "xn--3xa.xn--1-gocmu97674d."); } +test { try parseIDNAPass(".xn--hva754s.", ".xn--hva754s."); } +test { try parseIDNAPass("xn--hva754s.", "xn--hva754s."); } +test { try parseIDNAPass("\xe2\xb4\x96\xcd\xa6.", "xn--hva754s."); } +test { try parseIDNAPass("\xe1\x82\xb6\xcd\xa6.", "xn--hva754s."); } +test { try parseIDNAPass("xn--hzb.xn--ukj4430l", "xn--hzb.xn--ukj4430l"); } +test { try parseIDNAPass("\xe0\xa2\xbb.\xe2\xb4\x83\xf0\x9e\x80\x92", "xn--hzb.xn--ukj4430l"); } +test { try parseIDNAPass("\xe0\xa2\xbb.\xe1\x82\xa3\xf0\x9e\x80\x92", "xn--hzb.xn--ukj4430l"); } +test { try parseIDNAPass("\xf3\xa0\x86\x93\xe2\x9b\x8f-\xe3\x80\x82\xea\xa1\x92", "xn----o9p.xn--rc9a"); } +test { try parseIDNAPass("xn----o9p.xn--rc9a", "xn----o9p.xn--rc9a"); } +test { try parseIDNAPass("xn--p9ut19m.xn----mck373i", "xn--p9ut19m.xn----mck373i"); } +test { try parseIDNAPass("\xe6\x94\x8c\xea\xaf\xad.\xe1\xa2\x96-\xe2\xb4\x98", "xn--p9ut19m.xn----mck373i"); } +test { try parseIDNAPass("\xe6\x94\x8c\xea\xaf\xad.\xe1\xa2\x96-\xe1\x82\xb8", "xn--p9ut19m.xn----mck373i"); } +test { try parseIDNAPass("xn--9r8a.16.xn--3-nyc0117m", "xn--9r8a.16.xn--3-nyc0117m"); } +test { try parseIDNAPass("\xea\x96\xa8.16.3\xed\x88\x92\xdb\xb3", "xn--9r8a.16.xn--3-nyc0117m"); } +test { try parseIDNAPass("\xea\x96\xa8.16.3\xe1\x84\x90\xe1\x85\xad\xe1\x86\xa9\xdb\xb3", "xn--9r8a.16.xn--3-nyc0117m"); } +test { try parseIDNAPass("xn--1-5bt6845n.", "xn--1-5bt6845n."); } +test { try parseIDNAPass("1\xf0\x9d\xa8\x99\xe2\xb8\x96.", "xn--1-5bt6845n."); } +test { try parseIDNAPass(".1.xn--9-ogo", ".1.xn--9-ogo"); } +test { try parseIDNAPass("xn--ss-f4j.b.", "xn--ss-f4j.b."); } +test { try parseIDNAPass("ss\xe1\x80\xba.b.", "xn--ss-f4j.b."); } +test { try parseIDNAPass("SS\xe1\x80\xba.B.", "xn--ss-f4j.b."); } +test { try parseIDNAPass("Ss\xe1\x80\xba.b.", "xn--ss-f4j.b."); } +test { try parseIDNAPass("SS\xe1\x80\xba.b.", "xn--ss-f4j.b."); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf\xef\xbc\x8e\xc3\x9f\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--zca216edt0r"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf.\xc3\x9f\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--zca216edt0r"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf.SS\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf.ss\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("xn--clb2593k.xn--ss-toj6092t", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("xn--clb2593k.xn--zca216edt0r", "xn--clb2593k.xn--zca216edt0r"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf\xef\xbc\x8eSS\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf\xef\xbc\x8ess\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf.Ss\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("\xdb\x8c\xf0\x90\xa8\xbf\xef\xbc\x8eSs\xe0\xbe\x84\xf0\x91\x8d\xac", "xn--clb2593k.xn--ss-toj6092t"); } +test { try parseIDNAPass("xn--8-ngo.", "xn--8-ngo."); } +test { try parseIDNAPass("8\xe2\x89\xae.", "xn--8-ngo."); } +test { try parseIDNAPass("8<\xcc\xb8.", "xn--8-ngo."); } +test { try parseIDNAPass("\xe7\xbe\x9a\xef\xbd\xa1\xe2\x89\xaf", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("\xe7\xbe\x9a\xef\xbd\xa1>\xcc\xb8", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("\xe7\xbe\x9a\xe3\x80\x82\xe2\x89\xaf", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("\xe7\xbe\x9a\xe3\x80\x82>\xcc\xb8", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("xn--xt0a.xn--hdh", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("\xe7\xbe\x9a.\xe2\x89\xaf", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass("\xe7\xbe\x9a.>\xcc\xb8", "xn--xt0a.xn--hdh"); } +test { try parseIDNAPass(".xn--ye6h", ".xn--ye6h"); } +test { try parseIDNAPass("xn--ye6h", "xn--ye6h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\xba", "xn--ye6h"); } +test { try parseIDNAPass("\xf0\x9e\xa4\x98", "xn--ye6h"); } +test { try parseIDNAPass("\xf0\x9d\x9f\x9b\xef\xbc\x8e\xef\xa7\xb8", "3.xn--6vz"); } +test { try parseIDNAPass("\xf0\x9d\x9f\x9b\xef\xbc\x8e\xe7\xac\xa0", "3.xn--6vz"); } +test { try parseIDNAPass("3.\xe7\xac\xa0", "3.xn--6vz"); } +test { try parseIDNAPass("3.xn--6vz", "3.xn--6vz"); } +test { try parseIDNAPass("-.xn--mlj8559d", "-.xn--mlj8559d"); } +test { try parseIDNAPass("xn--1ch.", "xn--1ch."); } +test { try parseIDNAPass("\xe2\x89\xa0.", "xn--1ch."); } +test { try parseIDNAPass("=\xcc\xb8.", "xn--1ch."); } +test { try parseIDNAPass("-\xe3\x80\x82\xe3\x80\x82", "-.."); } +test { try parseIDNAPass("-..", "-.."); } +test { try parseIDNAPass(".f", ".f"); } +test { try parseIDNAPass("f", "f"); } +test { try parseIDNAPass("xn--9bm.ss", "xn--9bm.ss"); } +test { try parseIDNAPass("\xe3\xa8\xb2.ss", "xn--9bm.ss"); } +test { try parseIDNAPass("\xe3\xa8\xb2.SS", "xn--9bm.ss"); } +test { try parseIDNAPass("\xe3\xa8\xb2.Ss", "xn--9bm.ss"); } +test { try parseIDNAPass("\xf0\x9d\x9f\x8e\xe3\x80\x82\xe7\x94\xaf", "0.xn--qny"); } +test { try parseIDNAPass("0\xe3\x80\x82\xe7\x94\xaf", "0.xn--qny"); } +test { try parseIDNAPass("0.xn--qny", "0.xn--qny"); } +test { try parseIDNAPass("0.\xe7\x94\xaf", "0.xn--qny"); } +test { try parseIDNAPass("-\xef\xbd\xa1\xe1\xa2\x98", "-.xn--ibf"); } +test { try parseIDNAPass("-\xe3\x80\x82\xe1\xa2\x98", "-.xn--ibf"); } +test { try parseIDNAPass("-.xn--ibf", "-.xn--ibf"); } +test { try parseIDNAPass("\xf0\x9f\x82\xb4\xe1\x82\xab.\xe2\x89\xae", "xn--2kj7565l.xn--gdh"); } +test { try parseIDNAPass("\xf0\x9f\x82\xb4\xe1\x82\xab.<\xcc\xb8", "xn--2kj7565l.xn--gdh"); } +test { try parseIDNAPass("\xf0\x9f\x82\xb4\xe2\xb4\x8b.<\xcc\xb8", "xn--2kj7565l.xn--gdh"); } +test { try parseIDNAPass("\xf0\x9f\x82\xb4\xe2\xb4\x8b.\xe2\x89\xae", "xn--2kj7565l.xn--gdh"); } +test { try parseIDNAPass("xn--2kj7565l.xn--gdh", "xn--2kj7565l.xn--gdh"); } +test { try parseIDNAPass("xn--gky8837e.", "xn--gky8837e."); } +test { try parseIDNAPass("\xe7\x92\xbc\xf0\x9d\xa8\xad.", "xn--gky8837e."); } +test { try parseIDNAPass("xn--157b.xn--gnb", "xn--157b.xn--gnb"); } +test { try parseIDNAPass("\xed\x8a\x9b.\xdc\x96", "xn--157b.xn--gnb"); } +test { try parseIDNAPass("\xe1\x84\x90\xe1\x85\xb1\xe1\x87\x82.\xdc\x96", "xn--157b.xn--gnb"); } +test { try parseIDNAPass("xn--84-s850a.xn--59h6326e", "xn--84-s850a.xn--59h6326e"); } +test { try parseIDNAPass("84\xf0\x9d\x88\xbb.\xf0\x90\x8b\xb5\xe2\x9b\xa7", "xn--84-s850a.xn--59h6326e"); } +test { try parseIDNAPass("\xe2\x89\xae\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96\xc3\x9f\xe2\x89\xaf", "xn--7-mgo.xn--zca892oly5e"); } +test { try parseIDNAPass("<\xcc\xb8\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96\xc3\x9f>\xcc\xb8", "xn--7-mgo.xn--zca892oly5e"); } +test { try parseIDNAPass("\xe2\x89\xae7.\xe8\xac\x96\xc3\x9f\xe2\x89\xaf", "xn--7-mgo.xn--zca892oly5e"); } +test { try parseIDNAPass("<\xcc\xb87.\xe8\xac\x96\xc3\x9f>\xcc\xb8", "xn--7-mgo.xn--zca892oly5e"); } +test { try parseIDNAPass("<\xcc\xb87.\xe8\xac\x96SS>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae7.\xe8\xac\x96SS\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae7.\xe8\xac\x96ss\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("<\xcc\xb87.\xe8\xac\x96ss>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("<\xcc\xb87.\xe8\xac\x96Ss>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae7.\xe8\xac\x96Ss\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("xn--7-mgo.xn--ss-xjvv174c", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("xn--7-mgo.xn--zca892oly5e", "xn--7-mgo.xn--zca892oly5e"); } +test { try parseIDNAPass("<\xcc\xb8\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96SS>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96SS\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96ss\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("<\xcc\xb8\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96ss>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("<\xcc\xb8\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96Ss>\xcc\xb8", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass("\xe2\x89\xae\xf0\x9d\x9f\x95\xef\xbc\x8e\xe8\xac\x96Ss\xe2\x89\xaf", "xn--7-mgo.xn--ss-xjvv174c"); } +test { try parseIDNAPass(".xn--ss-bh7o", ".xn--ss-bh7o"); } +test { try parseIDNAPass("xn--ss-bh7o", "xn--ss-bh7o"); } +test { try parseIDNAPass("ss\xf0\x91\x93\x83", "xn--ss-bh7o"); } +test { try parseIDNAPass("SS\xf0\x91\x93\x83", "xn--ss-bh7o"); } +test { try parseIDNAPass("Ss\xf0\x91\x93\x83", "xn--ss-bh7o"); } +test { try parseIDNAPass(".xn--qekw60d.xn--gd9a", ".xn--qekw60d.xn--gd9a"); } +test { try parseIDNAPass("xn--qekw60d.xn--gd9a", "xn--qekw60d.xn--gd9a"); } +test { try parseIDNAPass("\xe3\x83\xb6\xe4\x92\xa9.\xea\xa1\xaa", "xn--qekw60d.xn--gd9a"); } +test { try parseIDNAPass("\xf0\x9d\x85\xb5\xe3\x80\x829\xf0\x9e\x80\x88\xe4\xac\xba1.", ".xn--91-030c1650n."); } +test { try parseIDNAPass(".xn--91-030c1650n.", ".xn--91-030c1650n."); } +test { try parseIDNAPass("xn--8c1a.xn--2ib8jn539l", "xn--8c1a.xn--2ib8jn539l"); } +test { try parseIDNAPass("\xe8\x88\x9b.\xd9\xbd\xf0\x9e\xa4\xb4\xda\xbb", "xn--8c1a.xn--2ib8jn539l"); } +test { try parseIDNAPass("\xe8\x88\x9b.\xd9\xbd\xf0\x9e\xa4\x92\xda\xbb", "xn--8c1a.xn--2ib8jn539l"); } +test { try parseIDNAPass("\xe1\x9e\xb4.\xec\xae\x87-", ".xn----938f"); } +test { try parseIDNAPass("\xe1\x9e\xb4.\xe1\x84\x8d\xe1\x85\xb0\xe1\x86\xae-", ".xn----938f"); } +test { try parseIDNAPass(".xn----938f", ".xn----938f"); } +test { try parseIDNAPass(".xn--hcb32bni", ".xn--hcb32bni"); } +test { try parseIDNAPass("xn--hcb32bni", "xn--hcb32bni"); } +test { try parseIDNAPass("\xda\xbd\xd9\xa3\xd6\x96", "xn--hcb32bni"); } +test { try parseIDNAPass("\xe1\xa2\x8c\xef\xbc\x8e-\xe0\xa1\x9a", "xn--59e.xn----5jd"); } +test { try parseIDNAPass("\xe1\xa2\x8c.-\xe0\xa1\x9a", "xn--59e.xn----5jd"); } +test { try parseIDNAPass("xn--59e.xn----5jd", "xn--59e.xn----5jd"); } +test { try parseIDNAPass("xn--8gb2338k.xn--lhb0154f", "xn--8gb2338k.xn--lhb0154f"); } +test { try parseIDNAPass("\xd8\xbd\xf0\x91\x88\xbe.\xd9\x89\xea\xa4\xab", "xn--8gb2338k.xn--lhb0154f"); } +test { try parseIDNAPass("\xe1\x83\x81\xe1\x82\xb16\xcc\x98\xe3\x80\x82\xc3\x9f\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--zca894k"); } +test { try parseIDNAPass("\xe2\xb4\xa1\xe2\xb4\x916\xcc\x98\xe3\x80\x82\xc3\x9f\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--zca894k"); } +test { try parseIDNAPass("\xe1\x83\x81\xe1\x82\xb16\xcc\x98\xe3\x80\x82SS\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("\xe2\xb4\xa1\xe2\xb4\x916\xcc\x98\xe3\x80\x82ss\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("\xe1\x83\x81\xe2\xb4\x916\xcc\x98\xe3\x80\x82Ss\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("xn--6-8cb7433a2ba.xn--ss-2vq", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("\xe2\xb4\xa1\xe2\xb4\x916\xcc\x98.ss\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("\xe1\x83\x81\xe1\x82\xb16\xcc\x98.SS\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("\xe1\x83\x81\xe2\xb4\x916\xcc\x98.Ss\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--ss-2vq"); } +test { try parseIDNAPass("xn--6-8cb7433a2ba.xn--zca894k", "xn--6-8cb7433a2ba.xn--zca894k"); } +test { try parseIDNAPass("\xe2\xb4\xa1\xe2\xb4\x916\xcc\x98.\xc3\x9f\xe1\xac\x83", "xn--6-8cb7433a2ba.xn--zca894k"); } +test { try parseIDNAPass("xn--7zv.", "xn--7zv."); } +test { try parseIDNAPass("\xe6\xa2\x89.", "xn--7zv."); } +test { try parseIDNAPass("xn--iwb.ss", "xn--iwb.ss"); } +test { try parseIDNAPass("\xe0\xa1\x93.ss", "xn--iwb.ss"); } +test { try parseIDNAPass("\xe0\xa1\x93.SS", "xn--iwb.ss"); } +test { try parseIDNAPass("-\xef\xbd\xa1\xe2\xba\x90", "-.xn--6vj"); } +test { try parseIDNAPass("-\xe3\x80\x82\xe2\xba\x90", "-.xn--6vj"); } +test { try parseIDNAPass("-.xn--6vj", "-.xn--6vj"); } +test { try parseIDNAPass("xn--ix9c26l.xn--q0s", "xn--ix9c26l.xn--q0s"); } +test { try parseIDNAPass("\xf0\x90\xab\x9c\xf0\x91\x8c\xbc.\xe5\xa9\x80", "xn--ix9c26l.xn--q0s"); } +test { try parseIDNAPass("\xf0\x90\xab\x80\xef\xbc\x8e\xda\x89\xf0\x91\x8c\x80", "xn--pw9c.xn--fjb8658k"); } +test { try parseIDNAPass("\xf0\x90\xab\x80.\xda\x89\xf0\x91\x8c\x80", "xn--pw9c.xn--fjb8658k"); } +test { try parseIDNAPass("xn--pw9c.xn--fjb8658k", "xn--pw9c.xn--fjb8658k"); } +test { try parseIDNAPass("xn--r97c.", "xn--r97c."); } +test { try parseIDNAPass("\xf0\x90\x8b\xb7.", "xn--r97c."); }