kzccm1d4if10m2xaz1wqy3xar821pp1r-my-site-anaphoric-git.test.suzanne.soy-0.0.1

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

and-let-test.rkt (1329B)


      1 #lang racket
      2 
      3 (require anaphoric/and-let
      4          rackunit)
      5 
      6 (define lst '(x b 2 y z a b c 1 2 3))
      7 
      8 (check-equal? (and-let)
      9               #t)
     10 
     11 (check-equal? (and-let 42)
     12               42)
     13 
     14 (check-equal? (and-let #f)
     15               #f)
     16 
     17 (check-equal? (and-let [v1 (member 'y lst)]
     18                 v1)
     19               '(y z a b c 1 2 3))
     20 
     21 (check-equal? (and-let [v1 (member 'y lst)]
     22                        [v2 (member 'b v1)]
     23                        [v3 (member '2 v2)]
     24                 (list v1 v2 v3))
     25               '((y z a b c 1 2 3)
     26                 (b c 1 2 3)
     27                 (2 3)))
     28 
     29 (check-equal? (let ([v1 'outer]
     30                     [v2 'outer]
     31                     [v3 'outer])
     32                 (and-let [v1 (member 'y lst)]
     33                          [v2 (member 'b v1)]
     34                          [v3 (member '2 v2)]
     35                   (list v1 v2 v3)))
     36               '((y z a b c 1 2 3)
     37                 (b c 1 2 3)
     38                 (2 3)))
     39 
     40 (check-equal? (let ([v1 'outer])
     41                 (and-let [v1 (member 'absent lst)]
     42                   (fail "aand selected wrong branch")))
     43               #f)
     44 
     45 (check-equal? (let ([v1 'outer]
     46                     [v2 'outer])
     47                 (and-let [v1 (member 'y lst)]
     48                          [v2 (member 'x v1)]
     49                   (fail "aand selected wrong branch")))
     50               #f)