(use ../src/jolt/api) (defn ct-eval [ctx s] (eval-string ctx s)) (print "=== CLJS Ported Part 1b ===") (print "7: seq operations...") (let [ctx (init)] (assert (= nil (ct-eval ctx "(seq [])")) "seq empty") (assert (= [2 3 4] (ct-eval ctx "(map inc [1 2 3])")) "map") (assert (= [1 3] (ct-eval ctx "(filter odd? [1 2 3 4])")) "filter") (assert (= 6 (ct-eval ctx "(reduce + [1 2 3])")) "reduce") (assert (= [1 2 3] (ct-eval ctx "(take 3 [1 2 3 4 5])")) "take") (assert (= [4 5] (ct-eval ctx "(drop 3 [1 2 3 4 5])")) "drop") (assert (= [3 2 1] (ct-eval ctx "(reverse [1 2 3])")) "reverse") (assert (= true (ct-eval ctx "(every? even? [2 4 6])")) "every?")) (print " passed") (print "8: printing...") (let [ctx (init)] (assert (= "hello" (ct-eval ctx "(str \"hello\")")) "str") (assert (= "ab" (ct-eval ctx "(str \"a\" \"b\")")) "str two") (assert (= "42" (ct-eval ctx "(str 42)")) "str number") (assert (= "a" (ct-eval ctx "(name :a)")) "name")) (print " passed") (print "9: apply...") (let [ctx (init)] (assert (= 3 (ct-eval ctx "(apply + [1 2])")) "apply +") (assert (= 3 (ct-eval ctx "(apply max [1 3 2])")) "apply max")) (print " passed") (print "10: equality...") (let [ctx (init)] (assert (= true (ct-eval ctx "(= {:a 1 :b 2} {:b 2 :a 1})")) "map order")) (print " passed") (print "11: higher-order fns...") (let [ctx (init)] (assert (= 3 (ct-eval ctx "((comp inc inc) 1)")) "comp") (assert (function? (ct-eval ctx "(partial + 1 2)")) "partial returns fn") (assert (= 3 (ct-eval ctx "(identity 3)")) "identity")) (print " passed") (print "\nAll CLJS Ported Part 1b tests passed!")