| [ |
| { |
| "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": ":café" }, |
| "input": { "protocol": "foo" }, |
| "expected": { |
| "input": { "protocol": "foo" }, |
| "protocol": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "username": ":café" }, |
| "input": { "username": "foo" }, |
| "expected": { |
| "input": { "username": "foo" }, |
| "username": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "password": ":café" }, |
| "input": { "password": "foo" }, |
| "expected": { |
| "input": { "password": "foo" }, |
| "password": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hostname": ":café" }, |
| "input": { "hostname": "foo" }, |
| "expected": { |
| "input": { "hostname": "foo" }, |
| "hostname": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "pathname": "/:café" }, |
| "input": { "pathname": "/foo" }, |
| "expected": { |
| "input": { "pathname": "/foo" }, |
| "pathname": { "input": "/foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "search": ":café" }, |
| "input": { "search": "foo" }, |
| "expected": { |
| "input": { "search": "foo" }, |
| "search": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hash": ":café" }, |
| "input": { "hash": "foo" }, |
| "expected": { |
| "input": { "hash": "foo" }, |
| "hash": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "protocol": ":\u2118" }, |
| "input": { "protocol": "foo" }, |
| "expected": { |
| "input": { "protocol": "foo" }, |
| "protocol": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "username": ":\u2118" }, |
| "input": { "username": "foo" }, |
| "expected": { |
| "input": { "username": "foo" }, |
| "username": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "password": ":\u2118" }, |
| "input": { "password": "foo" }, |
| "expected": { |
| "input": { "password": "foo" }, |
| "password": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hostname": ":\u2118" }, |
| "input": { "hostname": "foo" }, |
| "expected": { |
| "input": { "hostname": "foo" }, |
| "hostname": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "pathname": "/:\u2118" }, |
| "input": { "pathname": "/foo" }, |
| "expected": { |
| "input": { "pathname": "/foo" }, |
| "pathname": { "input": "/foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "search": ":\u2118" }, |
| "input": { "search": "foo" }, |
| "expected": { |
| "input": { "search": "foo" }, |
| "search": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hash": ":\u2118" }, |
| "input": { "hash": "foo" }, |
| "expected": { |
| "input": { "hash": "foo" }, |
| "hash": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "protocol": ":\u3400" }, |
| "input": { "protocol": "foo" }, |
| "expected": { |
| "input": { "protocol": "foo" }, |
| "protocol": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "username": ":\u3400" }, |
| "input": { "username": "foo" }, |
| "expected": { |
| "input": { "username": "foo" }, |
| "username": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "password": ":\u3400" }, |
| "input": { "password": "foo" }, |
| "expected": { |
| "input": { "password": "foo" }, |
| "password": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hostname": ":\u3400" }, |
| "input": { "hostname": "foo" }, |
| "expected": { |
| "input": { "hostname": "foo" }, |
| "hostname": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "pathname": "/:\u3400" }, |
| "input": { "pathname": "/foo" }, |
| "expected": { |
| "input": { "pathname": "/foo" }, |
| "pathname": { "input": "/foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "search": ":\u3400" }, |
| "input": { "search": "foo" }, |
| "expected": { |
| "input": { "search": "foo" }, |
| "search": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": { "hash": ":\u3400" }, |
| "input": { "hash": "foo" }, |
| "expected": { |
| "input": { "hash": "foo" }, |
| "hash": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "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" }} |
| } |
| } |
| ] |