blob: eb58a44b0437ee6d9502fcef7f41c01ff1b49fd5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
(import-macros {: fn*} :macros.fn)
(local {: seq
: mapv
: mapkv
: reduce
: reduce-kv
: conj
: cons
: consj
: first
: rest
: eq?
: identity
: comp
: every?} (require :core))
;; Test equality function should be done first and with a lot of care,
;; because we rely on deep comparison in other tests.
(assert (eq? 1 1))
(assert (not (eq? 1 2)))
(assert (eq? 1 1 1 1 1))
(assert (eq? "1" "1" "1" "1" "1"))
(assert (eq? [1 2] [1 2]))
(assert (not (eq? [1] [1 2])))
(assert (not (eq? [1 2] [1])))
(assert (eq? [1 [2]] [1 [2]] [1 [2]]))
(assert (eq? [1 [2]] [1 [2]] [1 [2]]))
(assert (not (eq? [1 [2]] [1 [2]] [1 [2 [3]]])))
(fn* range
([upper] (range 0 upper 1))
([lower upper] (range lower upper 1))
([lower upper step]
(let [res []]
(for [i lower (- upper step) step]
(table.insert res i))
res)))
(assert (eq? (range 10) [0 1 2 3 4 5 6 7 8 9]))
(assert (eq? (range -5 5) [-5 -4 -3 -2 -1 0 1 2 3 4]))
;; (assert (eq? (range 0 1 0.2) [0 0.2 0.4 0.6 0.8])) ;; TODO: fails, unsure why.
|