source: project/release/4/byte-blob/trunk/tests/run.scm @ 30529

Last change on this file since 30529 was 30529, checked in by Ivan Raikov, 8 years ago

byte-blob: remove temporary file created by unit tests

File size: 7.0 KB
Line 
1
2(use byte-blob test posix srfi-4)
3
4
5(define a (byte-blob-cons 1 (byte-blob-cons 2 (byte-blob-empty))))
6(define b (byte-blob-cons 3 (byte-blob-cons 4 (byte-blob-empty))))
7(define c (list->byte-blob (list 7 8 9)))
8(define d (byte-blob-replicate 10 6))
9   
10
11
12(test-group "byte-blob test"
13
14            (test (sprintf "string <-> byte-blob")
15                  "est"
16                  (byte-blob->string (byte-blob-cdr (string->byte-blob "test"))))
17
18            (test (sprintf "s8vector <-> byte-blob")
19                  (s8vector -42)
20                  (byte-blob->s8vector (s8vector->byte-blob (s8vector -42))))
21
22            (test (sprintf "f32vector <-> byte-blob")
23                  (f32vector 1.02 3.04 5.06)
24                  (byte-blob->f32vector (f32vector->byte-blob (f32vector 1.02 3.04 5.06))))
25
26            (test (sprintf "byte-blob-replicate")
27                  '(6 6 6 6 6 6 6 6 6 6)
28                  (byte-blob->list d))
29
30            (test (sprintf "byte-blob-cons" ) 
31                   '(1 2) (byte-blob->list a))
32
33            (test (sprintf "byte-blob-car" ) 
34                   1 (byte-blob-car a))
35
36            (test (sprintf "byte-blob-cdr" ) 
37                   '(2) (byte-blob->list (byte-blob-cdr a)))
38
39            (test (sprintf "byte-blob-ref" ) 
40                   1 (byte-blob-ref (byte-blob-cons 5 a) 1))
41
42            (test (sprintf "byte-blob-uref" ) 
43                   (fxand 255 -5)
44                   (byte-blob-uref (byte-blob-cons -5 a) 0))
45
46            (test (sprintf "byte-blob-append" ) 
47                   '(1 2 3 4 7 8 9) (byte-blob->list (byte-blob-append a b c)))
48
49            (test (sprintf "byte-blob-take" ) 
50                   '(1 2 ) (byte-blob->list (byte-blob-take (byte-blob-append a b c) 2)))
51
52            (test (sprintf "byte-blob-drop" ) 
53                   '(3 4 7 8 9) (byte-blob->list (byte-blob-drop (byte-blob-append a b c) 2)))
54
55            (test (sprintf "byte-blob-drop" ) 
56                   '() (byte-blob->list (byte-blob-drop (list->byte-blob '(1)) 1)))
57
58            (test (sprintf "byte-blob-span" ) 
59                   '(3 4 7) (byte-blob->list (byte-blob-span (byte-blob-append a b c) 2 5)))
60
61            (test (sprintf "byte-blob-map" ) 
62                   '(10 2 4 6 8) 
63                   (byte-blob->list 
64                    (byte-blob-map (lambda (x) (* 2 x)) 
65                                   (byte-blob-cons 5  (byte-blob-append a b)))))
66
67            (test (sprintf "byte-blob-reverse" ) 
68                   '(10 8 6 4 2) 
69                   (byte-blob->list
70                    (byte-blob-map
71                     (lambda (x) (* 2 x)) 
72                     (byte-blob-cons 
73                      5 (byte-blob-reverse (byte-blob-append a b))))))
74
75            (test (sprintf "byte-blob-intersperse" ) 
76                   '(10 9 8 9 6 9 4 9 2) 
77                   (byte-blob->list
78                    (byte-blob-intersperse 
79                     (byte-blob-map
80                      (lambda (x) (* 2 x)) 
81                      (byte-blob-cons 
82                       5 (byte-blob-reverse (byte-blob-append a b)))) 9)))
83
84            (test (sprintf "byte-blob-find" ) 
85                   `(,(list->byte-blob '(1)) ())
86                   (byte-blob-find 
87                    (list->byte-blob (list 9 10))
88                    (list->byte-blob (list 1))))
89
90            (test (sprintf "byte-blob-find" ) 
91                   `(,(list->byte-blob '(9 10)) ())
92                   (byte-blob-find 
93                    (list->byte-blob (list 1))
94                    (list->byte-blob (list 9 10))
95                    ))
96
97            (test (sprintf "byte-blob-find" ) 
98                   '((10) (((9 8) (9 8 9 6 9 4 9 2)) 
99                           ((9 6) (9 6 9 4 9 2)) 
100                           ((9 4) (9 4 9 2)) 
101                           ((9 2) (9 2))))
102                   (let ((r (byte-blob-find 
103                             (list->byte-blob (list 9))
104                             (byte-blob-intersperse 
105                              (byte-blob-map
106                               (lambda (x) (* 2 x)) 
107                               (byte-blob-cons 
108                                5 (byte-blob-reverse (byte-blob-append a b)))) 9))))
109                      (list (byte-blob->list (car r))
110                            (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
111
112            (test (sprintf "byte-blob-find" ) 
113                   '((10 9 8) (((9 6 9 4 9 2) (9 6 9 4 9 2))))
114                   (let ((r (byte-blob-find 
115                             (list->byte-blob (list 9 6))
116                             (byte-blob-intersperse 
117                              (byte-blob-map
118                               (lambda (x) (* 2 x)) 
119                               (byte-blob-cons 
120                                5 (byte-blob-reverse (byte-blob-append a b)))) 9))))
121                      (list (byte-blob->list (car r))
122                            (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
123
124            ;; test case contributed by dthedens (Trac issue #1037)
125            (test (sprintf "byte-blob-find" ) 
126                   `((0) (((1 31 3) (1 31 3))))
127                   (let ((r (byte-blob-find 
128                             (list->byte-blob (list 1 31))
129                             (list->byte-blob (list 0 1 31 3)))))
130                     (list (byte-blob->list (car r))
131                           (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
132
133           ;; test case contributed by dthedens (Trac issue #1037)
134            (test (sprintf "byte-blob-find" )
135                   `((0) (((1 63 3) (1 63 3))))
136                   (let ((r (byte-blob-find
137                             (list->byte-blob (list 1 63))
138                             (list->byte-blob (list 0 1 63 3)))))
139                     (list (byte-blob->list (car r))
140                           (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
141
142            ;; test case contributed by dthedens (Trac issue #1038)
143            (test (sprintf "byte-blob-find" ) 
144                   `((0 1) (((2 3) (2 3))))
145                   (let ((r (byte-blob-find 
146                             (list->byte-blob (list 2))
147                             (list->byte-blob (list 0 1 2 3)))))
148                     (list (byte-blob->list (car r))
149                           (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
150
151            ;; test case contributed by dthedens (Trac issue #1038)
152            (test (sprintf "byte-blob-find" ) 
153                   `((0 1) (((2 3) (2 3))))
154                   (let ((r (byte-blob-find 
155                             (list->byte-blob (list 2 3))
156                             (list->byte-blob (list 0 1 2 3)))))
157                     (list (byte-blob->list (car r))
158                           (map (lambda (x) (map byte-blob->list x)) (cadr r)))))
159
160
161            (test (sprintf "byte-blob-fold-left" ) 
162                   66
163                   (byte-blob-fold-left
164                    + 0
165                    (byte-blob-intersperse 
166                     (byte-blob-map
167                      (lambda (x) (* 2 x)) 
168                      (byte-blob-cons 
169                       5 (byte-blob-reverse (byte-blob-append a b)))) 9)))
170
171            (test (sprintf "byte-blob-fold-right" ) 
172                   -6
173                   (byte-blob-fold-left
174                    - 0
175                    (byte-blob-intersperse 
176                     (byte-blob-map
177                      (lambda (x) (* 2 x)) 
178                      (byte-blob-cons 
179                       5 (byte-blob-reverse (byte-blob-append a b)))) 9)))
180
181            (let* ((out-port+path
182                    (let-values (((fd temp-path) (file-mkstemp "/tmp/byte-blob-test.XXXXXX")))
183                                (let ((temp-port (open-output-file* fd)))
184                                  (cons temp-port temp-path))))
185                   (out-port (car out-port+path))
186                   (temp-path (cdr out-port+path)))
187
188              (test-assert
189               (sprintf "byte-blob-write" ) 
190               (byte-blob-write 
191                out-port 
192                (byte-blob-intersperse 
193                 (byte-blob-map
194                  (lambda (x) (* 2 x)) 
195                  (byte-blob-cons 
196                   5 (byte-blob-reverse (byte-blob-append a b)))) 9)))
197
198              (close-output-port out-port)
199
200              (let ((in-port (open-input-file temp-path)))
201
202                (test
203                 (sprintf "byte-blob-read" ) 
204                 '(10 9 8 9 6 9 4 9 2) 
205                 (byte-blob->list
206                  (byte-blob-read in-port 9 )))
207             
208                (close-input-port in-port))
209
210              (test 
211               (sprintf "file->byte-blob")
212               '(10 9 8 9 6 9 4 9 2) 
213               (byte-blob->list
214                (file->byte-blob temp-path)))
215
216              (delete-file temp-path)
217               
218              )
219)
220
221           
222(test-exit)
Note: See TracBrowser for help on using the repository browser.