blob: a4b2c3281f0a057e1d0ce0a73b6e87b8ac5f348d [file] [log] [blame]
[
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/ba" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/bar/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": "https://example.com/foo/bar",
"expected": {
"input": "https://example.com/foo/bar",
"hostname": { "input": "example.com", "groups": { "0": "example.com" } },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": { "0": "https" } }
}
},
{
"pattern": { "pathname": "/foo/bar" },
"input": "https://example.com/foo/bar/baz",
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "hostname": "example.com", "pathname": "/foo/bar" },
"expected": {
"input": { "hostname": "example.com", "pathname": "/foo/bar" },
"hostname": { "input": "example.com", "groups": { "0": "example.com" } },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "hostname": "example.com", "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/bar", "baseURL": "https://example.com" },
"expected": {
"input": { "pathname": "/foo/bar", "baseURL": "https://example.com" },
"hostname": { "input": "example.com", "groups": { "0": "example.com" } },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": { "0": "https" } }
}
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/bar/baz", "baseURL": "https://example.com" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "pathname": "/foo/bar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "hostname": "example.com", "pathname": "/foo/bar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "protocol": "https", "hostname": "example.com",
"pathname": "/foo/bar" },
"expected": {
"input": { "protocol": "https", "hostname": "example.com",
"pathname": "/foo/bar" },
"exactly_empty_components": [ "username", "password", "port" ],
"hostname": { "input": "example.com", "groups": {} },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "protocol": "https", "hostname": "example.com",
"pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "protocol": "https", "hostname": "example.com",
"pathname": "/foo/bar", "search": "otherquery",
"hash": "otherhash" },
"expected": {
"input": { "protocol": "https", "hostname": "example.com",
"pathname": "/foo/bar", "search": "otherquery",
"hash": "otherhash" },
"exactly_empty_components": [ "username", "password", "port" ],
"hash": { "input": "otherhash", "groups": { "0": "otherhash" } },
"hostname": { "input": "example.com", "groups": {} },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": {} },
"search": { "input": "otherquery", "groups": { "0": "otherquery" } }
}
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": "https://example.com/foo/bar",
"expected": {
"input": "https://example.com/foo/bar",
"exactly_empty_components": [ "username", "password", "port" ],
"hostname": { "input": "example.com", "groups": {} },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": "https://example.com/foo/bar?otherquery#otherhash",
"expected": {
"input": "https://example.com/foo/bar?otherquery#otherhash",
"exactly_empty_components": [ "username", "password", "port" ],
"hash": { "input": "otherhash", "groups": { "0": "otherhash" } },
"hostname": { "input": "example.com", "groups": {} },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": {} },
"search": { "input": "otherquery", "groups": { "0": "otherquery" } }
}
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": "https://example.com/foo/bar/baz",
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": "https://other.com/foo/bar",
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": "http://other.com/foo/bar",
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "pathname": "/foo/bar", "baseURL": "https://example.com" },
"expected": {
"input": { "pathname": "/foo/bar", "baseURL": "https://example.com" },
"exactly_empty_components": [ "username", "password", "port" ],
"hostname": { "input": "example.com", "groups": {} },
"pathname": { "input": "/foo/bar", "groups": {} },
"protocol": { "input": "https", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "pathname": "/foo/bar/baz", "baseURL": "https://example.com" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "pathname": "/foo/bar", "baseURL": "https://other.com" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar",
"baseURL": "https://example.com?query#hash" },
"input": { "pathname": "/foo/bar", "baseURL": "http://example.com" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/:bar" },
"input": { "pathname": "/foo/index.html" },
"expected": {
"input": { "pathname": "/foo/index.html" },
"pathname": { "input": "/foo/index.html", "groups": { "bar": "index.html" } }
}
},
{
"pattern": { "pathname": "/foo/:bar" },
"input": { "pathname": "/foo/bar/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/*" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/*" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/*" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar(.*)" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/:bar(.*)" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/:bar(.*)" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "bar": "" } }
}
},
{
"pattern": { "pathname": "/foo/:bar(.*)" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar?" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/:bar?" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "bar": "" } }
}
},
{
"pattern": { "pathname": "/foo/:bar?" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar?" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar?" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar+" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/:bar+" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/:bar+" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar+" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar+" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar*" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/:bar*" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/:bar*" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "bar": "" } }
}
},
{
"pattern": { "pathname": "/foo/:bar*" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo/:bar*" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)?" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*?" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)+" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/*+" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": { "0": "bar" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/foo/bar/baz" },
"expected": {
"input": { "pathname": "/foo/bar/baz" },
"pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/foo/" },
"expected": {
"input": { "pathname": "/foo/" },
"pathname": { "input": "/foo/", "groups": { "0": "" } }
}
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/foobar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/(.*)*" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo/**" },
"input": { "pathname": "/fo" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}?" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}?" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}?" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}?" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}+" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}+" },
"input": { "pathname": "/foo/bar/bar" },
"expected": {
"input": { "pathname": "/foo/bar/bar" },
"pathname": { "input": "/foo/bar/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}+" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}+" },
"input": { "pathname": "/foo" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}+" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}*" },
"input": { "pathname": "/foo/bar" },
"expected": {
"input": { "pathname": "/foo/bar" },
"pathname": { "input": "/foo/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}*" },
"input": { "pathname": "/foo/bar/bar" },
"expected": {
"input": { "pathname": "/foo/bar/bar" },
"pathname": { "input": "/foo/bar/bar", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}*" },
"input": { "pathname": "/foo/bar/baz" },
"expected": null
},
{
"pattern": { "pathname": "/foo{/bar}*" },
"input": { "pathname": "/foo" },
"expected": {
"input": { "pathname": "/foo" },
"pathname": { "input": "/foo", "groups": {} }
}
},
{
"pattern": { "pathname": "/foo{/bar}*" },
"input": { "pathname": "/foo/" },
"expected": null
},
{
"pattern": { "protocol": "(café)" },
"error": true
},
{
"pattern": { "username": "(café)" },
"error": true
},
{
"pattern": { "password": "(café)" },
"error": true
},
{
"pattern": { "hostname": "(café)" },
"error": true
},
{
"pattern": { "pathname": "(café)" },
"error": true
},
{
"pattern": { "search": "(café)" },
"error": true
},
{
"pattern": { "hash": "(café)" },
"error": true
},
{
"pattern": { "protocol": "(.*)" },
"input": { "protocol" : "café" },
"expected": null
},
{
"pattern": { "protocol": "(.*)" },
"input": { "protocol": "cafe" },
"expected": {
"input": { "protocol": "cafe" },
"protocol": { "input": "cafe", "groups": { "0": "cafe" }}
}
},
{
"pattern": { "protocol": "foo-bar" },
"input": { "protocol": "foo-bar" },
"expected": {
"input": { "protocol": "foo-bar" },
"protocol": { "input": "foo-bar", "groups": {} }
}
},
{
"pattern": { "username": "caf%C3%A9" },
"input": { "username" : "café" },
"expected": {
"input": { "username" : "café" },
"username": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "username": "caf%c3%a9" },
"input": { "username" : "café" },
"expected": null
},
{
"pattern": { "password": "caf%C3%A9" },
"input": { "password" : "café" },
"expected": {
"input": { "password" : "café" },
"password": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "password": "caf%c3%a9" },
"input": { "password" : "café" },
"expected": null
},
{
"pattern": { "hostname": "xn--caf-dma.com" },
"input": { "hostname" : "café.com" },
"expected": {
"input": { "hostname" : "café.com" },
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
}
},
{
"pattern": { "port": "" },
"input": { "protocol": "http", "port": "80" },
"expected": {
"input": { "protocol": "http", "port": "80" },
"protocol": { "input": "http", "groups": { "0": "http" }},
"port": { "input": "", "groups": {}}
}
},
{
"pattern": { "port": "80" },
"input": { "port": "80" },
"expected": {
"input": { "port": "80" },
"port": { "input": "80", "groups": {}}
}
},
{
"pattern": { "port": "(.*)" },
"input": { "port": "invalid80" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "/foo/./bar" },
"expected": {
"input": { "pathname": "/foo/./bar" },
"pathname": { "input": "/foo/bar", "groups": {}}
}
},
{
"pattern": { "pathname": "/foo/baz" },
"input": { "pathname": "/foo/bar/../baz" },
"expected": {
"input": { "pathname": "/foo/bar/../baz" },
"pathname": { "input": "/foo/baz", "groups": {}}
}
},
{
"pattern": { "pathname": "/caf%C3%A9" },
"input": { "pathname": "/café" },
"expected": {
"input": { "pathname": "/café" },
"pathname": { "input": "/caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "pathname": "/caf%c3%a9" },
"input": { "pathname": "/café" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "foo/bar" },
"expected": null
},
{
"pattern": { "pathname": "/foo/bar" },
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
"expected": {
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
"protocol": { "input": "https", "groups": { "0": "https" }},
"hostname": { "input": "example.com", "groups": { "0": "example.com" }},
"pathname": { "input": "/foo/bar", "groups": {}}
}
},
{
"pattern": { "pathname": "foo/bar" },
"input": "https://example.com/foo/bar",
"expected": null
},
{
"pattern": { "pathname": "foo/bar", "baseURL": "https://example.com" },
"input": "https://example.com/foo/bar",
"expected": {
"input": "https://example.com/foo/bar",
"exactly_empty_components": [ "username", "password", "port" ],
"protocol": { "input": "https", "groups": {}},
"hostname": { "input": "example.com", "groups": {}},
"pathname": { "input": "/foo/bar", "groups": {}}
}
},
{
"pattern": { "pathname": ":name.html", "baseURL": "https://example.com" },
"input": "https://example.com/foo.html",
"expected": {
"input": "https://example.com/foo.html",
"exactly_empty_components": [ "username", "password", "port" ],
"protocol": { "input": "https", "groups": {}},
"hostname": { "input": "example.com", "groups": {}},
"pathname": { "input": "/foo.html", "groups": { "name": "foo" }}
}
},
{
"pattern": { "search": "q=caf%C3%A9" },
"input": { "search": "q=café" },
"expected": {
"input": { "search": "q=café" },
"search": { "input": "q=caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "search": "q=caf%c3%a9" },
"input": { "search": "q=café" },
"expected": null
},
{
"pattern": { "hash": "caf%C3%A9" },
"input": { "hash": "café" },
"expected": {
"input": { "hash": "café" },
"hash": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "hash": "caf%c3%a9" },
"input": { "hash": "café" },
"expected": null
},
{
"pattern": { "protocol": "about", "pathname": "(blank|sourcedoc)" },
"input": "about:blank",
"expected": {
"input": "about:blank",
"protocol": { "input": "about", "groups": {}},
"pathname": { "input": "blank", "groups": { "0": "blank" }}
}
},
{
"pattern": { "protocol": "data", "pathname": ":number([0-9]+)" },
"input": "data:8675309",
"expected": {
"input": "data:8675309",
"protocol": { "input": "data", "groups": {}},
"pathname": { "input": "8675309", "groups": { "number": "8675309" }}
}
}
]