test-with.rkt (3524B)
1 #lang type-expander 2 3 (require phc-adt phc-toolkit) 4 (adt-init) 5 6 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b))) 7 : (tagged foo [b 'b1]) 8 (tagged foo [b 'b1])) 9 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b)) [a 'a1]) 10 : (tagged foo [a 'a1] [b 'b1]) 11 (tagged foo [a 'a1] [b 'b1])) 12 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b)) [a 'a1] [c 'c1]) 13 : (tagged foo [a 'a1] [b 'b1] [c 'c1]) 14 (tagged foo [a 'a1] [b 'b1] [c 'c1])) 15 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b)) [a 'a1] [b 'b1-update]) 16 : (tagged foo [a 'a1] [b 'b1-update]) 17 (tagged foo [a 'a1] [b 'b1-update])) 18 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b)) [b 'b1-update]) 19 : (tagged foo [b 'b1-update]) 20 (tagged foo [b 'b1-update])) 21 (check-equal?: (with! (tagged foo [b 'b1]) : (U (foo b)) [a 'a1] [b 'b1-update] [c 'c1]) 22 : (tagged foo [a 'a1] [b 'b1-update] [c 'c1]) 23 (tagged foo [a 'a1] [b 'b1-update] [c 'c1])) 24 25 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d))) 26 : (tagged foo [b 'b1] [d 'd1]) 27 (tagged foo [b 'b1] [d 'd1])) 28 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1]) 29 : (tagged foo [a 'a1] [b 'b1] [d 'd1]) 30 (tagged foo [a 'a1] [b 'b1] [d 'd1])) 31 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [c 'c1]) 32 : (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1]) 33 (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1])) 34 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [b 'b1-update]) 35 : (tagged foo [a 'a1] [b 'b1-update] [d 'd1]) 36 (tagged foo [a 'a1] [b 'b1-update] [d 'd1])) 37 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [b 'b1-update]) 38 : (tagged foo [b 'b1-update] [d 'd1]) 39 (tagged foo [b 'b1-update] [d 'd1])) 40 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [b 'b1-update] [c 'c1]) 41 : (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1]) 42 (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1])) 43 44 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d))) 45 : (tagged foo [b 'b1] [d 'd1]) 46 (tagged foo [b 'b1] [d 'd1])) 47 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1]) 48 : (tagged foo [a 'a1] [b 'b1] [d 'd1]) 49 (tagged foo [a 'a1] [b 'b1] [d 'd1])) 50 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [c 'c1]) 51 : (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1]) 52 (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1])) 53 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [b 'b1-update]) 54 : (tagged foo [a 'a1] [b 'b1-update] [d 'd1]) 55 (tagged foo [a 'a1] [b 'b1-update] [d 'd1])) 56 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [b 'b1-update]) 57 : (tagged foo [b 'b1-update] [d 'd1]) 58 (tagged foo [b 'b1-update] [d 'd1])) 59 (check-equal?: (with! (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [b 'b1-update] [c 'c1]) 60 : (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1]) 61 (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1]))