source: project/release/5/pseudolists/trunk/tests/run.scm @ 37451

Last change on this file since 37451 was 37451, checked in by juergen, 20 months ago

pseudolists 1.0 initial import

File size: 3.4 KB
Line 
1
2(import scheme (chicken base) (chicken condition)
3        pseudolists
4        simple-tests)
5
6(define-test (pseudolists?)
7  (pl? "x")
8  (pl? '(a b . c))
9  (pl-null? 5)
10  ((pl-of?) "x")
11  ((pl-of? symbol?) '(a b . c))
12
13  (equal? (pl-maker #f 1 2 3 4)
14          '(1 2 3 4 . #f))
15  (equal? (pl-maker #f 0 1 2 3) '(0 1 2 3 . #f))
16  (equal? (pl-maker '() 0 1 2 3) '(0 1 2 3))
17  (equal? (pl-iterate #f 5 add1 0) '(0 1 2 3 4 . #f))
18
19  (not (pl-sentinel
20         (pl-maker #f 1 2 3 4)))
21  (= (pl-sentinel '(0 1 2 3 2 . 2)) 2)
22  (not (pl-sentinel '(0 1 2 3 . #f)))
23  (= (pl-length '(0 1 2 3 . 4)) 4)
24
25  (equal? (pl-head '(0 1 2 3 2 . 2)) '(0 1 2 3 2))
26  (equal? (pl-head 0) '())
27  (equal? (pl-head '(0 . 1)) '(0))
28
29  (= (pl-at 1 '(0 1 2 3 . 4)) 1)
30  (= (pl-at 2 '(0 1 2 3 . #f)) 2)
31  (not (condition-case (pl-at 0 1)
32         ((exn) #f)))
33
34  (= (pl-index odd? '(0 1 2 . 3)) 1)
35  (= (pl-index odd? '(0 2 4 . 1)) -1)
36
37  (equal? (pl-drop 1 '(0 1 2 3 . 4))
38          '(1 2 3 . 4))
39  (= (pl-drop 0 1) 1)
40  (equal? (pl-drop 2 '(0 1 2 3 . #f)) '(2 3 . #f))
41  (equal? (pl-drop-while odd? '(1 3 2 4 . #f)) '(2 4 . #f))
42  (equal? (pl-drop-while negative? '(1 3 2 4 . #f)) '(1 3 2 4 . #f))
43 
44  (equal? (pl-take 3 '(0 1 2 3 4 . #t)) '(0 1 2 . #t))
45  (equal? (pl-take 2 '(0 1 2 3 . #f)) '(0 1 . #f))
46  (equal? (pl-take-while odd? '(1 3 2 4 . #f)) '(1 3 . #f))
47  (not (pl-take-while negative? '(1 3 2 4 . #f)))
48
49  (= (pl-filter odd? 1) 1)
50  (equal? (pl-filter odd? '(0 1 2 3 4)) '(1 3))
51  (equal? (pl-filter odd? '(0 1 2 3 . 4)) '(1 3 . 4))
52 
53  (equal? (pl-map add1 '(0 1 2 3 . 4)) '(1 2 3 4 . 4))
54  (not (pl-map add1 #f))
55
56  (equal? (pl-reverse '(0 1 2 3 . 4)) '(3 2 1 0 . 4))
57  (equal? (pl-reverse '(0 1 2 3)) '(3 2 1 0))
58
59  (equal? (pl-append '(0 1) '(2 3) #f) '(0 1 2 3 . #f))
60  (equal? (pl-append '(0 1 . #f) '(2 3)) '(0 1 2 3))
61  (equal? (pl-append '(0 1) '(2 3) '(4 5)) '(0 1 2 3 4 5))
62
63  (= (pl-fold-right + 0 '(1 2 3 . #f)) 6)
64  (= (pl-fold-left + 0 '(1 2 3)) 6)
65
66  (equal? (pl-adjoin 2 '(0 1 2 3 . #f)) '(0 1 2 3 . #f))
67  (equal? (pl-adjoin 4 '(0 1 2 3 #f)) '(4 0 1 2 3 #f))
68  (equal? (pl-adjoin 1 '(0 1 2 3)) '(0 1 2 3))
69  (equal? (pl-adjoin 1 '()) '(1))
70
71  (equal? (pl-remove-dups '(0 1 2 3 2 . 2)) '(0 1 3 2 . 2))
72  (equal? (pl-remove-dups '(0 1 2 3 2 2)) '(0 1 3 2))
73  (equal? (pl-remove-dups '(0 1 2 1 3 2)) '(0 1 3 2))
74
75  (equal? (pl-flatten '(0 1 . 2)) '(0 1 2))
76  (equal? (pl-flatten '(0 (1 2))) '(0 1 2))
77  (equal? (pl-flatten '(0 (1 (2 . 3)))) '(0 1 2 3))
78  (equal? (pl-flatten '(0 (1 (2 . 3) 4))) '(0 1 2 3 4))
79  (equal? (pl-flatten '(0 (1 (2 . 3) 4))) '(0 1 2 3 4))
80  (equal? (pl-flatten '(0 (1 (2 . 3) 4 . #f))) '(0 1 2 3 4 #f))
81 
82  (equal? (pl-for ((x '(0 1 2 3 . #f))) (add1 x)) ; map
83    '(1 2 3 4 . #f))
84  (equal? (pl-for ((x '(0 1 2 3))) (add1 x)) ; map
85    '(1 2 3 4))
86  (equal? (pl-for ((x '(0 1 2 3 4 5 . #f) (odd? x))) x) ; filter
87    '(1 3 5 . #f))
88  (equal? (pl-for ((x '(0 1 2 3 4 5) (odd? x))) x) ; filter
89    '(1 3 5))
90  (equal? (pl-for ((n '(0 1 2 3 4 5) (positive? n) (even? n)))
91            (* 10 n))
92    '(20 40))
93  (equal? (pl-for ((c '(A B C))
94                   (k '(1 2 3 4)))
95            (list c k))
96    '((A 1) (A 2) (A 3) (A 4)
97      (B 1) (B 2) (B 3) (B 4)
98      (C 1) (C 2) (C 3) (C 4)))
99  (equal? (pl-for ((c '(A B C . #f)) (k '(1 2 3 4 . #t))) (list c k))
100    '((A 1) (A 2) (A 3) (A 4)
101      (B 1) (B 2) (B 3) (B 4)
102      (C 1) (C 2) (C 3) (C 4) . #f))
103  )
104 
105(compound-test (PSEUDOLISTS)
106  (pseudolists?)
107  )
Note: See TracBrowser for help on using the repository browser.