From adec3a0f96e2d93a42898c92fb853b136d9eab0a Mon Sep 17 00:00:00 2001 From: Ted Blackman Date: Tue, 28 Aug 2018 15:02:53 -0700 Subject: [PATCH 1/2] a clay test passes --- tests/sys/vane/clay.hoon | 208 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 tests/sys/vane/clay.hoon diff --git a/tests/sys/vane/clay.hoon b/tests/sys/vane/clay.hoon new file mode 100644 index 0000000000..3e8c5b0215 --- /dev/null +++ b/tests/sys/vane/clay.hoon @@ -0,0 +1,208 @@ +/+ tester +:: +/= clay-raw /: /===/sys/vane/clay /!noun/ +:: +!: +=, format +:: +=/ test-pit=vase !>(..zuse) +=/ clay-gate (clay-raw test-pit) +:: +|_ _tester:tester +++ test-info ^- tang + :: + =^ results1 clay-gate + %- clay-call-with-comparator :* + clay-gate + now=~1111.1.1 + scry=*sley + ^= call-args + :+ duct=~[/info] type=-:!>(*task:able:clay) + ^- task:able:clay + :^ %info ~nul %home + ^- nori:clay + :- %& + ^- soba:clay + :~ [/file1/noun `miso:clay`[%ins [%noun %noun 'file1']]] + [/file2/noun `miso:clay`[%ins [%noun %noun 'file2']]] + == + ^= move-comparator + |= moves=(list move:clay-gate) + ^- tang + :: + ?. ?=([* * * ~] moves) + [%leaf "wrong number of moves: {<(lent moves)>}"]~ + :: + ^- tang + ;: welp + %- expect-eq !> + :_ i.moves + ^- move:clay-gate + :- duct=~[/info] + ^- (wind note:clay-gate gift:able:clay) + :+ %pass /castifying/~nul/home/~1111.1.1 + ^- note:clay-gate + :- %f + [%build ~nul live=%.n [%pin ~1111.1.1 [%list ~]]] + :: + %- expect-eq !> + :_ i.t.moves + ^- move:clay-gate + :- duct=~[/info] + ^- (wind note:clay-gate gift:able:clay) + :+ %pass /diffing/~nul/home/~1111.1.1 + ^- note:clay-gate + :- %f + [%build ~nul live=%.n [%pin ~1111.1.1 [%list ~]]] + :: + ^- tang + :: + =/ move=move:clay-gate i.t.t.moves + =/ =duct p.move + =/ card=(wind note:clay-gate gift:able:clay) q.move + :: + ^- tang + %+ welp + (expect-eq !>([~[/info] duct])) + :: + ?. ?=(%pass -.card) + [%leaf "bad move, not a %pass: {}"]~ + :: + =/ =wire p.card + :: + ^- tang + %+ welp + (expect-eq !>([/inserting/~nul/home/~1111.1.1 wire])) + :: + =/ note=note:clay-gate q.card + :: + ?. ?=([%f %build *] note) + [%leaf "bad move, not a %build: {}"]~ + :: + ^- tang + %+ welp + (expect-eq !>([~nul our.note])) + :: + ^- tang + %+ welp + (expect-eq !>([%.n live.note])) + :: + ?. ?=(%pin -.schematic.note) + [%leaf "bad move, not a %pin: {}"]~ + :: + ^- tang + %+ welp + (expect-eq !>([~1111.1.1 date.schematic.note])) + :: + =/ list-schematic=schematic:ford schematic.schematic.note + :: + ?. ?=(%list -.list-schematic) + [%leaf "bad move, not a %list: {}"]~ + :: + ?. ?=([* * ~] schematics.list-schematic) + [%leaf "bad move, wrong number of sub-schematics: {}"]~ + :: + =/ s1=schematic:ford i.schematics.list-schematic + =/ s2=schematic:ford i.t.schematics.list-schematic + :: test :s1 + :: + ?. ?=([^ *] s1) + [%leaf "bad move, s1 not cell: {}"]~ + :: + =/ path1=schematic:ford -.s1 + ?. ?=([%$ %path *] path1) + [%leaf "bad move, path1 not %path: {}"]~ + :: + =/ vase1=vase q.literal.path1 + :: + ^- tang + %+ welp + (expect-eq !>([[-:!>(*path) /file1/noun] vase1])) + :: + =/ cast1=schematic:ford +.s1 + :: + ?. ?=([%cast [%~nul %home] %noun *] cast1) + [%leaf "bad move, wrong cast1: {}"]~ + :: + =/ lit1=schematic:ford input.cast1 + :: + ^- tang + %+ welp + (expect-eq !>([[%$ %noun %noun 'file1'] lit1])) + :: test :s2 + :: + ?. ?=([^ *] s2) + [%leaf "bad move, s2 not cell: {}"]~ + :: + =/ path2=schematic:ford -.s2 + ?. ?=([%$ %path *] path2) + [%leaf "bad move, path2 not %path: {}"]~ + :: + =/ vase2=vase q.literal.path2 + :: + ^- tang + %+ welp + (expect-eq !>([[-:!>(*path) /file2/noun] vase2])) + ^- tang + :: + =/ cast2=schematic:ford +.s2 + :: + ?. ?=([%cast [%~nul %home] %noun *] cast2) + [%leaf "bad move, wrong cast2: {}"]~ + :: + =/ lit2=schematic:ford input.cast2 + :: + (expect-eq !>([[%$ %noun %noun 'file2'] lit2])) + == == + :: + ;: welp + results1 + == +:: |utilities: helper functions for testing +:: +::+| utilities +:: +:: +clay-call: have clay run a +task and assert it produces :expected-moves7890 +:: +:: TODO: make this generic for any vane +:: +++ clay-call + |= $: clay-gate=_clay-gate + now=@da + scry=sley + call-args=[=duct =type wrapped-task=(hobo task:able:clay)] + expected-moves=(list move:clay-gate) + == + ^- [tang _clay-gate] + :: + =/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) + :: + =^ moves clay-gate (call:clay-core call-args) + :: + =/ output=tang + %- expect-eq !> + :- expected-moves + moves + :: + [output clay-gate] +:: +clay-call-with-comparator: run a clay +task and test output moves +:: +:: TODO: make this generic for any vane +:: +++ clay-call-with-comparator + |= $: clay-gate=_clay-gate + now=@da + scry=sley + call-args=[=duct =type wrapped-task=(hobo task:able:clay)] + move-comparator=$-((list move:clay-gate) tang) + == + ^- [tang _clay-gate] + :: + =/ clay-core (clay-gate now=now eny=0xdead.beef scry=scry) + :: + =^ moves clay-gate (call:clay-core call-args) + :: + =/ output=tang (move-comparator moves) + :: + [output clay-gate] +-- From 7163c60649a6fa793d965089786812a7fcbe2d7f Mon Sep 17 00:00:00 2001 From: Ted Blackman Date: Tue, 28 Aug 2018 15:11:24 -0700 Subject: [PATCH 2/2] remove superfluous casts --- tests/sys/vane/clay.hoon | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/tests/sys/vane/clay.hoon b/tests/sys/vane/clay.hoon index 3e8c5b0215..f022ad5456 100644 --- a/tests/sys/vane/clay.hoon +++ b/tests/sys/vane/clay.hoon @@ -34,7 +34,7 @@ [%leaf "wrong number of moves: {<(lent moves)>}"]~ :: ^- tang - ;: welp + ;: weld %- expect-eq !> :_ i.moves ^- move:clay-gate @@ -61,8 +61,7 @@ =/ =duct p.move =/ card=(wind note:clay-gate gift:able:clay) q.move :: - ^- tang - %+ welp + %+ weld (expect-eq !>([~[/info] duct])) :: ?. ?=(%pass -.card) @@ -70,8 +69,7 @@ :: =/ =wire p.card :: - ^- tang - %+ welp + %+ weld (expect-eq !>([/inserting/~nul/home/~1111.1.1 wire])) :: =/ note=note:clay-gate q.card @@ -79,19 +77,16 @@ ?. ?=([%f %build *] note) [%leaf "bad move, not a %build: {}"]~ :: - ^- tang - %+ welp + %+ weld (expect-eq !>([~nul our.note])) :: - ^- tang - %+ welp + %+ weld (expect-eq !>([%.n live.note])) :: ?. ?=(%pin -.schematic.note) [%leaf "bad move, not a %pin: {}"]~ :: - ^- tang - %+ welp + %+ weld (expect-eq !>([~1111.1.1 date.schematic.note])) :: =/ list-schematic=schematic:ford schematic.schematic.note @@ -115,8 +110,7 @@ :: =/ vase1=vase q.literal.path1 :: - ^- tang - %+ welp + %+ weld (expect-eq !>([[-:!>(*path) /file1/noun] vase1])) :: =/ cast1=schematic:ford +.s1 @@ -126,8 +120,7 @@ :: =/ lit1=schematic:ford input.cast1 :: - ^- tang - %+ welp + %+ weld (expect-eq !>([[%$ %noun %noun 'file1'] lit1])) :: test :s2 :: @@ -140,10 +133,8 @@ :: =/ vase2=vase q.literal.path2 :: - ^- tang - %+ welp + %+ weld (expect-eq !>([[-:!>(*path) /file2/noun] vase2])) - ^- tang :: =/ cast2=schematic:ford +.s2 ::