www

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

test-with-plus.rkt (3585B)


      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 ;; Correctly gave an error:
     16 ;(check-equal?: (with+ (tagged foo [b 'b1]) : (U (foo b)) [a 'a1] [b 'b1-update])
     17 ;               : (tagged foo [a 'a1] [b 'b1-update])
     18 ;               (tagged foo [a 'a1] [b 'b1-update]))
     19 ;(check-equal?: (with+ (tagged foo [b 'b1]) : (U (foo b)) [b 'b1-update])
     20 ;               : (tagged foo [b 'b1-update])
     21 ;               (tagged foo [b 'b1-update]))
     22 ;(check-equal?: (with+ (tagged foo [b 'b1]) : (U (foo b)) [a 'a1] [b 'b1-update] [c 'c1])
     23 ;               : (tagged foo [a 'a1] [b 'b1-update] [c 'c1])
     24 ;               (tagged foo [a 'a1] [b 'b1-update] [c 'c1]))
     25 
     26 (check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)))
     27                : (tagged foo [b 'b1] [d 'd1])
     28                (tagged foo [b 'b1] [d 'd1]))
     29 (check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1])
     30                : (tagged foo [a 'a1] [b 'b1] [d 'd1])
     31                (tagged foo [a 'a1] [b 'b1] [d 'd1]))
     32 (check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [c 'c1])
     33                : (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1])
     34                (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1]))
     35 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [b 'b1-update])
     36 ;               : (tagged foo [a 'a1] [b 'b1-update] [d 'd1])
     37 ;               (tagged foo [a 'a1] [b 'b1-update] [d 'd1]))
     38 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [b 'b1-update])
     39 ;               : (tagged foo [b 'b1-update] [d 'd1])
     40 ;               (tagged foo [b 'b1-update] [d 'd1]))
     41 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d)) [a 'a1] [b 'b1-update] [c 'c1])
     42 ;               : (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1])
     43 ;               (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1]))
     44 
     45 (check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)))
     46                : (tagged foo [b 'b1] [d 'd1])
     47                (tagged foo [b 'b1] [d 'd1]))
     48 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1])
     49 ;               : (tagged foo [a 'a1] [b 'b1] [d 'd1])
     50 ;               (tagged foo [a 'a1] [b 'b1] [d 'd1]))
     51 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [c 'c1])
     52 ;               : (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1])
     53 ;               (tagged foo [a 'a1] [b 'b1] [c 'c1] [d 'd1]))
     54 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [b 'b1-update])
     55 ;               : (tagged foo [a 'a1] [b 'b1-update] [d 'd1])
     56 ;               (tagged foo [a 'a1] [b 'b1-update] [d 'd1]))
     57 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [b 'b1-update])
     58 ;               : (tagged foo [b 'b1-update] [d 'd1])
     59 ;               (tagged foo [b 'b1-update] [d 'd1]))
     60 ;(check-equal?: (with+ (tagged foo [b 'b1] [d 'd1]) : (U (foo b d) (foo a d)) [a 'a1] [b 'b1-update] [c 'c1])
     61 ;               : (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1])
     62 ;               (tagged foo [a 'a1] [b 'b1-update] [c 'c1] [d 'd1]))