www

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

test-traversal-2.rkt (3629B)


      1 #lang typed/racket
      2 
      3 (require "traversal-util.rkt"
      4          type-expander
      5          phc-adt
      6          "ck.rkt"
      7          "../dispatch-union.rkt") ;; DEBUG
      8 (adt-init)
      9 
     10 
     11 
     12 (define-fold f₁ t₁ (tagged tg [a String] [b Boolean]) String)
     13 (define-fold f₂ t₂ (U (tagged tg [a String] [b Boolean])) String)
     14 (define-fold f₃ t₃ (U (tagged tg [a String] [b Boolean])
     15                       (tagged tg [a Boolean] [c String]))
     16   String)
     17 (define-fold f₄ t₄ (U (tagged tg [a String] [b Boolean])
     18                       String
     19                       (tagged tg [a Boolean] [c String]))
     20   String)
     21 (define-fold f₅ t₅ (U (tagged t0)
     22                       String
     23                       (tagged tg [a Boolean] [c String]))
     24   String)
     25 (define-fold f₆ t₆ (U String
     26                       (tagged tg [a String] [b Boolean]))
     27   String)
     28 
     29 (define (string->symbol+acc [x : String] [acc : Integer])
     30   (values (string->symbol x) (add1 acc)))
     31 
     32 (check-equal?-values:
     33  ((f₁ string? string->symbol+acc) (tagged tg [a "abc"] [b #f]) 0)
     34  : (Values (tagged tg [a Symbol] [b Boolean]) Integer)
     35  (tagged tg [a 'abc] [b #f]) 1)
     36 
     37 (check-equal?-values:
     38  ((f₂ string? string->symbol+acc) (tagged tg [a "abc"] [b #f]) 0)
     39  : (Values (U (tagged tg [a Symbol] [b Boolean])) Integer)
     40  (tagged tg [a 'abc] [b #f]) 1)
     41 
     42 (check-equal?-values:
     43  ((f₃ string? string->symbol+acc) (tagged tg [a "abc"] [b #f]) 0)
     44  : (Values (U (tagged tg [a Symbol] [b Boolean])
     45               (tagged tg [a Boolean] [c Symbol]))
     46            Integer)
     47  (tagged tg [a 'abc] [b #f]) 1)
     48 
     49 (check-equal?-values:
     50  ((f₃ string? string->symbol+acc) (tagged tg [a #t] [c "def"]) 0)
     51  : (Values (U (tagged tg [a Symbol] [b Boolean])
     52               (tagged tg [a Boolean] [c Symbol]))
     53            Integer)
     54  (tagged tg [a #t] [c 'def]) 1)
     55 
     56 (check-equal?-values:
     57    ((f₄ string? string->symbol+acc) (tagged tg [a "abc"] [b #f]) 0)
     58    : (Values (U (tagged tg [a Symbol] [b Boolean])
     59                 Symbol
     60                 (tagged tg [a Boolean] [c Symbol]))
     61              Integer)
     62    (tagged tg [a 'abc] [b #f]) 1)
     63 
     64 (check-equal?-values:
     65    ((f₄ string? string->symbol+acc) "ghi" 0)
     66    : (Values (U (tagged tg [a Symbol] [b Boolean])
     67                 Symbol
     68                 (tagged tg [a Boolean] [c Symbol]))
     69              Integer)
     70    'ghi 1)
     71 
     72 (check-equal?-values:
     73    ((f₄ string? string->symbol+acc) (tagged tg [a #t] [c "def"]) 0)
     74    : (Values (U (tagged tg [a Symbol] [b Boolean])
     75                 Symbol
     76                 (tagged tg [a Boolean] [c Symbol]))
     77              Integer)
     78    (tagged tg [a #t] [c 'def]) 1)
     79 
     80 (check-equal?-values:
     81    ((f₅ string? string->symbol+acc) (tagged t0 #:instance) 0)
     82    : (Values (U (tagged t0)
     83                 Symbol
     84                 (tagged tg [a Boolean] [c Symbol]))
     85              Integer)
     86    (tagged t0 #:instance) 0)
     87 
     88 (check-equal?-values:
     89    ((f₅ string? string->symbol+acc) "ghi" 0)
     90    : (Values (U (tagged t0)
     91                 Symbol
     92                 (tagged tg [a Boolean] [c Symbol]))
     93              Integer)
     94    'ghi 1)
     95 
     96 (check-equal?-values:
     97    ((f₅ string? string->symbol+acc) (tagged tg [a #t] [c "def"]) 0)
     98    : (Values (U (tagged t0)
     99                 Symbol
    100                 (tagged tg [a Boolean] [c Symbol]))
    101              Integer)
    102    (tagged tg [a #t] [c 'def]) 1)
    103 
    104 (check-equal?-values:
    105  ((f₆ string? string->symbol+acc) (tagged tg [a "abc"] [b #f]) 0)
    106  : (Values (U (tagged tg [a Symbol] [b Boolean])
    107               Symbol)
    108            Integer)
    109  (tagged tg [a 'abc] [b #f]) 1)
    110 
    111 (check-equal?-values:
    112  ((f₆ string? string->symbol+acc) "ghi" 0)
    113  : (Values (U (tagged tg [a Symbol] [b Boolean])
    114               Symbol)
    115            Integer)
    116  'ghi 1)