Changeset 12857 in project for release/4/uri-generic/trunk/tests


Ignore:
Timestamp:
12/19/08 22:46:18 (12 years ago)
Author:
sjamaan
Message:

Add lots more representation tests and fix an issue with userinfo decoding; we didn't allow colons in the password field

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/uri-generic/trunk/tests/run.scm

    r12841 r12857  
    213213
    214214(define internal-representation-cases
    215   `((,uri-scheme
     215  `(("scheme" ,uri-scheme
    216216     ;; pct-encoding not allowed in scheme
    217217     ("http.:" http.)
     
    222222     ("/foo" #f)
    223223     (":" ||))
    224     (,uri-path
     224    ("username" ,uri-username
     225     ("//foo" #f)
     226     ("//@" "")
     227     ("//foo@" "foo")
     228     ("//foo:bar@" "foo")
     229     ("//foo:bar:qux@" "foo")
     230     ("//foo%20bar@" "foo%20bar")
     231     ("//foo%3Abar:qux@" "foo%3Abar") ;; %3A = ':'
     232     ("//foo%2Ebar@" "foo.bar" "//foo.bar@"))
     233    ("password ",uri-password
     234     ("//foo" #f)
     235     ("//@" #f)
     236     ("//foo@" #f)
     237     ("//foo:bar@" "bar")
     238     ("//foo:bar:qux@" "bar:qux")
     239     ("//foo:bar%20qux@" "bar%20qux")
     240     ("//foo:bar%2Equx@" "bar.qux" "//foo:bar.qux@"))
     241    ("path" ,uri-path
     242     ("//foo" ())   ; Can path ever be #f?
    225243     ("foo%20bar" ("foo%20bar"))
    226244     ("foo%2Fbar" ("foo/bar"))
     
    231249     ("/foo%2Fbar" (/ "foo/bar"))
    232250     ("/foo/" (/ "foo" ""))
    233      ("/foo:bar" (/ "foo:bar")))))
     251     ("/foo:bar" (/ "foo:bar")))
     252    ("query ",uri-query
     253     ("//" #f)
     254     ("?foo" "foo")
     255     ("?foo?bar" "foo?bar")
     256     ("?foo/bar" "foo/bar")
     257     ("?foo%3Fbar" "foo%3Fbar")
     258     ("?foo%2Ebar" "foo.bar" "?foo.bar"))
     259    ("fragment" ,uri-fragment
     260     ("?foo" #f)
     261     ("#bar" "bar")
     262     ("?foo#bar" "bar")
     263     ("#foo?bar" "foo?bar")
     264     ("#foo/bar" "foo/bar")
     265     ("#foo%3Fbar" "foo%3Fbar")
     266     ("#foo%2Ebar" "foo.bar" "#foo.bar"))))
    234267
    235268(test-group "internal representations"
    236269  (for-each (lambda (p)
    237               (for-each (lambda (u)
    238                           (let ((in (first u))
    239                                 (internal (second u))
    240                                 (out (if (null? (cddr u))
    241                                          (first u)
    242                                          (third u)))
    243                                 (uri (uri-reference (first u))))
    244                             (test (sprintf "~S decoded as ~S" in internal)
    245                                   internal ((car p) uri))
    246                             (test (sprintf "~S encoded to ~S" internal out)
    247                                   out (uri->string uri))))
    248                         (cdr p)))
     270              (test-group (car p)
     271               (for-each (lambda (u)
     272                           (let ((in (first u))
     273                                 (internal (second u))
     274                                 (out (if (null? (cddr u))
     275                                          (first u)
     276                                          (third u)))
     277                                 (uri (uri-reference (first u))))
     278                             (test (sprintf "~S decoded as ~S" in internal)
     279                                   internal ((cadr p) uri))
     280                             (test (sprintf "~S encoded to ~S" internal out)
     281                                   out (uri->string uri
     282                                                    (lambda (u p)
     283                                                      (if p (conc u ":" p) u))))))
     284                         (cddr p))))
    249285            internal-representation-cases))
    250286
Note: See TracChangeset for help on using the changeset viewer.