diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-06-11 20:30:54 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-06-11 23:50:35 +0200 |
commit | cfde8025c75949b6e0491596b23ec53beed84a71 (patch) | |
tree | f49d087ef288d3aed36f05fc5a3d37654d8f7022 /tests | |
parent | Rewrote rrule-instances to handle RDATE and EXDATE correctly. (diff) | |
download | calp-cfde8025c75949b6e0491596b23ec53beed84a71.tar.gz calp-cfde8025c75949b6e0491596b23ec53beed84a71.tar.xz |
Add tests for web-query.
Diffstat (limited to '')
-rw-r--r-- | tests/test/web-query.scm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/test/web-query.scm b/tests/test/web-query.scm new file mode 100644 index 00000000..76c0a76d --- /dev/null +++ b/tests/test/web-query.scm @@ -0,0 +1,38 @@ +(define-module (test web-query) + :use-module (srfi srfi-64) + :use-module (srfi srfi-88) + :use-module ((web query) :select (parse-query))) + +(test-begin "Web Query") + +(test-equal "Empty query gives empty assoc list" + '() (parse-query "")) +(test-equal "Simple key-value query" + '(key: "value") (parse-query "key=value")) + +;; Slightly cumbersome check, since keys aren't ordered +(test-group + "Simple key-value query, with multiple keys" + (let ((kv-list (parse-query "k1=value&k2=1"))) + (test-equal "value" (and=> (memv k1: kv-list) cadr)) + (test-equal "1" (and=> (memv k2: kv-list) cadr)))) + +(test-equal "Values are HTTP-decoded" + '(key: " ") (parse-query "key=%20")) +(test-equal "Keys are HTTP-decoded" + '(A: "test") (parse-query "%41=test")) + +(test-equal "Query with only key, value becomes key" + '(key: "key") (parse-query "key")) + +(test-group + "Some with only key" + (let ((kv-list (parse-query "k1&k2=10"))) + (test-equal "k1" (and=> (memv k1: kv-list) cadr)) + (test-equal "10" (and=> (memv k2: kv-list) cadr)))) + +;; I don't know if HTTP allows this, but my code works like this +(test-equal "Value with equal in it" + '(key: "=") (parse-query "key==")) + +(test-end "Web Query") |