Test output for uri-common [ok]

Testing time: 1s

'/usr/home/chicken/salmonella/build/salmonella-run-publish/chicken/bin/csi' -script run.scm < /dev/null 2>&1

-- testing uri-common --------------------------------------------------------

    -- testing internal representations --------------------------------------

        -- testing scheme ----------------------------------------------------
        "http:" decoded as http ...................................... [ PASS]
        http encoded to "http:" ...................................... [ PASS]
        "" decoded as #f ............................................. [ PASS]
        #f encoded to "" ............................................. [ PASS]
        4 tests completed in 1/1000 seconds.
        4 out of 4 (100%) tests passed.
        -- done testing scheme -----------------------------------------------


        -- testing host ------------------------------------------------------
        "http://a" decoded as "a" .................................... [ PASS]
        "a" encoded to "http://a" .................................... [ PASS]
        "http://a:8080" decoded as "a" ............................... [ PASS]
        "a" encoded to "http://a:8080" ............................... [ PASS]
        "//a" decoded as "a" ......................................... [ PASS]
        "a" encoded to "//a" ......................................... [ PASS]
        "/foo" decoded as #f ......................................... [ PASS]
        #f encoded to "/foo" ......................................... [ PASS]
        "http://" decoded as "" ...................................... [ PASS]
        "" encoded to "http://" ...................................... [ PASS]
        "http://:123" decoded as "" .................................. [ PASS]
        "" encoded to "http://:123" .................................. [ PASS]
        12 tests completed in 1/1000 seconds.
        12 out of 12 (100%) tests passed.
        -- done testing host -------------------------------------------------


        -- testing port ------------------------------------------------------
        "http://a" decoded as 80 ..................................... [ PASS]
        80 encoded to "http://a" ..................................... [ PASS]
        "http://a:8080" decoded as 8080 .............................. [ PASS]
        8080 encoded to "http://a:8080" .............................. [ PASS]
        "https://a" decoded as 443 ................................... [ PASS]
        443 encoded to "https://a" ................................... [ PASS]
        "https://a:1" decoded as 1 ................................... [ PASS]
        1 encoded to "https://a:1" ................................... [ PASS]
        "//a" decoded as #f .......................................... [ PASS]
        #f encoded to "//a" .......................................... [ PASS]
        10 tests completed in 1/1000 seconds.
        10 out of 10 (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 bar" .......................... [ PASS]
        "foo bar" encoded to "//foo%20bar@" .......................... [ PASS]
        "//foo%3Abar:qux@" decoded as "foo:bar" ...................... [ PASS]
        "foo:bar" encoded to "//foo%3Abar:qux@" ...................... [ PASS]
        "//foo%2Ebar@" decoded as "foo.bar" .......................... [ PASS]
        "foo.bar" encoded to "//foo.bar@" ............................ [ PASS]
        16 tests completed in 1/500 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 qux" ...................... [ PASS]
        "bar qux" 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 1/1000 seconds.
        14 out of 14 (100%) tests passed.
        -- done testing password  --------------------------------------------


        -- testing path ------------------------------------------------------
        "http://foo" decoded as (/ "") ............................... [ PASS]
        (/ "") encoded to "http://foo" ............................... [ PASS]
        "http://foo/" decoded as (/ "") .............................. [ PASS]
        (/ "") encoded to "http://foo/" .............................. [ PASS]
        "//foo" decoded as () ........................................ [ PASS]
        () encoded to "//foo" ........................................ [ PASS]
        "//foo/" decoded as (/ "") ................................... [ PASS]
        (/ "") encoded to "//foo/" ................................... [ PASS]
        "foo%20bar" decoded as ("foo bar") ........................... [ PASS]
        ("foo bar") 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: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]
        "/foo:bar" decoded as (/ "foo:bar") .......................... [ PASS]
        (/ "foo:bar") encoded to "/foo:bar" .......................... [ PASS]
        26 tests completed in 3/1000 seconds.
        26 out of 26 (100%) tests passed.
        -- done testing path -------------------------------------------------


        -- testing query  ----------------------------------------------------
        "//" decoded as () ........................................... [ PASS]
        () encoded to "//" ........................................... [ PASS]
        "?" decoded as ((|| . #t)) ................................... [ PASS]
        ((|| . #t)) encoded to "?" ................................... [ PASS]
        "?foo" decoded as ((foo . #t)) ............................... [ PASS]
        ((foo . #t)) encoded to "?foo" ............................... [ PASS]
        "?foo?bar" decoded as ((foo?bar . #t)) ....................... [ PASS]
        ((foo?bar . #t)) encoded to "?foo?bar" ....................... [ PASS]
        "?foo/bar" decoded as ((foo/bar . #t)) ....................... [ PASS]
        ((foo/bar . #t)) encoded to "?foo/bar" ....................... [ PASS]
        "?foo%3Fbar" decoded as ((foo?bar . #t)) ..................... [ PASS]
        ((foo?bar . #t)) encoded to "?foo%3Fbar" ..................... [ PASS]
        "?foo%2Ebar" decoded as ((foo.bar . #t)) ..................... [ PASS]
        ((foo.bar . #t)) encoded to "?foo.bar" ....................... [ PASS]
        14 tests completed in 1/500 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]
        "?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%3Fbar" decoded as "foo?bar" ............................ [ PASS]
        "foo?bar" encoded to "#foo%3Fbar" ............................ [ PASS]
        "#foo/bar" decoded as "foo/bar" .............................. [ PASS]
        "foo/bar" encoded to "#foo/bar" .............................. [ PASS]
        "#foo%2Ebar" decoded as "foo.bar" ............................ [ PASS]
        "foo.bar" encoded to "#foo.bar" .............................. [ PASS]
        14 tests completed in 1/1000 seconds.
        14 out of 14 (100%) tests passed.
        -- done testing fragment ---------------------------------------------

    8 subgroups completed in 3/250 seconds.
    8 out of 8 (100%) subgroups passed.
    -- done testing internal representations ---------------------------------


    -- testing updating ------------------------------------------------------

        -- testing query -----------------------------------------------------
        ((foo . "bar?qux")) -> "?foo=bar%3Fqux" ...................... [ PASS]
        ((foo?bar . "qux")) -> "?foo%3Fbar=qux" ...................... [ PASS]
        ((foo . "bar&qux")) -> "?foo=bar%26qux" ...................... [ PASS]
        ((foo&bar . "qux")) -> "?foo%26bar=qux" ...................... [ PASS]
        ((foo . "bar=qux")) -> "?foo=bar%3Dqux" ...................... [ PASS]
        ((foo=bar . "qux")) -> "?foo%3Dbar=qux" ...................... [ PASS]
        ((foo . "bar") (foo . "qux")) -> "?foo=bar;foo=qux" .......... [ PASS]
        7 tests completed in 3/1000 seconds.
        7 out of 7 (100%) tests passed.
        -- done testing query ------------------------------------------------


        -- testing port ------------------------------------------------------
        80 -> "http://a" ............................................. [ PASS]
        80 -> "http://a" ............................................. [ PASS]
        8080 -> "http://a:8080" ...................................... [ PASS]
        3 tests completed in 1/1000 seconds.
        3 out of 3 (100%) tests passed.
        -- done testing port -------------------------------------------------


        -- testing scheme ----------------------------------------------------
        http -> "http://a" ........................................... [ PASS]
        http -> "http://a:443" ....................................... [ PASS]
        http -> "http://a" ........................................... [ PASS]
        http -> "http://a:123" ....................................... [ PASS]
        https -> "https://a:8080" .................................... [ PASS]
        5 tests completed in 1/1000 seconds.
        5 out of 5 (100%) tests passed.
        -- done testing scheme -----------------------------------------------

    3 subgroups completed in 1/200 seconds.
    3 out of 3 (100%) subgroups passed.
    -- done testing updating -------------------------------------------------


    -- 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]
    (#:path ("5:123")) -> "5%3A123" .................................. [ PASS]
    14 tests completed in 3/500 seconds.
    14 out of 14 (100%) tests passed.
    -- done testing manual constructor ---------------------------------------


    -- testing form-urlencoding-hoehrmann-draft-cases ------------------------
    encode ((| a b c | . " 1  3 ")) -> "+a+b+c+=+1++3+" .............. [ PASS]
    decode "+a+b+c+=+1++3+" -> ((| a b c | . " 1  3 ")) .............. [ PASS]
    decode "%20a%20b%20c%20=%201%20%203%20" -> ((| a b c | . " 1  3 "))  [ PASS]
    decode " a b c = 1  3 " -> ((| a b c | . " 1  3 ")) .............. [ PASS]
    encode ((Text . "Line1\nLine2")) -> "Text=Line1%0ALine2" ......... [ PASS]
    decode "Text=Line1%0ALine2" -> ((Text . "Line1\nLine2")) ......... [ PASS]
    decode "Text=Line1\nLine2" -> ((Text . "Line1\nLine2")) .......... [ PASS]
    encode ((Cipher . "c=(m^e)%n")) -> "Cipher=c%3D%28m%5Ee%29%25n" .. [ PASS]
    decode "Cipher=c%3D%28m%5Ee%29%25n" -> ((Cipher . "c=(m^e)%n")) .. [ PASS]
    decode "Cipher=c=(m%5Ee)%25n" -> ((Cipher . "c=(m^e)%n")) ........ [ PASS]
    decode "Cipher=c=(m^e)%n" -> ((Cipher . "c=(m^e)%n")) ............ [ PASS]
    decode "%43%69%70%68%65%72=%63%3d%28%6D%5E%65%29%25%6e" -> ((Cipher . "c=(m^e)%n"))  [ PASS]
    encode ((|| . #t) (|| . #t)) -> ";" .............................. [ PASS]
    decode ";" -> ((|| . #t) (|| . #t)) .............................. [ PASS]
    encode ((|| . #t) (|| . "")) -> ";=" ............................. [ PASS]
    decode ";=" -> ((|| . #t) (|| . "")) ............................. [ PASS]
    encode ((|| . "") (|| . #t)) -> "=;" ............................. [ PASS]
    decode "=;" -> ((|| . "") (|| . #t)) ............................. [ PASS]
    encode ((|| . "") (|| . "")) -> "=;=" ............................ [ PASS]
    decode "=;=" -> ((|| . "") (|| . "")) ............................ [ PASS]
    encode ((|| . "")) -> "=" ........................................ [ PASS]
    decode "=" -> ((|| . "")) ........................................ [ PASS]
    encode ((|| . #t)) -> "" ......................................... [ PASS]
    decode "" -> ((|| . #t)) ......................................... [ PASS]
    encode ((a&b . "1") (c . "2;3") (e . "4")) -> "a%26b=1;c=2%3B3;e=4"  [ PASS]
    decode "a%26b=1;c=2%3B3;e=4" -> ((a&b . "1") (c . "2;3") (e . "4"))  [ PASS]
    decode "a%26b=1&c=2%3B3&e=4" -> ((a&b . "1") (c . "2;3") (e . "4"))  [ PASS]
    decode "a%26b=1;c=2%3B3&e=4" -> ((a&b . "1") (c . "2;3") (e . "4"))  [ PASS]
    decode "a%26b=1&c=2%3B3;e=4" -> ((a&b . "1") (c . "2;3") (e . "4"))  [ PASS]
    encode ((img . #t) (avail . #t) (name . #t) (price . #t)) -> "img;avail;name;price"  [ PASS]
    decode "img;avail;name;price" -> ((img . #t) (avail . #t) (name . #t) (price . #t))  [ PASS]
    encode ((foo+bar . "mooh+qux") (|foo bar| . "mooh qux")) -> "foo%2Bbar=mooh%2Bqux;foo+bar=mooh+qux"  [ PASS]
    decode "foo%2Bbar=mooh%2Bqux;foo+bar=mooh+qux" -> ((foo+bar . "mooh+qux") (|foo bar| . "mooh qux"))  [ PASS]
    encode ((no+value . #t) (|no value| . #t)) -> "no%2Bvalue;no+value"  [ PASS]
    decode "no%2Bvalue;no+value" -> ((no+value . #t) (|no value| . #t))  [ PASS]
    35 tests completed in 9/1000 seconds.
    35 out of 35 (100%) tests passed.
    -- done testing form-urlencoding-hoehrmann-draft-cases -------------------


    -- 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/bar" is not a relative path ................................ [ PASS]
    "/foo/bar" 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/" 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/#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]
    "//foo" is a relative path ....................................... [ PASS]
    "//foo" is not an absolute path .................................. [ PASS]
    "foo/bar" is a relative path ..................................... [ PASS]
    "foo/bar" is not an absolute path ................................ [ PASS]
    "bar#qux" is a relative path ..................................... [ PASS]
    "bar#qux" is not an absolute path ................................ [ PASS]
    "bar?qux=mooh" is a relative path ................................ [ PASS]
    "bar?qux=mooh" is not an absolute path ........................... [ PASS]
    30 tests completed in 3/1000 seconds.
    30 out of 30 (100%) tests passed.
    -- done testing absolute/relative path distinction -----------------------


    -- testing miscellaneous -------------------------------------------------
    scheme doesn't reset port if port given .......................... [ PASS]
    port is no longer printed when it's the default for a new scheme . [ PASS]
    port is kept around even if default for scheme ................... [ PASS]
    separator string order is maintained in form-urlencode ........... [ PASS]
    False values can't be distinguished from missing values .......... [ PASS]
    5 tests completed in 1/1000 seconds.
    5 out of 5 (100%) tests passed.
    -- done testing miscellaneous --------------------------------------------

6 subgroups completed in 17/125 seconds.
6 out of 6 (100%) subgroups passed.
-- done testing uri-common ---------------------------------------------------