aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2021-11-11 21:53:13 -0600
committerCalvin Rose <calsrose@gmail.com>2021-11-11 21:53:13 -0600
commit33a5f7076276960c60dc076a8132118bda96f8e4 (patch)
treecdd2fb58283998efe2d9e428de073f79a1cea84c /test
parentCall `middleware` on all server handlers. (diff)
Add initial schema module.
The schema module is a very simple yet useful for asserting the shape of data.
Diffstat (limited to 'test')
-rw-r--r--test/suite0013.janet26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/suite0013.janet b/test/suite0013.janet
new file mode 100644
index 0000000..d7d2df6
--- /dev/null
+++ b/test/suite0013.janet
@@ -0,0 +1,26 @@
+(use ../spork/test)
+(import ../spork/schema :as schema)
+
+(start-suite 13)
+
+(def c1 (schema/predicate :number))
+(assert (not (c1 :test)) "checker c1 1")
+(assert (c1 0) "checker c1 2")
+(assert (not (c1 :number)) "checker c1 3")
+(assert (c1 math/inf) "checker c1 4")
+(assert (c1 math/nan) "checker c1 5")
+
+(def c2 (schema/predicate (or :number (and (or :array :tuple) (length 1 3) (values :number)))))
+(assert (c2 2) "checker c2 1")
+(assert (c2 -1) "checker c2 2")
+(assert (not (c2 [])) "checker c2 3")
+(assert (c2 [2 3]) "checker c2 4")
+(assert (not (c2 [3 3 :nope])) "checker c2 5")
+(assert (not (c2 [3 3 4 5])) "checker c2 6")
+
+(def v1 (schema/validator :number))
+(assert-no-error "validator v1 1" (v1 0))
+(assert-no-error "validator v1 2" (v1 math/nan))
+(assert-error "validator v1 3" (v1 :hello))
+
+(end-suite)