test-split-xlist.rkt (3861B)
1 #lang typed/racket 2 3 (require phc-toolkit 4 xlist 5 type-expander 6 "../split-xlist.rkt") 7 8 9 (check-equal?: 10 (((inst f-split-list Number (Listof Symbol)) 11 (make-predicate (Listof Symbol))) '(1 2 3 a b)) 12 : (List (Listof Number) 13 (Listof Symbol)) 14 '((1 2 3) (a b))) 15 16 (check-equal?: 17 (let () 18 (m-split-xlist* '(1 2 3 d e f 7 8 9 . 42) 19 [n1 s n2 r] 20 Number ^ {*} 21 Symbol ^ {*} 22 Number ^ {*} 23 #:rest Number) 24 (list n1 s n2 r)) 25 : (List (Listof Number) 26 (Listof Symbol) 27 (Listof Number) 28 Number) 29 '((1 2 3) (d e f) (7 8 9) 42)) 30 31 (check-equal?: 32 (let () 33 (m-split-xlist* '(1 2 3 d e f 7 8 9) 34 [n1 s n2 nul] 35 Number ^ {*} 36 Symbol ^ {*} 37 Number ^ {*} 38 #:rest Null) 39 (list n1 s n2 nul)) 40 : (List (Listof Number) 41 (Listof Symbol) 42 (Listof Number) 43 Null) 44 '((1 2 3) (d e f) (7 8 9) ())) 45 46 (check-equal?: 47 (match '(1 2 3 d e f 7 8 9) 48 [(split-xlist (list a b c d) Number⃰ Symbol⃰ Number⃰) 49 (list d c b a)]) 50 : (List Null (Listof Number) (Listof Symbol) (Listof Number)) 51 '(() (7 8 9) (d e f) (1 2 3))) 52 53 54 (check-equal?: 55 (match '(1 2 3 d e f 7 8 9) 56 [(split-xlist (list a b c d e) Number Number⃰ Symbol⃰ Number⃰) 57 (list e d c b a)]) 58 : (List Null (Listof Number) (Listof Symbol) (Listof Number) Number) 59 '(() (7 8 9) (d e f) (2 3) 1)) 60 61 (check-equal?: 62 (match '(1 2 3 d e f 7 8 9) 63 [(split-xlist (list a b c d e) Number² Number⃰ Symbol⃰ Number⃰) 64 (list e d c b a)]) 65 : (List Null 66 (Listof Number) 67 (Listof Symbol) 68 (Listof Number) 69 (List Number Number)) 70 '(() (7 8 9) (d e f) (3) (1 2))) 71 72 (check-equal?: 73 (match '(1 2 3 d e f 7 8 9) 74 [(split-xlist (list a b c d) Number²⁻³ Symbol⃰ Number⃰) 75 (list d c b a)]) 76 : (List Null 77 (Listof Number) 78 (Listof Symbol) 79 (List* Number Number (U Null (List Number)))) 80 '(() (7 8 9) (d e f) (1 2 3))) 81 82 (check-equal?: 83 (match '(1 2 3 4 5 d e f 7 8 9) 84 [(split-xlist (list a b c d) Number³⁻⁵ Symbol⃰ Number⃰) 85 (list d c b a)]) 86 : (List Null 87 (Listof Number) 88 (Listof Symbol) 89 (List* Number Number Number (U Null 90 (List Number) 91 (List Number Number)))) 92 '(() (7 8 9) (d e f) (1 2 3 4 5))) 93 94 (check-equal?: 95 (match '(1 2 3 4 d e f 7 8 9) 96 [(split-xlist (list a b c d) Number³⁻⁵ Symbol⃰ Number⃰) 97 (list d c b a)]) 98 : (List Null 99 (Listof Number) 100 (Listof Symbol) 101 (List* Number Number Number (U Null 102 (List Number) 103 (List Number Number)))) 104 '(() (7 8 9) (d e f) (1 2 3 4))) 105 106 (check-equal?: 107 (match '(1 2 3 d e f 7 8 9) 108 [(split-xlist (list a b c d) Number³⁻⁵ Symbol⃰ Number⃰) 109 (list d c b a)]) 110 : (List Null 111 (Listof Number) 112 (Listof Symbol) 113 (xlist Number³⁻⁵)) 114 '(() (7 8 9) (d e f) (1 2 3))) 115 116 (check-equal?: 117 (match '(1 2 3 4 d e f g 7 8 9) 118 [(split-xlist (list a b c d) Number³⁻⁵ Symbol²⁻⁶ Number⃰) 119 (list d c b a)]) 120 : (List Null 121 (Listof Number) 122 (List* Symbol Symbol (U Null 123 (List Symbol) 124 (List Symbol Symbol) 125 (List Symbol Symbol Symbol) 126 (List Symbol Symbol Symbol Symbol))) 127 (List* Number Number Number (U Null 128 (List Number) 129 (List Number Number)))) 130 '(() (7 8 9) (d e f g) (1 2 3 4)))