Test output for uri-generic [ok]
Testing time: 3s
/home/mario/local/chicken-4.8.0.3/bin/csi -script run.scm < /dev/null
-- testing uri-generic -------------------------------------------------------
-- testing uri test ------------------------------------------------------
"foo:xyz" * "bar:abc" -> "bar:abc" ............................... [ PASS]
"foo:xyz" * "bar:abc" -> "bar:abc" ............................... [ PASS]
#(URI scheme=bar authority=#f path=("abc") query=#f fragment=#f) = #(URI scheme=bar authority=#f path=("abc") query=#f fragment=#f) [ PASS]
"foo:xyz" = "foo:xyz" ............................................ [ PASS]
"bar:abc" = "bar:abc" ............................................ [ PASS]
"bar:abc" = "bar:abc" ............................................ [ PASS]
"http://example/x/y/z" * "http://example/x/abc" -> "../abc" ...... [ PASS]
"http://example/x/y/z" * "http://example/x/abc" -> "../abc" ...... [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) [ PASS]
"http://example/x/y/z" = "http://example/x/y/z" .................. [ PASS]
"http://example/x/abc" = "http://example/x/abc" .................. [ PASS]
"../abc" = "../abc" .............................................. [ PASS]
"http://example2/x/y/z" * "http://example/x/abc" -> "//example/x/abc" [ PASS]
"http://example2/x/y/z" * "http://example/x/abc" -> "//example/x/abc" [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) [ PASS]
"http://example2/x/y/z" = "http://example2/x/y/z" ................ [ PASS]
"http://example/x/abc" = "http://example/x/abc" .................. [ PASS]
"//example/x/abc" = "//example/x/abc" ............................ [ PASS]
"http://ex/x/y/z" * "http://ex/x/r" -> "../r" .................... [ PASS]
"http://ex/x/y/z" * "http://ex/x/r" -> "../r" .................... [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "r") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "r") query=#f fragment=#f) [ PASS]
"http://ex/x/y/z" = "http://ex/x/y/z" ............................ [ PASS]
"http://ex/x/r" = "http://ex/x/r" ................................ [ PASS]
"../r" = "../r" .................................................. [ PASS]
"http://ex/x/y" * "http://ex/x/q/r" -> "./q/r" ................... [ PASS]
"http://ex/x/y" * "http://ex/x/q/r" -> "./q/r" ................... [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"http://ex/x/q/r" = "http://ex/x/q/r" ............................ [ PASS]
"./q/r" = "./q/r" ................................................ [ PASS]
"http://ex/x/y" * "http://ex/x/q/r#s" -> "./q/r#s" ............... [ PASS]
"http://ex/x/y" * "http://ex/x/q/r#s" -> "./q/r#s" ............... [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"http://ex/x/q/r#s" = "http://ex/x/q/r#s" ........................ [ PASS]
"./q/r#s" = "./q/r#s" ............................................ [ PASS]
"http://ex/x/y" * "http://ex/x/q/r#s/t" -> "./q/r#s/t" ........... [ PASS]
"http://ex/x/y" * "http://ex/x/q/r#s/t" -> "./q/r#s/t" ........... [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"http://ex/x/q/r#s/t" = "http://ex/x/q/r#s/t" .................... [ PASS]
"./q/r#s/t" = "./q/r#s/t" ........................................ [ PASS]
"http://ex/x/y" * "ftp://ex/x/q/r" -> "ftp://ex/x/q/r" ........... [ PASS]
"http://ex/x/y" * "ftp://ex/x/q/r" -> "ftp://ex/x/q/r" ........... [ PASS]
#(URI scheme=ftp authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) = #(URI scheme=ftp authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"ftp://ex/x/q/r" = "ftp://ex/x/q/r" .............................. [ PASS]
"ftp://ex/x/q/r" = "ftp://ex/x/q/r" .............................. [ PASS]
"http://ex/x/y" * "http://ex/x/y" -> "" .......................... [ PASS]
"http://ex/x/y" * "http://ex/x/y" -> "" .......................... [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y") query=#f fragment=#f) [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"http://ex/x/y" = "http://ex/x/y" ................................ [ PASS]
"" = "" .......................................................... [ PASS]
"http://ex/x/y/" * "http://ex/x/y/" -> "" ........................ [ PASS]
"http://ex/x/y/" * "http://ex/x/y/" -> "" ........................ [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "") query=#f fragment=#f) [ PASS]
"http://ex/x/y/" = "http://ex/x/y/" .............................. [ PASS]
"http://ex/x/y/" = "http://ex/x/y/" .............................. [ PASS]
"" = "" .......................................................... [ PASS]
"http://ex/x/y/pdq" * "http://ex/x/y/pdq" -> "" .................. [ PASS]
"http://ex/x/y/pdq" * "http://ex/x/y/pdq" -> "" .................. [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "pdq") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "pdq") query=#f fragment=#f) [ PASS]
"http://ex/x/y/pdq" = "http://ex/x/y/pdq" ........................ [ PASS]
"http://ex/x/y/pdq" = "http://ex/x/y/pdq" ........................ [ PASS]
"" = "" .......................................................... [ PASS]
"http://ex/x/y/" * "http://ex/x/y/z/" -> "./z/" .................. [ PASS]
"http://ex/x/y/" * "http://ex/x/y/z/" -> "./z/" .................. [ PASS]
#(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "z" "") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="ex" port=#f) path=(/ "x" "y" "z" "") query=#f fragment=#f) [ PASS]
"http://ex/x/y/" = "http://ex/x/y/" .............................. [ PASS]
"http://ex/x/y/z/" = "http://ex/x/y/z/" .......................... [ PASS]
"./z/" = "./z/" .................................................. [ PASS]
"file:/swap/test/animal.rdf" * "file:/swap/test/animal.rdf#Animal" -> "#Animal" [ PASS]
"file:/swap/test/animal.rdf" * "file:/swap/test/animal.rdf#Animal" -> "#Animal" [ PASS]
"file:/swap/test/animal.rdf" = "file:/swap/test/animal.rdf" ...... [ PASS]
"file:/swap/test/animal.rdf#Animal" = "file:/swap/test/animal.rdf#Animal" [ PASS]
"#Animal" = "#Animal" ............................................ [ PASS]
"file:/e/x/y/z" * "file:/e/x/abc" -> "../abc" .................... [ PASS]
"file:/e/x/y/z" * "file:/e/x/abc" -> "../abc" .................... [ PASS]
#(URI scheme=file authority=#f path=(/ "e" "x" "abc") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "e" "x" "abc") query=#f fragment=#f) [ PASS]
"file:/e/x/y/z" = "file:/e/x/y/z" ................................ [ PASS]
"file:/e/x/abc" = "file:/e/x/abc" ................................ [ PASS]
"../abc" = "../abc" .............................................. [ PASS]
"file:/example2/x/y/z" * "file:/example/x/abc" -> "/example/x/abc" [ PASS]
"file:/example2/x/y/z" * "file:/example/x/abc" -> "/example/x/abc" [ PASS]
#(URI scheme=file authority=#f path=(/ "example" "x" "abc") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "example" "x" "abc") query=#f fragment=#f) [ PASS]
"file:/example2/x/y/z" = "file:/example2/x/y/z" .................. [ PASS]
"file:/example/x/abc" = "file:/example/x/abc" .................... [ PASS]
"/example/x/abc" = "/example/x/abc" .............................. [ PASS]
"file:/ex/x/y/z" * "file:/ex/x/r" -> "../r" ...................... [ PASS]
"file:/ex/x/y/z" * "file:/ex/x/r" -> "../r" ...................... [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "r") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "r") query=#f fragment=#f) [ PASS]
"file:/ex/x/y/z" = "file:/ex/x/y/z" .............................. [ PASS]
"file:/ex/x/r" = "file:/ex/x/r" .................................. [ PASS]
"../r" = "../r" .................................................. [ PASS]
"file:/ex/x/y/z" * "file:/r" -> "/r" ............................. [ PASS]
"file:/ex/x/y/z" * "file:/r" -> "/r" ............................. [ PASS]
#(URI scheme=file authority=#f path=(/ "r") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "r") query=#f fragment=#f) [ PASS]
"file:/ex/x/y/z" = "file:/ex/x/y/z" .............................. [ PASS]
"file:/r" = "file:/r" ............................................ [ PASS]
"/r" = "/r" ...................................................... [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r" -> "./q/r" ..................... [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r" -> "./q/r" ..................... [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "q" "r") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "q" "r") query=#f fragment=#f) [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"file:/ex/x/q/r" = "file:/ex/x/q/r" .............................. [ PASS]
"./q/r" = "./q/r" ................................................ [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#s" -> "./q/r#s" ................. [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#s" -> "./q/r#s" ................. [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"file:/ex/x/q/r#s" = "file:/ex/x/q/r#s" .......................... [ PASS]
"./q/r#s" = "./q/r#s" ............................................ [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#" -> "./q/r#" ................... [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#" -> "./q/r#" ................... [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"file:/ex/x/q/r#" = "file:/ex/x/q/r#" ............................ [ PASS]
"./q/r#" = "./q/r#" .............................................. [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#s/t" -> "./q/r#s/t" ............. [ PASS]
"file:/ex/x/y" * "file:/ex/x/q/r#s/t" -> "./q/r#s/t" ............. [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"file:/ex/x/q/r#s/t" = "file:/ex/x/q/r#s/t" ...................... [ PASS]
"./q/r#s/t" = "./q/r#s/t" ........................................ [ PASS]
"file:/ex/x/y" * "ftp://ex/x/q/r" -> "ftp://ex/x/q/r" ............ [ PASS]
"file:/ex/x/y" * "ftp://ex/x/q/r" -> "ftp://ex/x/q/r" ............ [ PASS]
#(URI scheme=ftp authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) = #(URI scheme=ftp authority=#(URIAuth host="ex" port=#f) path=(/ "x" "q" "r") query=#f fragment=#f) [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"ftp://ex/x/q/r" = "ftp://ex/x/q/r" .............................. [ PASS]
"ftp://ex/x/q/r" = "ftp://ex/x/q/r" .............................. [ PASS]
"file:/ex/x/y" * "file:/ex/x/y" -> "" ............................ [ PASS]
"file:/ex/x/y" * "file:/ex/x/y" -> "" ............................ [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "y") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "y") query=#f fragment=#f) [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"file:/ex/x/y" = "file:/ex/x/y" .................................. [ PASS]
"" = "" .......................................................... [ PASS]
"file:/ex/x/y/" * "file:/ex/x/y/" -> "" .......................... [ PASS]
"file:/ex/x/y/" * "file:/ex/x/y/" -> "" .......................... [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "y" "") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "y" "") query=#f fragment=#f) [ PASS]
"file:/ex/x/y/" = "file:/ex/x/y/" ................................ [ PASS]
"file:/ex/x/y/" = "file:/ex/x/y/" ................................ [ PASS]
"" = "" .......................................................... [ PASS]
"file:/ex/x/y/pdq" * "file:/ex/x/y/pdq" -> "" .................... [ PASS]
"file:/ex/x/y/pdq" * "file:/ex/x/y/pdq" -> "" .................... [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "y" "pdq") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "y" "pdq") query=#f fragment=#f) [ PASS]
"file:/ex/x/y/pdq" = "file:/ex/x/y/pdq" .......................... [ PASS]
"file:/ex/x/y/pdq" = "file:/ex/x/y/pdq" .......................... [ PASS]
"" = "" .......................................................... [ PASS]
"file:/ex/x/y/" * "file:/ex/x/y/z/" -> "./z/" .................... [ PASS]
"file:/ex/x/y/" * "file:/ex/x/y/z/" -> "./z/" .................... [ PASS]
#(URI scheme=file authority=#f path=(/ "ex" "x" "y" "z" "") query=#f fragment=#f) = #(URI scheme=file authority=#f path=(/ "ex" "x" "y" "z" "") query=#f fragment=#f) [ PASS]
"file:/ex/x/y/" = "file:/ex/x/y/" ................................ [ PASS]
"file:/ex/x/y/z/" = "file:/ex/x/y/z/" ............................ [ PASS]
"./z/" = "./z/" .................................................. [ PASS]
"file:/devel/WWW/2000/10/swap/test/reluri-1.n3" * "file://meetings.example.com/cal#m1" -> "//meetings.example.com/cal#m1" [ PASS]
"file:/devel/WWW/2000/10/swap/test/reluri-1.n3" * "file://meetings.example.com/cal#m1" -> "//meetings.example.com/cal#m1" [ PASS]
"file:/devel/WWW/2000/10/swap/test/reluri-1.n3" = "file:/devel/WWW/2000/10/swap/test/reluri-1.n3" [ PASS]
"file://meetings.example.com/cal#m1" = "file://meetings.example.com/cal#m1" [ PASS]
"//meetings.example.com/cal#m1" = "//meetings.example.com/cal#m1" [ PASS]
"file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3" * "file://meetings.example.com/cal#m1" -> "//meetings.example.com/cal#m1" [ PASS]
"file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3" * "file://meetings.example.com/cal#m1" -> "//meetings.example.com/cal#m1" [ PASS]
"file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3" = "file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3" [ PASS]
"file://meetings.example.com/cal#m1" = "file://meetings.example.com/cal#m1" [ PASS]
"//meetings.example.com/cal#m1" = "//meetings.example.com/cal#m1" [ PASS]
"file:/some/dir/foo" * "file:/some/dir/#blort" -> "./#blort" ..... [ PASS]
"file:/some/dir/foo" * "file:/some/dir/#blort" -> "./#blort" ..... [ PASS]
"file:/some/dir/foo" = "file:/some/dir/foo" ...................... [ PASS]
"file:/some/dir/#blort" = "file:/some/dir/#blort" ................ [ PASS]
"./#blort" = "./#blort" .......................................... [ PASS]
"file:/some/dir/foo" * "file:/some/dir/#" -> "./#" ............... [ PASS]
"file:/some/dir/foo" * "file:/some/dir/#" -> "./#" ............... [ PASS]
"file:/some/dir/foo" = "file:/some/dir/foo" ...................... [ PASS]
"file:/some/dir/#" = "file:/some/dir/#" .......................... [ PASS]
"./#" = "./#" .................................................... [ PASS]
"http://example/x/y%2Fz" * "http://example/x/abc" -> "./abc" ..... [ PASS]
"http://example/x/y%2Fz" * "http://example/x/abc" -> "./abc" ..... [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "abc") query=#f fragment=#f) [ PASS]
"http://example/x/y%2Fz" = "http://example/x/y%2Fz" .............. [ PASS]
"http://example/x/abc" = "http://example/x/abc" .................. [ PASS]
"./abc" = "./abc" ................................................ [ PASS]
"http://example/x/y/z" * "http://example/x%2Fabc" -> "/x%2Fabc" .. [ PASS]
"http://example/x/y/z" * "http://example/x%2Fabc" -> "/x%2Fabc" .. [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/abc") query=#f fragment=#f) [ PASS]
"http://example/x/y/z" = "http://example/x/y/z" .................. [ PASS]
"http://example/x%2Fabc" = "http://example/x%2Fabc" .............. [ PASS]
"/x%2Fabc" = "/x%2Fabc" .......................................... [ PASS]
"http://example/x/y%2Fz" * "http://example/x%2Fabc" -> "/x%2Fabc" [ PASS]
"http://example/x/y%2Fz" * "http://example/x%2Fabc" -> "/x%2Fabc" [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/abc") query=#f fragment=#f) [ PASS]
"http://example/x/y%2Fz" = "http://example/x/y%2Fz" .............. [ PASS]
"http://example/x%2Fabc" = "http://example/x%2Fabc" .............. [ PASS]
"/x%2Fabc" = "/x%2Fabc" .......................................... [ PASS]
"http://example/x%2Fy/z" * "http://example/x%2Fy/abc" -> "./abc" . [ PASS]
"http://example/x%2Fy/z" * "http://example/x%2Fy/abc" -> "./abc" . [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/y" "abc") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x/y" "abc") query=#f fragment=#f) [ PASS]
"http://example/x%2Fy/z" = "http://example/x%2Fy/z" .............. [ PASS]
"http://example/x%2Fy/abc" = "http://example/x%2Fy/abc" .......... [ PASS]
"./abc" = "./abc" ................................................ [ PASS]
"http://example/x/abc.efg" * "http://example/x/" -> "./" ......... [ PASS]
"http://example/x/abc.efg" * "http://example/x/" -> "./" ......... [ PASS]
#(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "") query=#f fragment=#f) = #(URI scheme=http authority=#(URIAuth host="example" port=#f) path=(/ "x" "") query=#f fragment=#f) [ PASS]
"http://example/x/abc.efg" = "http://example/x/abc.efg" .......... [ PASS]
"http://example/x/" = "http://example/x/" ........................ [ PASS]
"./" = "./" ...................................................... [ PASS]
200 tests completed in 0.314 seconds.
200 out of 200 (100%) tests passed.
-- done testing uri test -------------------------------------------------
-- testing rfc test ------------------------------------------------------
"/a/b/c/" * "./../../g" -> "/a/g" ................................ [ PASS]
"/a/b/c/" = "/a/b/c/" ............................................ [ PASS]
"./../../g" = "./../../g" ........................................ [ PASS]
"/a/g" = "/a/g" .................................................. [ PASS]
"/a/b/c/xyz" * "./../../g" -> "/a/g" ............................. [ PASS]
"/a/b/c/xyz" = "/a/b/c/xyz" ...................................... [ PASS]
"./../../g" = "./../../g" ........................................ [ PASS]
"/a/g" = "/a/g" .................................................. [ PASS]
"mid/content=5/" * "../6" -> "mid/6" ............................. [ PASS]
"mid/content=5/" = "mid/content=5/" .............................. [ PASS]
"../6" = "../6" .................................................. [ PASS]
"mid/6" = "mid/6" ................................................ [ PASS]
"mid/content=5/7" * "../6" -> "mid/6" ............................ [ PASS]
"mid/content=5/7" = "mid/content=5/7" ............................ [ PASS]
"../6" = "../6" .................................................. [ PASS]
"mid/6" = "mid/6" ................................................ [ PASS]
"http://a/b/c/d;p?q" * "g:h" -> "g:h" ............................ [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g:h" = "g:h" .................................................... [ PASS]
"g:h" = "g:h" .................................................... [ PASS]
"http://a/b/c/d;p?q" * "g" -> "http://a/b/c/g" ................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g" = "g" ........................................................ [ PASS]
"http://a/b/c/g" = "http://a/b/c/g" .............................. [ PASS]
"http://a/b/c/d;p?q" * "./g" -> "http://a/b/c/g" ................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"./g" = "./g" .................................................... [ PASS]
"http://a/b/c/g" = "http://a/b/c/g" .............................. [ PASS]
"http://a/b/c/d;p?q" * "g/" -> "http://a/b/c/g/" ................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g/" = "g/" ...................................................... [ PASS]
"http://a/b/c/g/" = "http://a/b/c/g/" ............................ [ PASS]
"http://a/b/c/d;p?q" * "/g" -> "http://a/g" ...................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"/g" = "/g" ...................................................... [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "//g" -> "http://g" ....................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"//g" = "//g" .................................................... [ PASS]
"http://g" = "http://g" .......................................... [ PASS]
"http://a/b/c/d;p?q" * "?y" -> "http://a/b/c/?y" ................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"?y" = "?y" ...................................................... [ PASS]
"http://a/b/c/?y" = "http://a/b/c/?y" ............................ [ PASS]
"http://a/b/c/d;p?q" * "g?y" -> "http://a/b/c/g?y" ............... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g?y" = "g?y" .................................................... [ PASS]
"http://a/b/c/g?y" = "http://a/b/c/g?y" .......................... [ PASS]
"http://a/b/c/d;p?q" * "#s" -> "http://a/b/c/d;p?q#s" ............ [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"#s" = "#s" ...................................................... [ PASS]
"http://a/b/c/d;p?q#s" = "http://a/b/c/d;p?q#s" .................. [ PASS]
"http://a/b/c/d;p?q" * "g#s" -> "http://a/b/c/g#s" ............... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g#s" = "g#s" .................................................... [ PASS]
"http://a/b/c/g#s" = "http://a/b/c/g#s" .......................... [ PASS]
"http://a/b/c/d;p?q" * "g?y#s" -> "http://a/b/c/g?y#s" ........... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g?y#s" = "g?y#s" ................................................ [ PASS]
"http://a/b/c/g?y#s" = "http://a/b/c/g?y#s" ...................... [ PASS]
"http://a/b/c/d;p?q" * ";x" -> "http://a/b/c/;x" ................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
";x" = ";x" ...................................................... [ PASS]
"http://a/b/c/;x" = "http://a/b/c/;x" ............................ [ PASS]
"http://a/b/c/d;p?q" * "g;x" -> "http://a/b/c/g;x" ............... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g;x" = "g;x" .................................................... [ PASS]
"http://a/b/c/g;x" = "http://a/b/c/g;x" .......................... [ PASS]
"http://a/b/c/d;p?q" * "g;x?y#s" -> "http://a/b/c/g;x?y#s" ....... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g;x?y#s" = "g;x?y#s" ............................................ [ PASS]
"http://a/b/c/g;x?y#s" = "http://a/b/c/g;x?y#s" .................. [ PASS]
"http://a/b/c/d;p?q" * "." -> "http://a/b/c/" .................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"." = "." ........................................................ [ PASS]
"http://a/b/c/" = "http://a/b/c/" ................................ [ PASS]
"http://a/b/c/d;p?q" * "./" -> "http://a/b/c/" ................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"./" = "./" ...................................................... [ PASS]
"http://a/b/c/" = "http://a/b/c/" ................................ [ PASS]
"http://a/b/c/d;p?q" * ".." -> "http://a/b/" ..................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
".." = ".." ...................................................... [ PASS]
"http://a/b/" = "http://a/b/" .................................... [ PASS]
"http://a/b/c/d;p?q" * "../" -> "http://a/b/" .................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../" = "../" .................................................... [ PASS]
"http://a/b/" = "http://a/b/" .................................... [ PASS]
"http://a/b/c/d;p?q" * "../g" -> "http://a/b/g" .................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../g" = "../g" .................................................. [ PASS]
"http://a/b/g" = "http://a/b/g" .................................. [ PASS]
"http://a/b/c/d;p?q" * "../.." -> "http://a/" .................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../.." = "../.." ................................................ [ PASS]
"http://a/" = "http://a/" ........................................ [ PASS]
"http://a/b/c/d;p?q" * "../../" -> "http://a/" ................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../" = "../../" .............................................. [ PASS]
"http://a/" = "http://a/" ........................................ [ PASS]
"http://a/b/c/d;p?q" * "../../g" -> "http://a/g" ................. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../g" = "../../g" ............................................ [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "" -> "http://a/b/c/d;p?q" ................ [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"" = "" .......................................................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"http://a/b/c/d;p?q" * "../../../g" -> "http://a/g" .............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../../g" = "../../../g" ...................................... [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "../../../../g" -> "http://a/g" ........... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../../../g" = "../../../../g" ................................ [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "../../../.." -> "http://a/" .............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../../.." = "../../../.." .................................... [ PASS]
"http://a/" = "http://a/" ........................................ [ PASS]
"http://a/b/c/d;p?q" * "../../../../" -> "http://a/" ............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"../../../../" = "../../../../" .................................. [ PASS]
"http://a/" = "http://a/" ........................................ [ PASS]
"http://a/b/c/d;p?q" * "/./g" -> "http://a/g" .................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"/./g" = "/./g" .................................................. [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "/../g" -> "http://a/g" ................... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"/../g" = "/../g" ................................................ [ PASS]
"http://a/g" = "http://a/g" ...................................... [ PASS]
"http://a/b/c/d;p?q" * "g.." -> "http://a/b/c/g.." ............... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g.." = "g.." .................................................... [ PASS]
"http://a/b/c/g.." = "http://a/b/c/g.." .......................... [ PASS]
"http://a/b/c/d;p?q" * "..g" -> "http://a/b/c/..g" ............... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"..g" = "..g" .................................................... [ PASS]
"http://a/b/c/..g" = "http://a/b/c/..g" .......................... [ PASS]
"http://a/b/c/d;p?q" * "./../g" -> "http://a/b/g" ................ [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"./../g" = "./../g" .............................................. [ PASS]
"http://a/b/g" = "http://a/b/g" .................................. [ PASS]
"http://a/b/c/d;p?q" * "./g/." -> "http://a/b/c/g/" .............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"./g/." = "./g/." ................................................ [ PASS]
"http://a/b/c/g/" = "http://a/b/c/g/" ............................ [ PASS]
"http://a/b/c/d;p?q" * "g/./h" -> "http://a/b/c/g/h" ............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g/./h" = "g/./h" ................................................ [ PASS]
"http://a/b/c/g/h" = "http://a/b/c/g/h" .......................... [ PASS]
"http://a/b/c/d;p?q" * "g/../h" -> "http://a/b/c/h" .............. [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g/../h" = "g/../h" .............................................. [ PASS]
"http://a/b/c/h" = "http://a/b/c/h" .............................. [ PASS]
"http://a/b/c/d;p?q" * "g;x=1/./y" -> "http://a/b/c/g;x=1/y" ..... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g;x=1/./y" = "g;x=1/./y" ........................................ [ PASS]
"http://a/b/c/g;x=1/y" = "http://a/b/c/g;x=1/y" .................. [ PASS]
"http://a/b/c/d;p?q" * "g;x=1/../y" -> "http://a/b/c/y" .......... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g;x=1/../y" = "g;x=1/../y" ...................................... [ PASS]
"http://a/b/c/y" = "http://a/b/c/y" .............................. [ PASS]
"http://a/b/c/d;p?q" * "g?y/./x" -> "http://a/b/c/g?y/./x" ....... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g?y/./x" = "g?y/./x" ............................................ [ PASS]
"http://a/b/c/g?y/./x" = "http://a/b/c/g?y/./x" .................. [ PASS]
"http://a/b/c/d;p?q" * "g?y/../x" -> "http://a/b/c/g?y/../x" ..... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g?y/../x" = "g?y/../x" .......................................... [ PASS]
"http://a/b/c/g?y/../x" = "http://a/b/c/g?y/../x" ................ [ PASS]
"http://a/b/c/d;p?q" * "g#s/./x" -> "http://a/b/c/g#s/./x" ....... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g#s/./x" = "g#s/./x" ............................................ [ PASS]
"http://a/b/c/g#s/./x" = "http://a/b/c/g#s/./x" .................. [ PASS]
"http://a/b/c/d;p?q" * "g#s/../x" -> "http://a/b/c/g#s/../x" ..... [ PASS]
"http://a/b/c/d;p?q" = "http://a/b/c/d;p?q" ...................... [ PASS]
"g#s/../x" = "g#s/../x" .......................................... [ PASS]
"http://a/b/c/g#s/../x" = "http://a/b/c/g#s/../x" ................ [ PASS]
180 tests completed in 0.333 seconds.
180 out of 180 (100%) tests passed.
-- done testing rfc test -------------------------------------------------
-- testing extra-test ----------------------------------------------------
"?a=b&c=d" * "" -> "?a=b&c=d" .................................... [ PASS]
"http://a/b/c/d;p?q" * "" -> "http://a/b/c/d;p?q" ................ [ PASS]
"" * "http://a/b/c/d;p?q" -> "http://a/b/c/d;p?q" ................ [ PASS]
"http://a/b/c/d;p?q" * "http:" -> "http:" ........................ [ PASS]
"http://a/b/c/d;p?q" * "..%2f" -> "http://a/b/c/..%2f" ........... [ PASS]
"http://a/b/c/d/" * "" -> "http://a/b/c/d/" ...................... [ PASS]
"http://a/b/c/d" * "" -> "http://a/b/c/d" ........................ [ PASS]
"http://a/b/c/d/" * ".." -> "http://a/b/c/" ...................... [ PASS]
"http://a/b/c/d/" * "../e" -> "http://a/b/c/e" ................... [ PASS]
"http://a/b/c/d/" * "../e/" -> "http://a/b/c/e/" ................. [ PASS]
"http://a/b//c///d///" * "../.." -> "http://a/b//c///d/" ......... [ PASS]
"http://a/b/c/d/" * "..//x" -> "http://a/b/c//x" ................. [ PASS]
"http://a" * "b" -> "http://a/b" ................................. [ PASS]
"http://a//b//c" * "../../../.." -> "http://a/" .................. [ PASS]
14 tests completed in 0.027 seconds.
14 out of 14 (100%) tests passed.
-- done testing extra-test -----------------------------------------------
-- testing reverse-extra-test --------------------------------------------
"http://a/b/c/d;p?q" * "http://a/b/c/d;p?q" -> "" ................ [ PASS]
"http://a/b/c/d;p?q" * "http://a/b/c/e" -> "./e" ................. [ PASS]
"http://a/b/c/d;p?q" * "http://a/b/c/" -> "./" ................... [ PASS]
"http://a/b/c/d;p?q" * "http://a/b/e" -> "../e" .................. [ PASS]
"http://a/b/c/d;p?q" * "http://a/b/c" -> "../c" .................. [ PASS]
"http://a/b/c/d;p?q" * "http://a/b/" -> "../" .................... [ PASS]
"http://a/b/c/d;p?q" * "http://a/" -> "/" ........................ [ PASS]
"http://a/b/c/d;p?q" * "http://a" -> "//a" ....................... [ PASS]
"http://a/b/c/d;p?q" * "http://b" -> "//b" ....................... [ PASS]
"http://a/b/c/d;p?q" * "http://b/" -> "//b/" ..................... [ PASS]
"http://a/b/c/d;p?q" * "http://b/c" -> "//b/c" ................... [ PASS]
"http://a/b/c/d;p?q" * "ftp://a/b/c/d;p?q" -> "ftp://a/b/c/d;p?q" [ PASS]
"http://a/b/c/d;p?q" * "ftp://x/y/z;a?b" -> "ftp://x/y/z;a?b" .... [ PASS]
13 tests completed in 0.028 seconds.
13 out of 13 (100%) tests passed.
-- done testing reverse-extra-test ---------------------------------------
-- testing uri-encode-string test ----------------------------------------
"foo?bar" -> "foo%3Fbar" ......................................... [ PASS]
"foo&bar" -> "foo%26bar" ......................................... [ PASS]
"foo%20bar" -> "foo%2520bar" ..................................... [ PASS]
"foo\x00bar\n" -> "foo%00bar%0A" ................................. [ PASS]
4 tests completed in 0.001 seconds.
4 out of 4 (100%) tests passed.
-- done testing uri-encode-string test -----------------------------------
-- testing uri-decode-string test ----------------------------------------
"foo%3Fbar" -> "foo?bar" ......................................... [ PASS]
"foo%26bar" -> "foo&bar" ......................................... [ PASS]
"foo%2520bar" -> "foo%20bar" ..................................... [ PASS]
"foo%00bar%0A" -> "foo\x00bar\n" ................................. [ PASS]
4 tests completed in 0.001 seconds.
4 out of 4 (100%) tests passed.
-- done testing uri-decode-string test -----------------------------------
-- testing normalize-case test -------------------------------------------
"http://exa%2fmple/FOO%2fbar" -> "http://exa%2Fmple/FOO%2Fbar" ... [ PASS]
"http://EXA%2fMPLE/FOO%2fbar" -> "http://exa%2Fmple/FOO%2Fbar" ... [ PASS]
"HTTP://example/" -> "http://example/" ........................... [ PASS]
"http://user:PASS@example/FOO%2fbar" -> "http://user:PASS@example/FOO%2Fbar" [ PASS]
"http://uS%2fer:PA%2fSS@example/FOO%2fbar" -> "http://uS%2Fer:PA%2FSS@example/FOO%2Fbar" [ PASS]
"HTTP://example/?mooH=MUMBLe%2f" -> "http://example/?mooH=MUMBLe%2F" [ PASS]
"http://example/#baR%2f" -> "http://example/#baR%2F" ............. [ PASS]
7 tests completed in 0.023 seconds.
7 out of 7 (100%) tests passed.
-- done testing normalize-case test --------------------------------------
-- testing internal representations --------------------------------------
-- testing scheme ----------------------------------------------------
"http.:" decoded as http. .................................... [ PASS]
http. encoded to "http.:" .................................... [ PASS]
"http+:" decoded as http+ .................................... [ PASS]
http+ encoded to "http+:" .................................... [ PASS]
"http-:" decoded as http- .................................... [ PASS]
http- encoded to "http-:" .................................... [ PASS]
"HTTP:" decoded as HTTP ...................................... [ PASS]
HTTP encoded to "HTTP:" ...................................... [ PASS]
"" decoded as #f ............................................. [ PASS]
#f encoded to "" ............................................. [ PASS]
"/foo" decoded as #f ......................................... [ PASS]
#f encoded to "/foo" ......................................... [ PASS]
12 tests completed in 0.002 seconds.
12 out of 12 (100%) tests passed.
-- done testing scheme -----------------------------------------------
-- testing host ------------------------------------------------------
"//:123" decoded as "" ....................................... [ PASS]
"" encoded to "//:123" ....................................... [ PASS]
2 tests completed in 0.001 seconds.
2 out of 2 (100%) tests passed.
-- done testing host -------------------------------------------------
-- testing port ------------------------------------------------------
"//host:123" decoded as 123 .................................. [ PASS]
123 encoded to "//host:123" .................................. [ PASS]
2 tests completed in 0.005 seconds.
2 out of 2 (100%) tests passed.
-- done testing port -------------------------------------------------
-- testing username --------------------------------------------------
"//foo" decoded as #f ........................................ [ PASS]
#f encoded to "//foo" ........................................ [ PASS]
"//@" decoded as "" .......................................... [ PASS]
"" encoded to "//@" .......................................... [ PASS]
"//foo@" decoded as "foo" .................................... [ PASS]
"foo" encoded to "//foo@" .................................... [ PASS]
"//foo:bar@" decoded as "foo" ................................ [ PASS]
"foo" encoded to "//foo:bar@" ................................ [ PASS]
"//foo:bar:qux@" decoded as "foo" ............................ [ PASS]
"foo" encoded to "//foo:bar:qux@" ............................ [ PASS]
"//foo%20bar@" decoded as "foo%20bar" ........................ [ PASS]
"foo%20bar" encoded to "//foo%20bar@" ........................ [ PASS]
"//foo%3Abar:qux@" decoded as "foo%3Abar" .................... [ PASS]
"foo%3Abar" encoded to "//foo%3Abar:qux@" .................... [ PASS]
"//foo%2Ebar@" decoded as "foo.bar" .......................... [ PASS]
"foo.bar" encoded to "//foo.bar@" ............................ [ PASS]
16 tests completed in 0.005 seconds.
16 out of 16 (100%) tests passed.
-- done testing username ---------------------------------------------
-- testing password -------------------------------------------------
"//foo" decoded as #f ........................................ [ PASS]
#f encoded to "//foo" ........................................ [ PASS]
"//@" decoded as #f .......................................... [ PASS]
#f encoded to "//@" .......................................... [ PASS]
"//foo@" decoded as #f ....................................... [ PASS]
#f encoded to "//foo@" ....................................... [ PASS]
"//foo:bar@" decoded as "bar" ................................ [ PASS]
"bar" encoded to "//foo:bar@" ................................ [ PASS]
"//foo:bar:qux@" decoded as "bar:qux" ........................ [ PASS]
"bar:qux" encoded to "//foo:bar:qux@" ........................ [ PASS]
"//foo:bar%20qux@" decoded as "bar%20qux" .................... [ PASS]
"bar%20qux" encoded to "//foo:bar%20qux@" .................... [ PASS]
"//foo:bar%2Equx@" decoded as "bar.qux" ...................... [ PASS]
"bar.qux" encoded to "//foo:bar.qux@" ........................ [ PASS]
14 tests completed in 0.004 seconds.
14 out of 14 (100%) tests passed.
-- done testing password --------------------------------------------
-- testing path ------------------------------------------------------
"//foo" decoded as () ........................................ [ PASS]
() encoded to "//foo" ........................................ [ PASS]
"foo%20bar" decoded as ("foo%20bar") ......................... [ PASS]
("foo%20bar") encoded to "foo%20bar" ......................... [ PASS]
"foo%2Fbar" decoded as ("foo/bar") ........................... [ PASS]
("foo/bar") encoded to "foo%2Fbar" ........................... [ PASS]
"foo%2ebar" decoded as ("foo.bar") ........................... [ PASS]
("foo.bar") encoded to "foo.bar" ............................. [ PASS]
"foo/bar%2Fqux" decoded as ("foo" "bar/qux") ................. [ PASS]
("foo" "bar/qux") encoded to "foo/bar%2Fqux" ................. [ PASS]
"foo/" decoded as ("foo" "") ................................. [ PASS]
("foo" "") encoded to "foo/" ................................. [ PASS]
"//foo//bar" decoded as (/ "" "bar") ......................... [ PASS]
(/ "" "bar") encoded to "//foo//bar" ......................... [ PASS]
"//foo///bar" decoded as (/ "" "" "bar") ..................... [ PASS]
(/ "" "" "bar") encoded to "//foo///bar" ..................... [ PASS]
"/foo//bar" decoded as (/ "foo" "" "bar") .................... [ PASS]
(/ "foo" "" "bar") encoded to "/foo//bar" .................... [ PASS]
"/foo///bar" decoded as (/ "foo" "" "" "bar") ................ [ PASS]
(/ "foo" "" "" "bar") encoded to "/foo///bar" ................ [ PASS]
"foo//bar" decoded as ("foo" "" "bar") ....................... [ PASS]
("foo" "" "bar") encoded to "foo//bar" ....................... [ PASS]
"foo///bar" decoded as ("foo" "" "" "bar") ................... [ PASS]
("foo" "" "" "bar") encoded to "foo///bar" ................... [ PASS]
"foo//" decoded as ("foo" "" "") ............................. [ PASS]
("foo" "" "") encoded to "foo//" ............................. [ PASS]
"foo///" decoded as ("foo" "" "" "") ......................... [ PASS]
("foo" "" "" "") encoded to "foo///" ......................... [ PASS]
"foo/bar:qux" decoded as ("foo" "bar:qux") ................... [ PASS]
("foo" "bar:qux") encoded to "foo/bar:qux" ................... [ PASS]
"/foo%2Fbar" decoded as (/ "foo/bar") ........................ [ PASS]
(/ "foo/bar") encoded to "/foo%2Fbar" ........................ [ PASS]
"/foo/" decoded as (/ "foo" "") .............................. [ PASS]
(/ "foo" "") encoded to "/foo/" .............................. [ PASS]
"/" decoded as (/ "") ........................................ [ PASS]
(/ "") encoded to "/" ........................................ [ PASS]
"/?foo" decoded as (/ "") .................................... [ PASS]
(/ "") encoded to "/?foo" .................................... [ PASS]
"/#foo" decoded as (/ "") .................................... [ PASS]
(/ "") encoded to "/#foo" .................................... [ PASS]
"/foo:bar" decoded as (/ "foo:bar") .......................... [ PASS]
(/ "foo:bar") encoded to "/foo:bar" .......................... [ PASS]
42 tests completed in 0.013 seconds.
42 out of 42 (100%) tests passed.
-- done testing path -------------------------------------------------
-- testing query ----------------------------------------------------
"//" decoded as #f ........................................... [ PASS]
#f encoded to "//" ........................................... [ PASS]
"/?foo" decoded as "foo" ..................................... [ PASS]
"foo" encoded to "/?foo" ..................................... [ PASS]
"?foo" decoded as "foo" ...................................... [ PASS]
"foo" encoded to "?foo" ...................................... [ PASS]
"?foo?bar" decoded as "foo?bar" .............................. [ PASS]
"foo?bar" encoded to "?foo?bar" .............................. [ PASS]
"?foo/bar" decoded as "foo/bar" .............................. [ PASS]
"foo/bar" encoded to "?foo/bar" .............................. [ PASS]
"?foo%3Fbar" decoded as "foo%3Fbar" .......................... [ PASS]
"foo%3Fbar" encoded to "?foo%3Fbar" .......................... [ PASS]
"?foo%2Ebar" decoded as "foo.bar" ............................ [ PASS]
"foo.bar" encoded to "?foo.bar" .............................. [ PASS]
14 tests completed in 0.003 seconds.
14 out of 14 (100%) tests passed.
-- done testing query -----------------------------------------------
-- testing fragment --------------------------------------------------
"?foo" decoded as #f ......................................... [ PASS]
#f encoded to "?foo" ......................................... [ PASS]
"#bar" decoded as "bar" ...................................... [ PASS]
"bar" encoded to "#bar" ...................................... [ PASS]
"/#bar" decoded as "bar" ..................................... [ PASS]
"bar" encoded to "/#bar" ..................................... [ PASS]
"?foo#bar" decoded as "bar" .................................. [ PASS]
"bar" encoded to "?foo#bar" .................................. [ PASS]
"/?foo#bar" decoded as "bar" ................................. [ PASS]
"bar" encoded to "/?foo#bar" ................................. [ PASS]
"#foo?bar" decoded as "foo?bar" .............................. [ PASS]
"foo?bar" encoded to "#foo?bar" .............................. [ PASS]
"#foo/bar" decoded as "foo/bar" .............................. [ PASS]
"foo/bar" encoded to "#foo/bar" .............................. [ PASS]
"#foo%3Fbar" decoded as "foo%3Fbar" .......................... [ PASS]
"foo%3Fbar" encoded to "#foo%3Fbar" .......................... [ PASS]
"#foo%2Ebar" decoded as "foo.bar" ............................ [ PASS]
"foo.bar" encoded to "#foo.bar" .............................. [ PASS]
18 tests completed in 0.008 seconds.
18 out of 18 (100%) tests passed.
-- done testing fragment ---------------------------------------------
8 subgroups completed in 0.041 seconds.
8 out of 8 (100%) subgroups passed.
-- done testing internal representations ---------------------------------
-- testing absolute/relative distinction ---------------------------------
"" is a relative ref ............................................. [ PASS]
"" is not an URI ................................................. [ PASS]
"" is not an absolute URI ........................................ [ PASS]
(absolute-uri s) ................................................. [ PASS]
"bar" is a relative ref .......................................... [ PASS]
"bar" is not an URI .............................................. [ PASS]
"bar" is not an absolute URI ..................................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"bar?a=b" is a relative ref ...................................... [ PASS]
"bar?a=b" is not an URI .......................................... [ PASS]
"bar?a=b" is not an absolute URI ................................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
"bar#frag" is a relative ref ..................................... [ PASS]
"bar#frag" is not an URI ......................................... [ PASS]
"bar#frag" is not an absolute URI ................................ [ PASS]
(absolute-uri s) ................................................. [ PASS]
"bar?a=b#frag" is a relative ref ................................. [ PASS]
"bar?a=b#frag" is not an URI ..................................... [ PASS]
"bar?a=b#frag" is not an absolute URI ............................ [ PASS]
(absolute-uri s) ................................................. [ PASS]
"/" is a relative ref ............................................ [ PASS]
"/" is not an URI ................................................ [ PASS]
"/" is not an absolute URI ....................................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"/bar" is a relative ref ......................................... [ PASS]
"/bar" is not an URI ............................................. [ PASS]
"/bar" is not an absolute URI .................................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"/bar?a=b" is a relative ref ..................................... [ PASS]
"/bar?a=b" is not an URI ......................................... [ PASS]
"/bar?a=b" is not an absolute URI ................................ [ PASS]
(absolute-uri s) ................................................. [ PASS]
"/bar#frag" is a relative ref .................................... [ PASS]
"/bar#frag" is not an URI ........................................ [ PASS]
"/bar#frag" is not an absolute URI ............................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"/bar?a=b#frag" is a relative ref ................................ [ PASS]
"/bar?a=b#frag" is not an URI .................................... [ PASS]
"/bar?a=b#frag" is not an absolute URI ........................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo" is a relative ref ........................................ [ PASS]
"//foo" is not an URI ............................................ [ PASS]
"//foo" is not an absolute URI ................................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo?a=b" is a relative ref .................................... [ PASS]
"//foo?a=b" is not an URI ........................................ [ PASS]
"//foo?a=b" is not an absolute URI ............................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo#frag" is a relative ref ................................... [ PASS]
"//foo#frag" is not an URI ....................................... [ PASS]
"//foo#frag" is not an absolute URI .............................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo?a=b#frag" is a relative ref ............................... [ PASS]
"//foo?a=b#frag" is not an URI ................................... [ PASS]
"//foo?a=b#frag" is not an absolute URI .......................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo/bar" is a relative ref .................................... [ PASS]
"//foo/bar" is not an URI ........................................ [ PASS]
"//foo/bar" is not an absolute URI ............................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo/bar?a=b" is a relative ref ................................ [ PASS]
"//foo/bar?a=b" is not an URI .................................... [ PASS]
"//foo/bar?a=b" is not an absolute URI ........................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo/bar#frag" is a relative ref ............................... [ PASS]
"//foo/bar#frag" is not an URI ................................... [ PASS]
"//foo/bar#frag" is not an absolute URI .......................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"//foo/bar?a=b#frag" is a relative ref ........................... [ PASS]
"//foo/bar?a=b#frag" is not an URI ............................... [ PASS]
"//foo/bar?a=b#frag" is not an absolute URI ...................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo" is not a relative ref ............................... [ PASS]
"http://foo" is an URI ........................................... [ PASS]
"http://foo" is an absolute URI .................................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo?a=b" is not a relative ref ........................... [ PASS]
"http://foo?a=b" is an URI ....................................... [ PASS]
"http://foo?a=b" is an absolute URI .............................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo/bar" is not a relative ref ........................... [ PASS]
"http://foo/bar" is an URI ....................................... [ PASS]
"http://foo/bar" is an absolute URI .............................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo/bar?a=b" is not a relative ref ....................... [ PASS]
"http://foo/bar?a=b" is an URI ................................... [ PASS]
"http://foo/bar?a=b" is an absolute URI .......................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo#frag" is not a relative ref .......................... [ PASS]
"http://foo#frag" is an URI ...................................... [ PASS]
"http://foo#frag" is not an absolute URI ......................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo?a=b#frag" is not a relative ref ...................... [ PASS]
"http://foo?a=b#frag" is an URI .................................. [ PASS]
"http://foo?a=b#frag" is not an absolute URI ..................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo/bar#frag" is not a relative ref ...................... [ PASS]
"http://foo/bar#frag" is an URI .................................. [ PASS]
"http://foo/bar#frag" is not an absolute URI ..................... [ PASS]
(absolute-uri s) ................................................. [ PASS]
"http://foo/bar?a=b#frag" is not a relative ref .................. [ PASS]
"http://foo/bar?a=b#frag" is an URI .............................. [ PASS]
"http://foo/bar?a=b#frag" is not an absolute URI ................. [ PASS]
(absolute-uri s) ................................................. [ PASS]
104 tests completed in 0.061 seconds.
104 out of 104 (100%) tests passed.
-- done testing absolute/relative distinction ----------------------------
-- testing absolute/relative path distinction ----------------------------
"/" is not a relative path ....................................... [ PASS]
"/" is an absolute path .......................................... [ PASS]
"/foo" is not a relative path .................................... [ PASS]
"/foo" is an absolute path ....................................... [ PASS]
"//foo/" is not a relative path .................................. [ PASS]
"//foo/" is an absolute path ..................................... [ PASS]
"http://foo/bar" is not a relative path .......................... [ PASS]
"http://foo/bar" is an absolute path ............................. [ PASS]
"http://foo/" is not a relative path ............................. [ PASS]
"http://foo/" is an absolute path ................................ [ PASS]
"http://foo/#qux" is not a relative path ......................... [ PASS]
"http://foo/#qux" is an absolute path ............................ [ PASS]
"http://foo/?bar=qux" is not a relative path ..................... [ PASS]
"http://foo/?bar=qux" is an absolute path ........................ [ PASS]
"" is a relative path ............................................ [ PASS]
"" is not an absolute path ....................................... [ PASS]
"http://foo" is a relative path .................................. [ PASS]
"http://foo" is not an absolute path ............................. [ PASS]
"//foo" is a relative path ....................................... [ PASS]
"//foo" is not an absolute path .................................. [ PASS]
"http://foo#bar" is a relative path .............................. [ PASS]
"http://foo#bar" is not an absolute path ......................... [ PASS]
"http://foo?bar=qux" is a relative path .......................... [ PASS]
"http://foo?bar=qux" is not an absolute path ..................... [ PASS]
24 tests completed in 0.008 seconds.
24 out of 24 (100%) tests passed.
-- done testing absolute/relative path distinction -----------------------
-- testing Invalid URI-references ----------------------------------------
":" is not a valid uri-reference ................................. [ PASS]
"1:" is not a valid uri-reference ................................ [ PASS]
"//host:abc" is not a valid uri-reference ........................ [ PASS]
" " is not a valid uri-reference ................................. [ PASS]
"foo " is not a valid uri-reference .............................. [ PASS]
" foo " is not a valid uri-reference ............................. [ PASS]
"<foo" is not a valid uri-reference .............................. [ PASS]
"foo>" is not a valid uri-reference .............................. [ PASS]
"<foo>" is not a valid uri-reference ............................. [ PASS]
"\"foo\"" is not a valid uri-reference ........................... [ PASS]
"%" is not a valid uri-reference ................................. [ PASS]
"abc%xyz" is not a valid uri-reference ........................... [ PASS]
"http://foo.com/bar?a=b|c" is not a valid uri-reference .......... [ PASS]
13 tests completed in 0.003 seconds.
13 out of 13 (100%) tests passed.
-- done testing Invalid URI-references -----------------------------------
-- testing miscellaneous -------------------------------------------------
(uri->string (update-uri (uri-reference "") path: '("foo:bar"))) . [ PASS]
1 test completed in 0.001 seconds.
1 out of 1 (100%) test passed.
-- done testing miscellaneous --------------------------------------------
-- testing Example URIs from RFC 4151 ------------------------------------
tag:timothy@hpl.hp.com,2001:web/externalHome ..................... [ PASS]
tag:sandro@w3.org,2004-05:Sandro ................................. [ PASS]
tag:my-ids.com,2001-09-15:TimKindberg:presentations:UBath2004-05-19 [ PASS]
tag:blogger.com,1999:blog-555 .................................... [ PASS]
tag:yaml.org,2002:int ............................................ [ PASS]
5 tests completed in 0.009 seconds.
5 out of 5 (100%) tests passed.
-- done testing Example URIs from RFC 4151 -------------------------------
-- testing Example URIs from RFC 4452 ------------------------------------
info:ddc/22/eng//004.678 ......................................... [ PASS]
info:lccn/2002022641 ............................................. [ PASS]
info:sici/0363-0277(19950315)120:5%3C%3E1.0.TX;2-V ............... [ PASS]
info:bibcode/2003Icar..163..263Z ................................. [ PASS]
4 tests completed in 0.007 seconds.
4 out of 4 (100%) tests passed.
-- done testing Example URIs from RFC 4452 -------------------------------
-- testing Example URIs from RFC 4452 ------------------------------------
sms:+15105550101 ................................................. [ PASS]
sms:+15105550101,+15105550102 .................................... [ PASS]
sms:+15105550101?body=hello%20there .............................. [ PASS]
3 tests completed in 0.005 seconds.
3 out of 3 (100%) tests passed.
-- done testing Example URIs from RFC 4452 -------------------------------
-- testing Example URIs from RFC 4501 ------------------------------------
dns:www.example.org.?clAsS=IN;tYpE=A ............................. [ PASS]
dns://192.168.1.1/ftp.example.org?type=A ......................... [ PASS]
dns:world%20wide%20web.example%5c.domain.org?TYPE=TXT ............ [ PASS]
dns://fw.example.org/*.%20%00.example?type=TXT ................... [ PASS]
4 tests completed in 0.004 seconds.
4 out of 4 (100%) tests passed.
-- done testing Example URIs from RFC 4501 -------------------------------
-- testing Example URIs from RFC 5122 ------------------------------------
xmpp:nasty!%23$%25()*+,-.;=%3F%5B%5C%5D%5E_%60%7B%7C%7D~node@example.com [ PASS]
xmpp:node@example.com/repulsive%20!%23%22$%25&'()*+,-.%2F:;%3C=%3E%3F%40%5B%5C%5D%5E_%60%7B%7C%7D~resource [ PASS]
2 tests completed in 0.007 seconds.
2 out of 2 (100%) tests passed.
-- done testing Example URIs from RFC 5122 -------------------------------
-- testing manual constructor --------------------------------------------
(scheme: http host: "example.com" port: 123 path: (/ "foo" "bar") query: "a=b;c=d" fragment: "location") -> "http://example.com:123/foo/bar?a=b;c=d#location" [ PASS]
(host: "example.com" port: 123 path: (/ "foo" "bar") query: "a=b;c=d" fragment: "location") -> "//example.com:123/foo/bar?a=b;c=d#location" [ PASS]
(port: 123 path: (/ "foo" "bar") query: "a=b;c=d" fragment: "location") -> "/foo/bar?a=b;c=d#location" [ PASS]
(path: ("foo" "bar") query: "a=b;c=d" fragment: "location") -> "foo/bar?a=b;c=d#location" [ PASS]
(path: (/ "") query: "a=b;c=d" fragment: "location") -> "/?a=b;c=d#location" [ PASS]
(query: "a=b;c=d" fragment: "location") -> "?a=b;c=d#location" ... [ PASS]
(fragment: "location") -> "#location" ............................ [ PASS]
(host: "example.com" query: "a=b;c=d") -> "//example.com?a=b;c=d" [ PASS]
(host: "example.com" fragment: "location") -> "//example.com#location" [ PASS]
(path: (/ "")) -> "/" ............................................ [ PASS]
(path: (/)) -> "/" ............................................... [ PASS]
(path: ()) -> "" ................................................. [ PASS]
() -> "" ......................................................... [ PASS]
13 tests completed in 0.002 seconds.
13 out of 13 (100%) tests passed.
-- done testing manual constructor ---------------------------------------
18 subgroups completed in 0.926 seconds.
18 out of 18 (100%) subgroups passed.
-- done testing uri-generic --------------------------------------------------