sourcelibs/Check/demos/table.xtl

1⍝!/usr/bin/env xetal 2⍝# Table-driven checks: c_ases< writes one check per row when the 3⍝# program is compiled, each named by its own source text, so a failing 4⍝# case says which without writing the expression twice. The last row 5⍝# is wrong on purpose (# shows failures). Run with "just demo Check table". 6 7ᵏ⁼u̲se< "Check" 8ᵘc̲lamp ← { x → 0 m̲ax 10 m̲in x } ⍝ keep x within 0 to 10 9"u:c_lamp" ᵏc̲ases< "5 -> 5; -3 -> 0; 42 -> 10; 1 2 3 -> 1 2 3; 11 -> 11"
ᵏc̲ases< expands to
(5) { w g → w m̲atch g ? "ok: u:c_lamp 5"◆ "FAIL: u:c_lamp 5: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } (ᵘc̲lamp (5))
(0) { w g → w m̲atch g ? "ok: u:c_lamp -3"◆ "FAIL: u:c_lamp -3: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } (ᵘc̲lamp (-3))
(10) { w g → w m̲atch g ? "ok: u:c_lamp 42"◆ "FAIL: u:c_lamp 42: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } (ᵘc̲lamp (42))
(1 2 3) { w g → w m̲atch g ? "ok: u:c_lamp 1 2 3"◆ "FAIL: u:c_lamp 1 2 3: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } (ᵘc̲lamp (1 2 3))
(11) { w g → w m̲atch g ? "ok: u:c_lamp 11"◆ "FAIL: u:c_lamp 11: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } (ᵘc̲lamp (11))
10"'+ r_/" ᵏc̲ases< "1 2 3 -> 6; r_ange 100 -> 5050"
ᵏc̲ases< expands to
(6) { w g → w m̲atch g ? "ok: '+ r_/ 1 2 3"◆ "FAIL: '+ r_/ 1 2 3: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } ('+ r̲/ (1 2 3))
(5050) { w g → w m̲atch g ? "ok: '+ r_/ r_ange 100"◆ "FAIL: '+ r_/ r_ange 100: expected " c̲at (f̲ormat w) c̲at ", got " c̲at f̲ormat g } ('+ r̲/ (r̲ange 100))