www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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]))