diff --git a/collects/net/scribblings/cgi.scrbl b/collects/net/scribblings/cgi.scrbl index abfb1795e2..e81f5ce91f 100644 --- a/collects/net/scribblings/cgi.scrbl +++ b/collects/net/scribblings/cgi.scrbl @@ -1,6 +1,7 @@ #lang scribble/doc @(require "common.ss" (for-label net/cgi + net/uri-codec net/cgi-unit net/cgi-sig)) @@ -41,7 +42,10 @@ Returns the bindings that corresponding to the options specified by the user. The @scheme[get-bindings/post] and @scheme[get-bindings/get] variants work only when POST and GET forms are used, respectively, while @scheme[get-bindings] determines the -kind of form that was used and invokes the appropriate function.} +kind of form that was used and invokes the appropriate function. + +These functions respect @scheme[current-alist-separator-mode]. +} @defproc[(extract-bindings [key? (or/c symbol? string?)] diff --git a/collects/tests/net/cgi.ss b/collects/tests/net/cgi.ss new file mode 100644 index 0000000000..3cc717689b --- /dev/null +++ b/collects/tests/net/cgi.ss @@ -0,0 +1,50 @@ +#lang scheme +(require net/cgi + net/uri-codec) + +(define-syntax test-result + (syntax-rules () + [(test-result expression expected) + (let ([result expression]) + (if (equal? result expected) + (display (format "Ok: `~a' evaluated to `~a'.\n" + 'expression expected)) + (display (format + "Error: `~a' evaluated to `~a', expected `~a'.\n" + 'expression result expected))))])) + +(putenv "REQUEST_METHOD" "GET") + +(test-result (begin + (current-alist-separator-mode 'amp-or-semi) + (putenv "QUERY_STRING" "key1=value1&key2=value2;key3=value3") + (get-bindings)) + '((key1 . "value1") + (key2 . "value2") + (key3 . "value3"))) + +(test-result (begin + (current-alist-separator-mode 'amp) + (putenv "QUERY_STRING" "key1=value1&key2=value2") + (get-bindings)) + '((key1 . "value1") + (key2 . "value2"))) + +(test-result (begin + (current-alist-separator-mode 'amp) + (putenv "QUERY_STRING" "key1=value1;key2=value2") + (get-bindings)) + '((key1 . "value1;key2=value2"))) + +(test-result (begin + (current-alist-separator-mode 'semi) + (putenv "QUERY_STRING" "key1=value1;key2=value2") + (get-bindings)) + '((key1 . "value1") + (key2 . "value2"))) + +(test-result (begin + (current-alist-separator-mode 'semi) + (putenv "QUERY_STRING" "key1=value1&key2=value2") + (get-bindings)) + '((key1 . "value1&key2=value2"))) \ No newline at end of file