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