www

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

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