www

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

test-type.rkt (4785B)


      1 #lang typed/racket
      2 
      3 (require xlist
      4          type-expander
      5          typed/rackunit)
      6 
      7 (define-type VectorNS (Vector Number String))
      8 
      9 (test-begin
     10  "(xlist . single-type)"
     11  (ann '() (xlist . Null))
     12  (ann '1 (xlist . 1))
     13  (ann '1 (xlist . Number))
     14  (ann #(1 "b") (xlist . VectorNS))
     15  (void))
     16 
     17 (test-begin
     18  "(xlist #:rest . type)"
     19  (ann '() (xlist #:rest Null))
     20  (ann '1 (xlist #:rest 1))
     21  (ann '1 (xlist #:rest Number))
     22  (ann #(1 "b") (xlist #:rest (Vector Number String)))
     23  (void))
     24 
     25 
     26 (test-begin
     27  "(xlist 1 2 3 4 5)"
     28  (ann '() (xlist))
     29  (ann '(1) (xlist 1))
     30  (ann '(1 2) (xlist 1 2))
     31  (ann '(1 2 3) (xlist 1 2 3))
     32  (ann '(1 2 3 4) (xlist 1 2 3 4))
     33  (ann '(1 2 3 4 5) (xlist 1 2 3 4 5))
     34  (void))
     35 
     36 ;; Should fail:
     37 ; (xlist ^ 1)
     38 ; (xlist ^ 1 +)
     39 ; (xlist ^ 1 *)
     40 ; (xlist +)
     41 ; (xlist *)
     42 
     43 (test-begin
     44  "(xlist 1 *) and (xlist 1 +) with or witout ^"
     45  (ann '() (xlist 1 *))
     46  (ann '(1) (xlist 1 *))
     47  (ann '(1 1) (xlist 1 *))
     48  (ann '(1 1 1) (xlist 1 *))
     49 
     50  ; NOT (ann '() (xlist 1 +))
     51  (ann '(1) (xlist 1 +))
     52  (ann '(1 1) (xlist 1 +))
     53  (ann '(1 1 1) (xlist 1 +))
     54 
     55  (ann '() (xlist 1 ^ *))
     56  (ann '(1) (xlist 1 ^ *))
     57  (ann '(1 1) (xlist 1 ^ *))
     58  (ann '(1 1 1) (xlist 1 ^ *))
     59 
     60  ; NOT (ann '() (xlist 1 ^ +))
     61  (ann '(1) (xlist 1 ^ +))
     62  (ann '(1 1) (xlist 1 ^ +))
     63  (ann '(1 1 1) (xlist 1 ^ +))
     64  (void))
     65 
     66 
     67 (test-begin
     68  "(xlist Number *) and (xlist Number +) with or witout ^"
     69  (ann '() (xlist Number *))
     70  (ann '(1) (xlist Number *))
     71  (ann '(1 1) (xlist Number *))
     72  (ann '(1 1 1) (xlist Number *))
     73 
     74  ; NOT (ann '() (xlist Number +))
     75  (ann '(1) (xlist Number +))
     76  (ann '(1 1) (xlist Number +))
     77  (ann '(1 1 1) (xlist Number +))
     78 
     79  (ann '() (xlist Number ^ *))
     80  (ann '(1) (xlist Number ^ *))
     81  (ann '(1 1) (xlist Number ^ *))
     82  (ann '(1 1 1) (xlist Number ^ *))
     83 
     84  ; NOT (ann '() (xlist Number ^ +))
     85  (ann '(1) (xlist Number ^ +))
     86  (ann '(1 1) (xlist Number ^ +))
     87  (ann '(1 1 1) (xlist Number ^ +))
     88  (void))
     89 
     90 (test-begin
     91  "(xlist Number *) and (xlist Number +) something after"
     92  (ann '() (xlist Number * String *))
     93  (ann '(1) (xlist Number * String *))
     94  (ann '("b") (xlist Number * String *))
     95  (ann '(1 "b") (xlist Number * String *))
     96  (ann '(1 1 1 "b" "b") (xlist Number * String *))
     97  (ann '(1 1 1) (xlist Number * String *))
     98  (ann '("b" "b" "b") (xlist Number * String *))
     99 
    100  ; NOT (ann '() (xlist Number + String +))
    101  ; NOT (ann '(1) (xlist Number + String +))
    102  ; NOT (ann '("b") (xlist Number + String +))
    103  (ann '(1 "b") (xlist Number + String +))
    104  (ann '(1 1 "b") (xlist Number + String +))
    105  (ann '(1 "b" "b") (xlist Number + String +))
    106 
    107  (ann '() (xlist Number ^ * String ^ *))
    108  (ann '(1) (xlist Number ^ * String ^ *))
    109  (ann '("b") (xlist Number ^ * String ^ *))
    110  (ann '(1 "b") (xlist Number ^ * String ^ *))
    111  (ann '(1 1 1 "b" "b") (xlist Number ^ * String ^ *))
    112  (ann '(1 1 1) (xlist Number ^ * String ^ *))
    113  (ann '("b" "b" "b") (xlist Number ^ * String ^ *))
    114 
    115  ; NOT (ann '() (xlist Number ^ + String ^ +))
    116  ; NOT (ann '(1) (xlist Number ^ + String ^ +))
    117  ; NOT (ann '("b") (xlist Number ^ + String ^ +))
    118  (ann '(1 "b") (xlist Number ^ + String ^ +))
    119  (ann '(1 1 "b") (xlist Number ^ + String ^ +))
    120  (ann '(1 "b" "b") (xlist Number ^ + String ^ +))
    121  (void))
    122 
    123 (test-begin
    124  "(xlist Number ^ x +)"
    125  (ann '(1 1 1) (xlist Number +))
    126  (ann '(1 1 1) (xlist Number ^ +))
    127  (ann '(1 1 1) (xlist Number ^ 0 +))
    128  (ann '(1 1 1) (xlist Number ^ 1 +))
    129  (ann '(1 1 1) (xlist Number ^ 2 +))
    130  (ann '(1 1 1) (xlist Number ^ 3 +))
    131  (void))
    132 
    133 (test-begin
    134  "(xlist Number ^ x)"
    135  (ann '() (xlist Number ^ 0))
    136  (ann '(1) (xlist Number ^ 1))
    137  (ann '(1 1) (xlist Number ^ 2))
    138  (ann '(1 1 1) (xlist Number ^ 3))
    139  (ann '(1 1 1 1) (xlist Number ^ 4))
    140  (ann '(1 1 1 1 1) (xlist Number ^ 5))
    141  (void))
    142 
    143 (test-begin
    144  "(xlist Number ^ x - y)"
    145  (ann '() (xlist Number ^ -))
    146  (ann '(1 1 1) (xlist Number ^ -))
    147  (ann '() (xlist Number ^ 0 -))
    148  (ann '(1 1 1) (xlist Number ^ 0 -))
    149  (ann '(1 1 1) (xlist Number ^ 1 -))
    150  (ann '(1 1 1) (xlist Number ^ 2 -))
    151  (ann '(1 1 1) (xlist Number ^ 3 -))
    152  (ann '() (xlist Number ^ - ∞))
    153  (ann '(1 1 1) (xlist Number ^ - ∞))
    154  (ann '() (xlist Number ^ 0 - ∞))
    155  (ann '(1 1 1) (xlist Number ^ 0 - ∞))
    156  (ann '(1 1 1) (xlist Number ^ 1 - ∞))
    157  (ann '(1 1 1) (xlist Number ^ 2 - ∞))
    158  (ann '(1 1 1) (xlist Number ^ 3 - ∞))
    159  (ann '(1 1 1) (xlist Number ^ 0 - 5))
    160  (ann '(1 1 1) (xlist Number ^ 3 - 5))
    161  (ann '(1 1 1 1) (xlist Number ^ 0 - 5))
    162  (ann '(1 1 1 1) (xlist Number ^ 3 - 5))
    163  (ann '(1 1 1 1 1) (xlist Number ^ 0 - 5))
    164  (ann '(1 1 1 1 1) (xlist Number ^ 3 - 5))
    165  (void))
    166 
    167 (test-begin
    168  "(xlist Number ^ x - String)"
    169  (ann '("b") (xlist Number ^ - String))
    170  (ann '(1 1 1 "b") (xlist Number ^ - String))
    171  (ann '("b") (xlist Number ^ 0 - String))
    172  (ann '(1 1 1 "b") (xlist Number ^ 0 - String))
    173  (ann '(1 1 1 "b") (xlist Number ^ 1 - String))
    174  (ann '(1 1 1 "b") (xlist Number ^ 2 - String))
    175  (void))