X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fpxp%2Fnetstring%2Ftests%2Ftest_neturl.ml;fp=helm%2FDEVEL%2Fpxp%2Fnetstring%2Ftests%2Ftest_neturl.ml;h=0000000000000000000000000000000000000000;hb=3ef089a4c58fbe429dd539af6215991ecbe11ee2;hp=633bfda0952af0d9dfe3546b0a1807e0745c4167;hpb=1c7fb836e2af4f2f3d18afd0396701f2094265ff;p=helm.git diff --git a/helm/DEVEL/pxp/netstring/tests/test_neturl.ml b/helm/DEVEL/pxp/netstring/tests/test_neturl.ml deleted file mode 100644 index 633bfda09..000000000 --- a/helm/DEVEL/pxp/netstring/tests/test_neturl.ml +++ /dev/null @@ -1,969 +0,0 @@ -#directory "..";; -#load "netstring.cma";; - -open Neturl;; - - -let expect_malformed_url f = - try ignore(f()); false with Malformed_URL -> true;; - -let works f = - not (expect_malformed_url f) -;; - -(**********************************************************************) -(* extract_url_scheme *) -(**********************************************************************) - -let t001 () = - extract_url_scheme "a:bc" = "a" && - extract_url_scheme "A:bc" = "a" && - extract_url_scheme "a:b:c" = "a" && - extract_url_scheme "a+b-c:d:e" = "a+b-c" -;; - - -let t002 () = - let test s = - try ignore(extract_url_scheme s); false with Malformed_URL -> true - in - test "a" && - test "a/b:c" && - test "%61:b" && - test "a%3ab" -;; - -(**********************************************************************) -(* url_syntax *) -(**********************************************************************) - -let hashtbl_for_all f h = - let b = ref true in - Hashtbl.iter - (fun k v -> b := !b && f k v) - h; - !b -;; - -let t010 () = - url_syntax_is_valid null_url_syntax && - url_syntax_is_valid ip_url_syntax && - hashtbl_for_all - (fun _ syn -> - url_syntax_is_valid syn - ) - common_url_syntax -;; - -let t011 () = - url_syntax_is_valid (partial_url_syntax null_url_syntax) && - url_syntax_is_valid (partial_url_syntax ip_url_syntax) && - hashtbl_for_all - (fun _ syn -> - url_syntax_is_valid (partial_url_syntax syn) - ) - common_url_syntax -;; - -let t012 () = - let f = fun _ -> true in - let syn = - { url_enable_scheme = Url_part_not_recognized; - url_enable_user = Url_part_required; - url_enable_password = Url_part_allowed; - url_enable_host = Url_part_required; - url_enable_port = Url_part_not_recognized; - url_enable_path = Url_part_required; - url_enable_param = Url_part_not_recognized; - url_enable_query = Url_part_not_recognized; - url_enable_fragment = Url_part_required; - url_enable_other = Url_part_not_recognized; - url_accepts_8bits = false; - url_is_valid = f; - } in - let syn' = partial_url_syntax syn in - - (syn'.url_enable_scheme = Url_part_not_recognized) && - (syn'.url_enable_user = Url_part_allowed) && - (syn'.url_enable_password = Url_part_allowed) && - (syn'.url_enable_host = Url_part_allowed) && - (syn'.url_enable_port = Url_part_not_recognized) && - (syn'.url_enable_path = Url_part_allowed) && - (syn'.url_enable_param = Url_part_not_recognized) && - (syn'.url_enable_query = Url_part_not_recognized) && - (syn'.url_enable_fragment = Url_part_allowed) && - (syn'.url_enable_other = Url_part_not_recognized) && - (syn'.url_is_valid == f) && - - url_syntax_is_valid syn && - url_syntax_is_valid syn' -;; - -(**********************************************************************) -(* make_url *) -(**********************************************************************) - -let t020 () = - (* Basic functionality: *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let u1 = make_url - (* default: not encoded *) - ~scheme:"http" - ~user:"U" - ~password:"%()~$@" - ~host:"a.b.c" - ~port:81 - ~path:["";"?";""] - http_syn in - - url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - u1 && - - not - (url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - ~query:true u1) && - - (url_syntax_of_url u1 == http_syn) && - - (url_scheme u1 = "http") && - (url_user u1 = "U") && - (url_password u1 = "%()~$@") && - (url_host u1 = "a.b.c") && - (url_port u1 = 81) && - (url_path u1 = ["";"?";""]) && - - (url_user ~encoded:true u1 = "U") && - (url_password ~encoded:true u1 = "%25()%7E$%40") && - (url_path ~encoded:true u1 = ["";"%3F";""]) && - - string_of_url u1 = "http://U:%25()%7E$%40@a.b.c:81/%3F/" -;; - - -let t021 () = - (* Basic functionality: *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let u1 = make_url - ~encoded:true - ~scheme:"http" - ~user:"%55" - ~password:"%25()%7e$%40" - ~host:"a.b.c" - ~port:81 - ~path:["";"%3F";""] - http_syn in - - url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - u1 && - - not - (url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - ~query:true u1) && - - (url_syntax_of_url u1 == http_syn) && - - (url_scheme u1 = "http") && - (url_user u1 = "U") && - (url_password u1 = "%()~$@") && - (url_host u1 = "a.b.c") && - (url_port u1 = 81) && - (url_path u1 = ["";"?";""]) && - - (url_user ~encoded:true u1 = "%55") && - (url_password ~encoded:true u1 = "%25()%7e$%40") && - (url_path ~encoded:true u1 = ["";"%3F";""]) && - - string_of_url u1 = "http://%55:%25()%7e$%40@a.b.c:81/%3F/" -;; - - -(* NEGATIVE TESTS *) - -let t030 () = - (* It is not possible to add a component which is not recognized *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~user:"U" - ~password:"%()~$@" - ~host:"a.b.c" - ~port:81 - ~path:["";"?";""] - ~fragment:"abc" - http_syn) -;; - - -let t031 () = - (* It is not possible to put malformed '%'-encodings into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - works (* reference *) - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"XX" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%XX" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%X" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) -;; - -let t032 () = - (* It is not possible to put unsafe characters into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let make c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:(String.make 1 c) - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn - in - - works (fun () -> make 'a') && (* reference *) - - (* List of unsafe characters taken from RFC1738: *) - expect_malformed_url (fun () -> make '<') && - expect_malformed_url (fun () -> make '>') && - expect_malformed_url (fun () -> make '"') && - expect_malformed_url (fun () -> make '#') && - (* Note: '#' would be considered as reserved if fragments were enabled *) - expect_malformed_url (fun () -> make '%') && - expect_malformed_url (fun () -> make '{') && - expect_malformed_url (fun () -> make '}') && - expect_malformed_url (fun () -> make '|') && - expect_malformed_url (fun () -> make '\\') && - expect_malformed_url (fun () -> make '^') && - expect_malformed_url (fun () -> make '[') && - expect_malformed_url (fun () -> make ']') && - expect_malformed_url (fun () -> make '`') && - expect_malformed_url (fun () -> make '~') && - (* Note: '~' is considered as safe in paths: *) - works - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";"~";""] - http_syn) -;; - -let t033 () = - (* It is not possible to put reserved characters into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let make_password c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:(String.make 1 c) - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn - in - let make_path c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";String.make 1 c;""] - http_syn - in - let make_query c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - ~query:(String.make 1 c) - http_syn - in - - (* Note: There is a difference between RFC 1738 and RFC 1808 regarding - * which characters are reserved. RFC 1808 defines a fixed set of characters - * as reserved while RFC 1738 defines the reserved characters depending - * on the scheme. - * This implementation of URLs follows RFC 1738 (because of practical - * reasons). - *) - - works (fun () -> make_password 'a') && (* reference *) - works (fun () -> make_path 'a') && - works (fun () -> make_query 'a') && - - expect_malformed_url (fun () -> make_password ':') && - expect_malformed_url (fun () -> make_password '@') && - expect_malformed_url (fun () -> make_password '/') && - works (fun () -> make_password ';') && - works (fun () -> make_password '?') && - works (fun () -> make_password '=') && - works (fun () -> make_password '&') && - - (* Note: ';' is allowed in path and query because parameters are not - * recognized in HTTP syntax. - *) - - expect_malformed_url (fun () -> make_path '/') && - expect_malformed_url (fun () -> make_path '?') && - works (fun () -> make_path ':') && - works (fun () -> make_path '@') && - works (fun () -> make_path ';') && - works (fun () -> make_path '=') && - works (fun () -> make_path '&') && - - expect_malformed_url (fun () -> make_query '?') && - works (fun () -> make_query '/') && - works (fun () -> make_query ':') && - works (fun () -> make_query '@') && - works (fun () -> make_query ';') && - works (fun () -> make_query '=') && - works (fun () -> make_query '&') -;; - - -let t034 () = - (* It is not possible to create a URL with a password, but without user; - * and neither to create a URL with a port, but without host; - * and neither to create a URL with a user, but without host - *) - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~password:"a" - ~host:"a.b.c" - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~user:"U" - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~port:81 - ~path:["";"a";""] - ip_url_syntax) -;; - - -let t035 () = - (* It is not possible to create a URL with illegal scheme prefix *) - - (* reference: *) - works - (fun () -> - make_url - ~scheme:"a" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:":" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a=b" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a%62b" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a&b" - ip_url_syntax) -;; - - -let t036 () = - (* It is not possible to have a path with double slashes *) - - (* reference: *) - works - (fun () -> - make_url - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["a";"";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["";"";"a"] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["a";"";"a"] - ip_url_syntax) -;; - - -let t037 () = - (* It is not possible to have port numbers outside 0..65535 *) - - (* reference: *) - works - (fun () -> - make_url - ~host:"a" - ~port:1 - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~port:(-1) - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~port:65536 - ip_url_syntax) -;; - - -let t038 () = - (* Several cases which are not allowed. *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:["a"] - ip_url_syntax - ) && (* illegal: host + relative path *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:[] - ~param:["x"] - ip_url_syntax - ) && (* illegal: host + no path + params *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:[] - ~query:"x" - ip_url_syntax - ) (* illegal: host + no path + query *) -;; - -(**********************************************************************) -(* url_of_string *) -(**********************************************************************) - -let t050 () = - (* absolute URLs with ip_url_syntax *) - let identical s = - string_of_url (url_of_string ip_url_syntax s) = s in - - let fails s = - try ignore(url_of_string ip_url_syntax s); false - with Malformed_URL -> true - in - - identical "http:" && - - identical "http://host" && - identical "http://user@host" && - identical "http://user:password@host" && - identical "http://user@host:99" && - identical "http://user:password@host:99" && - - identical "http://host/" && - identical "http://user@host/" && - identical "http://user:password@host/" && - identical "http://user@host:99/" && - identical "http://user:password@host:99/" && - - identical "http://host/a/b" && - identical "http://user@host/a/b" && - identical "http://user:password@host/a/b" && - identical "http://user@host:99/a/b" && - identical "http://user:password@host:99/a/b" && - - identical "http://host/a/b/" && - identical "http://user@host/a/b/" && - identical "http://user:password@host/a/b/" && - identical "http://user@host:99/a/b/" && - identical "http://user:password@host:99/a/b/" && - - identical "http://host/?a=b&c=d" && - identical "http://user@host/?a=b&c=d" && - identical "http://user:password@host/?a=b&c=d" && - identical "http://user@host:99/?a=b&c=d" && - identical "http://user:password@host:99/?a=b&c=d" && - - fails "http://host?a=b&c=d" && - fails "http://user@host?a=b&c=d" && - fails "http://user:password@host?a=b&c=d" && - fails "http://user@host:99?a=b&c=d" && - fails "http://user:password@host:99?a=b&c=d" && - - identical "http://host/?a=/&c=/" && - identical "http://user@host/?a=/&c=/" && - identical "http://user:password@host/?a=/&c=/" && - identical "http://user@host:99/?a=/&c=/" && - identical "http://user:password@host:99/?a=/&c=/" && - - identical "http://host/;a;b" && - identical "http://user@host/;a;b" && - identical "http://user:password@host/;a;b" && - identical "http://user@host:99/;a;b" && - identical "http://user:password@host:99/;a;b" && - - fails "http://host;a;b" && - fails "http://user@host;a;b" && - fails "http://user:password@host;a;b" && - fails "http://user@host:99;a;b" && - fails "http://user:password@host:99;a;b" && - - identical "http://host/;a;b?a=b&c=d" && - identical "http://user@host/;a;b?a=b&c=d" && - identical "http://user:password@host/;a;b?a=b&c=d" && - identical "http://user@host:99/;a;b?a=b&c=d" && - identical "http://user:password@host:99/;a;b?a=b&c=d" && - - identical "http:#f" && - - identical "http://host#f" && - identical "http://user@host#f" && - identical "http://user:password@host#f" && - identical "http://user@host:99#f" && - identical "http://user:password@host:99#f" && - - identical "http://host/;a;b?a=b&c=d#f" && - identical "http://user@host/;a;b?a=b&c=d#f" && - identical "http://user:password@host/;a;b?a=b&c=d#f" && - identical "http://user@host:99/;a;b?a=b&c=d#f" && - identical "http://user:password@host:99/;a;b?a=b&c=d#f" && - - true -;; - - -let t051 () = - (* relative URLs with ip_url_syntax *) - let identical s = - string_of_url (url_of_string ip_url_syntax s) = s in - - let fails s = - try ignore(url_of_string ip_url_syntax s); false - with Malformed_URL -> true - in - - identical "//host" && - identical "//user@host" && - identical "//user:password@host" && - identical "//user@host:99" && - identical "//user:password@host:99" && - - identical "//host/" && - identical "//user@host/" && - identical "//user:password@host/" && - identical "//user@host:99/" && - identical "//user:password@host:99/" && - - identical "//host#f" && - identical "//user@host#f" && - identical "//user:password@host#f" && - identical "//user@host:99#f" && - identical "//user:password@host:99#f" && - - identical "/" && - identical "/a" && - identical "/a/" && - identical "/a/a" && - - identical "/;a;b" && - identical "/a;a;b" && - identical "/a/;a;b" && - identical "/a/a;a;b" && - - identical "/?a=b&c=d" && - identical "/a?a=b&c=d" && - identical "/a/?a=b&c=d" && - identical "/a/a?a=b&c=d" && - - identical "/;a;b?a=b&c=d" && - identical "/a;a;b?a=b&c=d" && - identical "/a/;a;b?a=b&c=d" && - identical "/a/a;a;b?a=b&c=d" && - - identical "/#f" && - identical "/a#f" && - identical "/a/#f" && - identical "/a/a#f" && - - identical "/;a;b#f" && - identical "/a;a;b#f" && - identical "/a/;a;b#f" && - identical "/a/a;a;b#f" && - - identical "/;a;b?a=b&c=d#f" && - identical "/a;a;b?a=b&c=d#f" && - identical "/a/;a;b?a=b&c=d#f" && - identical "/a/a;a;b?a=b&c=d#f" && - - identical "" && - identical "a" && - identical "a/" && - identical "a/a" && - - identical ";a;b" && - identical "a;a;b" && - identical "a/;a;b" && - identical "a/a;a;b" && - - identical "?a=b&c=d" && - identical "a?a=b&c=d" && - identical "a/?a=b&c=d" && - identical "a/a?a=b&c=d" && - - identical ";a;b?a=b&c=d" && - identical "a;a;b?a=b&c=d" && - identical "a/;a;b?a=b&c=d" && - identical "a/a;a;b?a=b&c=d" && - - identical "#f" && - identical "a#f" && - identical "a/#f" && - identical "a/a#f" && - - identical ";a;b#f" && - identical "a;a;b#f" && - identical "a/;a;b#f" && - identical "a/a;a;b#f" && - - identical ";a;b?a=b&c=d#f" && - identical "a;a;b?a=b&c=d#f" && - identical "a/;a;b?a=b&c=d#f" && - identical "a/a;a;b?a=b&c=d#f" && - - identical "." && - identical "./" && - identical "./a" && - - identical ".;a;b" && - identical "./;a;b" && - identical "./a;a;b" && - - identical ".?a=b&c=d" && - identical "./?a=b&c=d" && - identical "./a?a=b&c=d" && - - identical ".;a;b?a=b&c=d" && - identical "./;a;b?a=b&c=d" && - identical "./a;a;b?a=b&c=d" && - - identical ".#f" && - identical "./#f" && - identical "./a#f" && - - identical ".;a;b#f" && - identical "./;a;b#f" && - identical "./a;a;b#f" && - - identical ".;a;b?a=b&c=d#f" && - identical "./;a;b?a=b&c=d#f" && - identical "./a;a;b?a=b&c=d#f" && - - identical ".." && - identical "../" && - identical "../a" && - - identical "..;a;b" && - identical "../;a;b" && - identical "../a;a;b" && - - identical "..?a=b&c=d" && - identical "../?a=b&c=d" && - identical "../a?a=b&c=d" && - - identical "..;a;b?a=b&c=d" && - identical "../;a;b?a=b&c=d" && - identical "../a;a;b?a=b&c=d" && - - identical "..#f" && - identical "../#f" && - identical "../a#f" && - - identical "..;a;b#f" && - identical "../;a;b#f" && - identical "../a;a;b#f" && - - identical "..;a;b?a=b&c=d#f" && - identical "../;a;b?a=b&c=d#f" && - identical "../a;a;b?a=b&c=d#f" && - - string_of_url - (make_url ~path:["a:b"] ip_url_syntax) = "a%3Ab" && - - string_of_url - (make_url ~encoded:true ~path:["a:b"] ip_url_syntax) = "./a:b" && - - true -;; - - -let t052 () = - (* mailto: URLs *) - let mailto_syn = Hashtbl.find common_url_syntax "mailto" in - - let identical s = - string_of_url (url_of_string mailto_syn s) = s in - - let fails s = - try ignore(url_of_string mailto_syn s); false - with Malformed_URL -> true - in - - identical "mailto:user@host" && - identical "mailto:user@host;?;?" && - fails "mailto:user@host#f" -;; - -(**********************************************************************) -(* split_path/join_path/norm_path: *) -(**********************************************************************) - -let t060 () = - (split_path "" = []) && - (split_path "/" = [ "" ]) && - (split_path "/a" = [ ""; "a" ]) && - (split_path "a" = [ "a" ]) && - (split_path "a/" = [ "a"; "" ]) && - (split_path "/a/" = [ ""; "a"; "" ]) && - (split_path "/a/b" = [ ""; "a"; "b" ]) && - (split_path "/a/b/" = [ ""; "a"; "b"; "" ]) && - (split_path "/a/b/c" = [ ""; "a"; "b"; "c" ]) && - - (join_path [] = "") && - (join_path [ "" ] = "/") && - (join_path [ ""; "a" ] = "/a") && - (join_path [ "a" ] = "a") && - (join_path [ "a"; "" ] = "a/") && - (join_path [ ""; "a"; "" ] = "/a/") && - (join_path [ ""; "a"; "b" ] = "/a/b") && - (join_path [ ""; "a"; "b"; "" ] = "/a/b/") && - (join_path [ ""; "a"; "b"; "c" ] = "/a/b/c") && - - true -;; - - -let t061 () = - (norm_path ["."] = []) && - (norm_path ["."; ""] = []) && - (norm_path ["a"; "."] = ["a"; ""]) && - (norm_path ["a"; "b"; "."] = ["a"; "b"; ""]) && - (norm_path ["a"; "b"; ".."] = ["a"; ""]) && - (norm_path ["a"; "."; "b"; "."] = ["a"; "b"; ""]) && - (norm_path [".."] = [".."; ""]) && - (norm_path [".."; ""] = [".."; ""]) && - (norm_path ["a"; "b"; ".."; "c" ] = ["a"; "c"]) && - (norm_path ["a"; "b"; ".."; "c"; ""] = ["a"; "c"; ""]) && - (norm_path ["";"";"a";"";"b"] = [""; "a"; "b"]) && - (norm_path ["a"; "b"; ""; ".."; "c"; ""] = ["a"; "c"; ""]) && - (norm_path ["a"; ".."] = []) && - (norm_path ["";""] = [""]) && - (norm_path [""] = [""]) && - (norm_path [] = []) && - - true -;; - -(**********************************************************************) -(* apply_relative_url: *) -(**********************************************************************) - -let t070() = - (* Examples taken from RFC 1808 *) - let url = url_of_string ip_url_syntax in - let base = url "http://a/b/c/d;p?q#f" in - let aru = apply_relative_url base in - - (aru (url "g:h") = url "g:h") && - (aru (url "g") = url "http://a/b/c/g") && - (aru (url "./g") = url "http://a/b/c/g") && - (aru (url "g/") = url "http://a/b/c/g/") && - (aru (url "/g") = url "http://a/g") && - (aru (url "//g") = url "http://g") && - (aru (url "?y") = url "http://a/b/c/d;p?y") && - (aru (url "g?y") = url "http://a/b/c/g?y") && - (aru (url "g?y/./x") = url "http://a/b/c/g?y/./x") && - (aru (url "#s") = url "http://a/b/c/d;p?q#s") && - (aru (url "g#s") = url "http://a/b/c/g#s") && - (aru (url "g#s/./x") = url "http://a/b/c/g#s/./x") && - (aru (url "g?y#s") = url "http://a/b/c/g?y#s") && - (aru (url ";x") = url "http://a/b/c/d;x") && - (aru (url "g;x") = url "http://a/b/c/g;x") && - (aru (url "g;x?y#s") = url "http://a/b/c/g;x?y#s") && - (aru (url ".") = url "http://a/b/c/") && - (aru (url "./") = url "http://a/b/c/") && - (aru (url "..") = url "http://a/b/") && - (aru (url "../") = url "http://a/b/") && - (aru (url "../g") = url "http://a/b/g") && - (aru (url "../..") = url "http://a/") && - (aru (url "../../") = url "http://a/") && - (aru (url "../../g") = url "http://a/g") && - - (aru (url "") = url "http://a/b/c/d;p?q#f") && - (aru (url "../../../g") = url "http://a/../g") && - (aru (url "../../../../g") = url "http://a/../../g") && - (aru (url "/./g") = url "http://a/./g") && - (aru (url "/../g") = url "http://a/../g") && - (aru (url "g.") = url "http://a/b/c/g.") && - (aru (url ".g") = url "http://a/b/c/.g") && - (aru (url "g..") = url "http://a/b/c/g..") && - (aru (url "..g") = url "http://a/b/c/..g") && - (aru (url "./../g") = url "http://a/b/g") && - (aru (url "./g/.") = url "http://a/b/c/g/") && - (aru (url "g/./h") = url "http://a/b/c/g/h") && - (aru (url "g/../h") = url "http://a/b/c/h") && - (aru (url "http:g") = url "http:g") && - (aru (url "http:") = url "http:") && - - true -;; - - -(**********************************************************************) - -let test f n = - if f() then - print_endline ("Test " ^ n ^ " ok") - else - print_endline ("Test " ^ n ^ " FAILED!!!!"); - flush stdout -;; - -test t001 "001"; -test t002 "002"; - -test t010 "010"; -test t011 "011"; -test t012 "012"; - -test t020 "020"; -test t021 "021"; - -test t030 "030"; -test t031 "031"; -test t032 "032"; -test t033 "033"; -test t034 "034"; -test t035 "035"; -test t036 "036"; -test t037 "037"; -test t038 "038"; - -test t050 "050"; -test t051 "051"; -test t052 "052"; - -test t060 "060"; -test t061 "061"; - -test t070 "070"; -() -;;