(register-test ‘(suite “Builtin Tests”
("car" (inspect car ) "builtin/car" ) ("cdr" (inspect cdr ) "builtin/cdr" ) ("cdr-set" (inspect cdr-set ) "builtin/cdr-set" ) ("cons" (inspect cons ) "builtin/cons" ) ("+" (inspect + ) "builtin/+" ) ("-" (inspect - ) "builtin/-" ) ("*" (inspect * ) "builtin/*" ) ("/" (inspect / ) "builtin//" ) (">" (inspect > ) "builtin/>" ) ("<" (inspect < ) "builtin/<" ) ("eval" (inspect eval ) "builtin/eval" ) ("hash" (inspect hash ) "builtin/hash" ) ("date" (inspect date ) "builtin/date" ) ("error" (inspect error ) "builtin/error" ) ("apply" (inspect apply ) "builtin/apply" ) ("error" (inspect error ) "builtin/error" ) ("parse" (inspect parse ) "builtin/parse" ) ("p" (inspect p ) "builtin/p" ) ("sqrt" (inspect sqrt ) "builtin/sqrt" ) ("sym" (inspect sym ) "builtin/sym" ) ("ensuring" (inspect ensuring ) "builtin/ensuring" ) ("inspect" (inspect inspect ) "builtin/inspect" ) ("comment" (inspect comment ) "builtin/comment" ) ("handle-error" (inspect handle-error ) "builtin/handle-error" ) ("parse-in-string" (inspect parse-in-string ) "builtin/parse-in-string" ) ("random-string" (inspect random-string ) "builtin/random-string" ) ("to-string" (inspect to-string ) "builtin/to-string" ) ("string-length" (inspect string-length ) "builtin/string-length" ) ("string-replace" (inspect string-replace ) "builtin/string-replace" ) ("string-split" (inspect string-split ) "builtin/string-split" ) ("time" (inspect time ) "builtin/time" ) ("thread-locals" (inspect thread-locals ) "builtin/thread-locals" ) ("eq?" (inspect eq? ) "builtin/eq?" ) ("hash-get" (inspect hash-get ) "builtin/hash-get" ) ("hash-set" (inspect hash-set ) "builtin/hash-set" ) ("hash-keys" (inspect hash-keys ) "builtin/hash-keys" ) ("hash-merge" (inspect hash-merge ) "builtin/hash-merge" ) ("vm-info" (inspect vm-info ) "builtin/vm-info" )
))
(examples-for +
("adds nothing" (+) 0) ("adds 1 int" (+ 42) 42) ("adds 2 ints" (+ 42 45) 87) ("adds 3 ints" (+ 11 22 33) 66) ("adds 1 float" (+ 4.2) 4.2) ("adds 2 floats" (+ 4.2 4.5) 8.7) ("adds 3 floats" (+ 1.1 2.2 3.3) 6.6) ("adds days" (let d (date 2015 11 8) (to-string (+ d 1))) "2015-11-09") ("adds more days" (let d (date 2015 11 8) (to-string (+ d 10))) "2015-11-18"))
(examples-for -
("subtracts nothing" (-) 0) ("subtracts 1 int" (- 42) -42) ("subtracts 2 ints" (- 45 42) 3) ("subtracts 3 ints" (- 66 22 33) 11) ("subtracts 1 float" (- 4.2) -4.2) ("subtracts 2 floats" (- 4.2 4.7) -0.5) ("subtracts 3 floats" (- 6.6 1.1 3.3) 2.2) ("subtracts a day" (let d (date 2015 11 18) (to-string (- d 1))) "2015-11-17") ("subtracts more days" (let d (date 2015 11 18) (to-string (- d 5))) "2015-11-13") ("subtracts two dates" (- (date 2015 11 18) (date 2015 11 2)) 16) ("subtracts two dates" (- (date 2015 11 18) (date 2015 12 25)) -37))
(examples-for *
("multiplies nothing" (*) 1) ("multiplies 1 int" (* 42) 42) ("multiplies 2 ints" (* 5 42) 210) ("multiplies 3 ints" (* 2 3 5) 30) ("multiplies 3 ints" (* 2 3 5 7) 210) ("multiplies 1 float" (* 4.2) 4.2) ("multiplies 2 floats" (* 4.2 0.5) 2.1) ("multiplies 3 floats" (* 4.2 -2.5) -10.5) ("multiplies 4 floats" (* 6.6 1.1 3.3) 23.958) ("multiplies a string" (* "foo" 3) "foofoofoo"))
(examples-for mod
("modulus for two ints" (mod 64 6) 4))
(examples-for abs
("a positive integer" (abs 64) 64) ("a negative integer" (abs -42) 42) ("zero" (abs 0) 0) ("negative zero" (abs -0) 0) ("float zero" (abs 0.0) 0) ("float negative zero" (abs -0.0) 0) ("float negative" (abs -1.6) 1.6) ("float positive" (abs 4.2) 4.2))
(examples-for inspect
("truth" (inspect t) "t") ("nil" (inspect nil) "nil") ("number" (inspect 42) "42") ("string" (inspect "hello") "\"hello\"") ("list" (inspect '(fn (x) (this that))) "(fn (x) (this that))") ("list with string" (inspect '(fn (x) (this "string"))) "(fn (x) (this \"string\"))") ("list with sym" (inspect '(fn (x) (this 'quoted))) "(fn (x) (this (quote quoted)))"))