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"
10"'+ r_/" ᵏc̲ases< "1 2 3 -> 6; r_ange 100 -> 5050"
ᵏ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))
ᵏ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))