mirror of
https://github.com/carp-lang/Carp.git
synced 2024-10-11 12:37:32 +03:00
b46b2a39e8
Adding memory leak tests to String.append and StringCopy.append Issue #94
136 lines
4.2 KiB
Plaintext
136 lines
4.2 KiB
Plaintext
(use Array)
|
|
|
|
(load "Test.carp")
|
|
(use Test)
|
|
|
|
(defn nested []
|
|
[[1 2 3]
|
|
[4 5 6]
|
|
[7 8 9]])
|
|
|
|
(defn excl [x] (StringCopy.append x @"!"))
|
|
(defn excl-ref [x] (StringCopy.append @x @"!"))
|
|
|
|
(defn inc-ref [x] (+ @x 1))
|
|
|
|
(defn make-zero [] 0)
|
|
(defn make-idx [i] i)
|
|
|
|
(defn main []
|
|
(let [a (range 0 9 1)
|
|
b (Array.replicate 5 "Hi")]
|
|
(with-test test
|
|
(assert-true test
|
|
(= &[1 2 3] &[1 2 3])
|
|
"= works as expected")
|
|
(assert-false test
|
|
(= &[1 2 3] &[1 2 3 4])
|
|
"= works as expected")
|
|
(assert-false test
|
|
(= &[1 2 3] &[1 2 34])
|
|
"= works as expected")
|
|
(assert-equal test
|
|
&[0 0 0 0]
|
|
&(replicate 4 &0)
|
|
"replicate works as expected")
|
|
(assert-equal test
|
|
&[0 0 0 0]
|
|
&(repeat 4 make-zero)
|
|
"repeat works as expected")
|
|
(assert-equal test
|
|
&[0 1 2 3]
|
|
&(repeat-indexed 4 make-idx)
|
|
"repeat-indexed works as expected")
|
|
(assert-equal test
|
|
1
|
|
(first &[1 2 3])
|
|
"first works as expected")
|
|
(assert-equal test
|
|
\c
|
|
(last &[\a \b \c])
|
|
"last works as expected")
|
|
(assert-equal test
|
|
&[3 2 1]
|
|
&(reverse [1 2 3])
|
|
"reverse works as expected")
|
|
(assert-equal test
|
|
10
|
|
(maximum &(range 1 10 1))
|
|
"maximum works as expected")
|
|
(assert-equal test
|
|
1
|
|
(minimum &(range 1 10 1))
|
|
"minimum works as expected")
|
|
(assert-equal test
|
|
55
|
|
(sum &(range 1 10 1))
|
|
"sum works as expected")
|
|
(assert-equal test
|
|
&[2 3]
|
|
&(subarray &(range 1 10 1) 1 3)
|
|
"subarray works as expected")
|
|
(assert-equal test
|
|
&[1 2 3]
|
|
&(prefix-array &(range 1 10 1) 3)
|
|
"prefix-array works as expected")
|
|
(assert-equal test
|
|
&[8 9 10]
|
|
&(suffix-array &(range 1 10 1) 7)
|
|
"suffix-array works as expected")
|
|
(assert-equal test
|
|
5
|
|
@(nth &a 5)
|
|
"nth works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[1 2 3]
|
|
(nth &(nested) 0)
|
|
"nth works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[10 11 12 13 14 15]
|
|
&(range 10 15 1)
|
|
"range works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[10 9 8 7 6 5 4 3 2 1 0]
|
|
&(range 10 0 -1)
|
|
"range backwards works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[1 3 5 7 9]
|
|
&(range 1 10 2)
|
|
"range works as expected if we dont exactly hit"
|
|
)
|
|
(assert-equal test
|
|
&[10 8 6 4 2]
|
|
&(range 10 1 -2)
|
|
"range backwards works as expected if we dont exactly hit"
|
|
)
|
|
(assert-equal test
|
|
&[1 2 3 4 5 6 7 8 9]
|
|
&(sort (range 9 1 -1))
|
|
"sort works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[@"Hi!" @"Hi!" @"Hi!" @"Hi!" @"Hi!"]
|
|
&(copy-map excl-ref &b)
|
|
"copy-map works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[@"Hi!" @"Hi!" @"Hi!" @"Hi!" @"Hi!"]
|
|
&(endo-map excl b)
|
|
"endo-map works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[1 2]
|
|
&(swap [2 1] 0 1)
|
|
"swap works as expected"
|
|
)
|
|
(assert-equal test
|
|
&[1 3]
|
|
&(aupdate [1 2] 1 inc-ref)
|
|
"aupdate works as expected"
|
|
)
|
|
(print-test-results test))))
|