test: khan test cleanup

;;(vase ...) does a nest-check of the type of the kernel. This is
undesirable, so we instead run everything through +slum and cast the
result to +tang.
This commit is contained in:
Jōshin 2022-01-28 09:05:37 -08:00
parent 21ea32e8ad
commit ccf9110f7f
No known key found for this signature in database
GPG Key ID: A8BE5A9A521639D0

View File

@ -2,7 +2,7 @@
/= khan-raw /sys/vane/khan
=/ khan-gate (khan-raw ~nul)
|%
++ test-khan-fyrd-basic
++ test-khan-fyrd-start-args
=^ results1 khan-gate
%- khan-call :*
khan-gate
@ -21,56 +21,61 @@
%nonexistent (vale.dais ~)
==
=^ results2 khan-gate
%- khan-call :*
khan-gate
now
scry=scry-provides-mark
^= call-args
:* duct=~[//khan/1/0vsome.ductt] ~
%fyrd fyrd
==
^= moves-check
|= mev=(list move:khan-gate)
^- tang
=/ r1
%+ expect-eq
!> :* ~[//khan/1/0vsome.ductt]
%pass //g %g %deal
[~nul ~nul] %spider %watch
/thread-result/'khan-fyrd--0vsome.ductt'
==
!> (head mev)
:: XX this is extremely verbose because we do not have
:: a +expect-eq for recursive vases, and spider takes a
:: double-nested vase. so we first test that the poke is
:: correct aside from the vase; then we check that the
:: outer vase is correct aside from the inner vase; then
:: we check that the inner vase is correct.
::
=/ rem (rear mev)
=/ r2
%+ expect-eq
!> :* ~[//khan/1/0vsome.ductt]
%pass //g %g %deal
[~nul ~nul] %spider %poke
%spider-start ~
==
!> rem(+1023 ~)
=/ vez=vase ;;(vase +1023:(rear mev))
=/ r3
%+ expect-eq
!> args(+31 ~)
!> q.vez(+31 ~)
=/ r4
%+ expect-eq
;;(vase +31.args)
;;(vase +31.q.vez)
;: weld
r1
r2
r3
r4
== ==
%- khan-call
:* khan-gate
now
scry=scry-provides-mark
^= call-args
:* duct=~[//khan/1/0vsome.ductt] ~
%fyrd fyrd
==
^= moves-check
|= mev=(list move:khan-gate)
^- tang
=/ r0 (expect-eq !>(2) !>((lent mev)))
=/ r1
%+ expect-eq
!> :* ~[//khan/1/0vsome.ductt]
%pass //g %g %deal
[~nul ~nul] %spider %watch
/thread-result/'khan-fyrd--0vsome.ductt'
==
!> (head mev)
:: XX this is somewhat verbose because we do not
:: have a +expect-eq for recursive vases, and spider
:: takes a double-nested vase. so we first test that
:: the poke is correct aside from the vase; then we
:: check that the outer vase is correct aside from
:: the inner vase; then we check that the inner vase
:: is correct.
::
=/ rem (rear mev)
=/ r2
%+ expect-eq
!> :* ~[//khan/1/0vsome.ductt]
%pass //g %g %deal
[~nul ~nul] %spider %poke
%spider-start ~
==
!> rem(+1023 ~)
=/ vez=* +1023:(rear mev)
=/ r3
;; tang
%+ slum expect-eq
:- !> args(+31 ~)
!> +.vez(+31 ~)
=/ r4
;; tang
%+ slum expect-eq
:- +31.args
+31.+.vez
;: weld
r0
r1
r2
r3
r4
== ==
(weld results1 results2)
:: ++ test-khan-take-dud
:: !!
@ -84,12 +89,19 @@
|= $: khan-gate=_khan-gate
now=@da
scry=roof
call-args=[=duct dud=(unit goof) wrapped-task=(hobo task:khan)]
moves-check=$-((list move:khan-gate) tang)
$= call-args
$: =duct
dud=(unit goof)
wrapped-task=(hobo task:khan)
==
$= moves-check
$- (list move:khan-gate) tang
==
^- [tang _khan-gate]
=/ khan-core (khan-gate now eny=`@uvJ`0xdead.beef scry=scry)
=^ moves khan-gate (call:khan-core [duct dud wrapped-task]:call-args)
=/ khan-core
(khan-gate now eny=`@uvJ`0xdead.beef scry=scry)
=^ moves khan-gate
(call:khan-core [duct dud wrapped-task]:call-args)
=/ output=tang
(moves-check moves)
[output khan-gate]