Test output for uri-generic

Testing time: 12.0s

CHICKEN_INSTALL_PREFIX=/root/src/salmonella/salmonella-4.5.0/repo CHICKEN_INCLUDE_PATH=/root/src/salmonella/salmonella-4.5.0/repo/share/chicken CHICKEN_REPOSITORY=/root/src/salmonella/salmonella-4.5.0/repo/lib/chicken/5 /usr/local/chicken-4.5.0/bin/csi -script run.scm

-- 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.937 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.991 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.087 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.087 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.071 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.009 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.006 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.013 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.013 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.047 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.011 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.007 seconds.
        18 out of 18 (100%) tests passed.
        -- done testing fragment ---------------------------------------------

    8 subgroups completed in 0.108 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.201 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.03 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.016 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 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.026 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.013 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.009 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.02 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.019 seconds.
    2 out of 2 (100%) tests passed.
    -- done testing Example URIs from RFC 5122 -------------------------------

17 subgroups completed in 2.685 seconds.
17 out of 17 (100%) subgroups passed.
-- done testing uri-generic --------------------------------------------------