test-merge.rkt (1201B)
1 #lang type-expander 2 3 (require phc-adt phc-toolkit) 4 (adt-init) 5 6 (check-equal?: 7 (merge (tagged foo [b 'b1]) (tagged foo [a 'a1] [c 'c1]) 8 : (U [(foo b) (foo a c)])) 9 : (tagged foo [a 'a1] [b 'b1] [c 'c1]) 10 (tagged foo [a 'a1] [b 'b1] [c 'c1])) 11 12 (check-equal?: 13 (merge (tagged bar [b 'b2]) (tagged bar [a 'a2] [c 'c2]) 14 : (U [(bar b) (bar a c)] [(foo b) (foo a c)])) 15 : (tagged bar [a 'a2] [b 'b2] [c 'c2]) 16 (tagged bar [a 'a2] [b 'b2] [c 'c2])) 17 18 (check-equal?: 19 (merge (tagged baz [b 'b3]) (tagged baz [a 'a3]) 20 : (U [(baz b) (baz a)] [(foo b) (foo a c)])) 21 : (tagged baz [a 'a3] [b 'b3]) 22 (tagged baz [a 'a3] [b 'b3])) 23 24 (check-equal?: 25 (merge (tagged qux [b 'b4]) (tagged qux [d 'd4]) 26 : (U [(qux b) (qux d)] [(foo b) (foo a c)])) 27 : (tagged qux [b 'b4] [d 'd4]) 28 (tagged qux [b 'b4] [d 'd4])) 29 30 ;; Different tags 31 (check-equal?: 32 (merge (tagged qux [b 'b4]) (tagged foo [d 'd4]) 33 : (U [(qux b) (foo d)] [(foo b) (foo a c)])) 34 : (tagged qux [b 'b4] [d 'd4]) 35 (tagged qux [b 'b4] [d 'd4])) 36 (check-equal?: 37 (merge (tagged qux [b 'b4]) (tagged foo [d 'd4]) 38 : (U [(qux b) (foo d)] [(foo b) (foo a)])) 39 : (tagged qux [b 'b4] [d 'd4]) 40 (tagged qux [b 'b4] [d 'd4]))