www

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

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)))