Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m4s
66 lines
2.7 KiB
Plaintext
66 lines
2.7 KiB
Plaintext
; Tests for apl-call-tradfn (manual structure construction).
|
||
|
||
(define mkrv (fn (arr) (get arr :ravel)))
|
||
(define mksh (fn (arr) (get arr :shape)))
|
||
(define mknum (fn (n) (list :num n)))
|
||
(define mknm (fn (s) (list :name s)))
|
||
(define mkfg (fn (g) (list :fn-glyph g)))
|
||
(define mkmon (fn (g a) (list :monad (mkfg g) a)))
|
||
(define mkdyd (fn (g l r) (list :dyad (mkfg g) l r)))
|
||
(define mkasg (fn (n e) (list :assign n e)))
|
||
(define mkbr (fn (e) (list :branch e)))
|
||
|
||
(apl-test
|
||
"tradfn R←L+W simple add"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "R" (mkdyd "+" (mknm "L") (mknm "W")))) :alpha "L"} (apl-scalar 5) (apl-scalar 7)))
|
||
(list 12))
|
||
|
||
(apl-test
|
||
"tradfn R←L×W"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "R" (mkdyd "×" (mknm "L") (mknm "W")))) :alpha "L"} (apl-scalar 6) (apl-scalar 7)))
|
||
(list 42))
|
||
|
||
(apl-test
|
||
"tradfn monadic R←-W"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "R" (mkmon "-" (mknm "W")))) :alpha nil} nil (apl-scalar 9)))
|
||
(list -9))
|
||
|
||
(apl-test
|
||
"tradfn →0 exits early"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "R" (mknm "W")) (mkbr (mknum 0)) (mkasg "R" (mknum 999))) :alpha nil} nil (apl-scalar 7)))
|
||
(list 7))
|
||
|
||
(apl-test
|
||
"tradfn branch to line 3 skips line 2"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkbr (mknum 3)) (mkasg "R" (mknum 999)) (mkasg "R" (mknum 42))) :alpha nil} nil (apl-scalar 0)))
|
||
(list 42))
|
||
|
||
(apl-test
|
||
"tradfn local var t←W+1; R←t×2"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "t" (mkdyd "+" (mknm "W") (mknum 1))) (mkasg "R" (mkdyd "×" (mknm "t") (mknum 2)))) :alpha nil} nil (apl-scalar 5)))
|
||
(list 12))
|
||
|
||
(apl-test
|
||
"tradfn vector args"
|
||
(mkrv
|
||
(apl-call-tradfn
|
||
{:result "R" :omega "W" :stmts (list (mkasg "R" (mkdyd "+" (mknm "L") (mknm "W")))) :alpha "L"}
|
||
(make-array (list 3) (list 1 2 3))
|
||
(make-array (list 3) (list 10 20 30))))
|
||
(list 11 22 33))
|
||
|
||
(apl-test
|
||
"tradfn unset result returns nil"
|
||
(apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkbr (mknum 0))) :alpha nil} nil (apl-scalar 5))
|
||
nil)
|
||
|
||
(apl-test
|
||
"tradfn run-off end returns result"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "R" (mkdyd "×" (mknm "W") (mknum 3)))) :alpha nil} nil (apl-scalar 7)))
|
||
(list 21))
|
||
|
||
(apl-test
|
||
"tradfn loop sum 1+2+...+5 via branch"
|
||
(mkrv (apl-call-tradfn {:result "R" :omega "W" :stmts (list (mkasg "i" (mknum 1)) (mkasg "R" (mknum 0)) (mkasg "R" (mkdyd "+" (mknm "R") (mknm "i"))) (mkasg "i" (mkdyd "+" (mknm "i") (mknum 1))) (mkbr (mkdyd "×" (mkdyd "≤" (mknm "i") (mknm "W")) (mknum 3)))) :alpha nil} nil (apl-scalar 5)))
|
||
(list 15))
|