/[gcl]/gcl/ansi-tests/format-b.lsp
ViewVC logotype

Diff of /gcl/ansi-tests/format-b.lsp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pfdietz, Sat Nov 27 19:36:18 2004 UTC revision 1.3 by pfdietz, Mon Dec 6 14:04:21 2004 UTC
# Line 8  Line 8 
8  (compile-and-load "printer-aux.lsp")  (compile-and-load "printer-aux.lsp")
9    
10  (deftest format.b.1  (deftest format.b.1
11    (with-standard-io-syntax    (let ((fn (formatter "~b")))
12     (loop for x = (ash 1 (+ 2 (random 80)))      (with-standard-io-syntax
13           for i = (- (random (+ x x)) x)       (loop for x = (ash 1 (+ 2 (random 80)))
14           for s1 = (format nil "~B" i)             for i = (- (random (+ x x)) x)
15           for j = (let ((*read-base* 2)) (read-from-string s1))             for s1 = (format nil "~B" i)
16           repeat 1000             for s2 = (formatter-call-to-string fn i)
17           when (or (/= i j)             for j = (let ((*read-base* 2)) (read-from-string s1))
18                    (find #\+ s1)             repeat 1000
19                    (loop for c across s1 thereis (not (find c "-01"))))             when (or (not (string= s1 s2))
20           collect (list i s1 j)))                      (/= i j)
21                        (find #\+ s1)
22                        (loop for c across s1 thereis (not (find c "-01"))))
23               collect (list i s1 j s2))))
24    nil)    nil)
25    
26  (deftest format.b.2  (deftest format.b.2
27      (let ((fn (formatter "~@b")))
28        (with-standard-io-syntax
29         (loop for x = (ash 1 (+ 2 (random 80)))
30               for i = (- (random (+ x x)) x)
31               for s1 = (format nil "~@b" i)
32               for s2 = (formatter-call-to-string fn i)
33               for j = (let ((*read-base* 2)) (read-from-string s1))
34               repeat 1000
35               when (or (/= i j)
36                        (not (string= s1 s2))
37                        (loop for c across s1 thereis (not (find c "-+01"))))
38               collect (list i s1 j s2))))
39      nil)
40    
41    (deftest format.b.3
42    (with-standard-io-syntax    (with-standard-io-syntax
43     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
44             for mincol = (random 30)
45           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
46           for s1 = (format nil "~@b" i)           for s1 = (format nil "~b" i)
47           for j = (let ((*read-base* 2)) (read-from-string s1))           for fmt = (format nil "~~~db" mincol)
48             for s2 = (format nil fmt i)
49             for pos = (search s1 s2)
50           repeat 1000           repeat 1000
51           when (or (/= i j)           when (or (null pos)
52                    (loop for c across s1 thereis (not (find c "-+01"))))                    (and (> mincol (length s1))
53           collect (list i s1 j)))                         (or (/= (length s2) mincol)
54                               (not (eql (position #\Space s2 :test-not #'eql)
55                                         (- (length s2) (length s1)))))))
56             collect (list i mincol s1 s2 pos)))
57    nil)    nil)
58    
59  (deftest format.b.3  (deftest formatter.b.3
60    (with-standard-io-syntax    (with-standard-io-syntax
61     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
62           for mincol = (random 30)           for mincol = (random 30)
63           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
64           for s1 = (format nil "~b" i)           for s1 = (format nil "~b" i)
65           for s2 = (format nil (format nil "~~~db" mincol) i)           for fmt = (format nil "~~~db" mincol)
66             for fn = (eval `(formatter ,fmt))
67             for s2 = (formatter-call-to-string fn i)
68           for pos = (search s1 s2)           for pos = (search s1 s2)
69           repeat 1000           repeat 100
70           when (or (null pos)           when (or (null pos)
71                    (and (> mincol (length s1))                    (and (> mincol (length s1))
72                         (or (/= (length s2) mincol)                         (or (/= (length s2) mincol)
# Line 55  Line 81 
81           for mincol = (random 30)           for mincol = (random 30)
82           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
83           for s1 = (format nil "~@B" i)           for s1 = (format nil "~@B" i)
84           for s2 = (format nil (format nil "~~~d@b" mincol) i)           for fmt = (format nil "~~~d@b" mincol)
85             for s2 = (format nil fmt i)
86           for pos = (search s1 s2)           for pos = (search s1 s2)
87           repeat 1000           repeat 1000
88           when (or (null pos)           when (or (null pos)
# Line 67  Line 94 
94           collect (list i mincol s1 s2 pos)))           collect (list i mincol s1 s2 pos)))
95    nil)    nil)
96    
97  (deftest format.b.5  (deftest formatter.b.4
98    (with-standard-io-syntax    (with-standard-io-syntax
99     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
100           for mincol = (random 30)           for mincol = (random 30)
          for padchar = (random-from-seq +standard-chars+)  
101           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
102           for s1 = (format nil "~b" i)           for s1 = (format nil "~@B" i)
103           for s2 = (format nil (format nil "~~~d,'~c~c" mincol padchar           for fmt = (format nil "~~~d@b" mincol)
104                                        (random-from-seq "bB"))           for fn = (eval `(formatter ,fmt))
105                            i)           for s2 = (formatter-call-to-string fn i)
106           for pos = (search s1 s2)           for pos = (search s1 s2)
107           repeat 1000           repeat 100
108           when (or (null pos)           when (or (null pos)
109                      (and (>= i 0) (not (eql (elt s1 0) #\+)))
110                    (and (> mincol (length s1))                    (and (> mincol (length s1))
111                         (or (/= (length s2) mincol)                         (or (/= (length s2) mincol)
112                             (find padchar s2 :end (- (length s2) (length s1))                             (not (eql (position #\Space s2 :test-not #'eql)
113                                   :test-not #'eql))))                                       (- (length s2) (length s1)))))))
114           collect (list i mincol s1 s2 pos)))           collect (list i mincol s1 s2 pos)))
115    nil)    nil)
116    
117  (deftest format.b.6  (deftest format.b.5
118    (with-standard-io-syntax    (with-standard-io-syntax
119     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
120           for mincol = (random 30)           for mincol = (random 30)
121           for padchar = (random-from-seq +standard-chars+)           for padchar = (random-from-seq +standard-chars+)
122           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
123           for s1 = (format nil "~b" i)           for s1 = (format nil "~b" i)
124           for s2 = (format nil "~v,vb" mincol padchar i)           for fmt = (format nil "~~~d,'~c~c" mincol padchar
125                               (random-from-seq "bB"))
126             for s2 = (format nil fmt i)
127           for pos = (search s1 s2)           for pos = (search s1 s2)
128           repeat 1000           repeat 1000
129           when (or (null pos)           when (or (null pos)
# Line 105  Line 134 
134           collect (list i mincol s1 s2 pos)))           collect (list i mincol s1 s2 pos)))
135    nil)    nil)
136    
137  (deftest format.b.7  (deftest formatter.b.5
138    (with-standard-io-syntax    (with-standard-io-syntax
139     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
140           for mincol = (random 30)           for mincol = (random 30)
141           for padchar = (random-from-seq +standard-chars+)           for padchar = (random-from-seq +standard-chars+)
142           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
143           for s1 = (format nil "~@B" i)           for s1 = (format nil "~b" i)
144           for s2 = (format nil "~v,v@b" mincol padchar i)           for fmt = (format nil "~~~d,'~c~c" mincol padchar
145                               (random-from-seq "bB"))
146             for fn = (eval `(formatter ,fmt))
147             for s2 = (formatter-call-to-string fn i)
148           for pos = (search s1 s2)           for pos = (search s1 s2)
149           repeat 1000           repeat 100
150           when (or (null pos)           when (or (null pos)
                   (and (>= i 0) (not (eql (elt s1 0) #\+)))  
151                    (and (> mincol (length s1))                    (and (> mincol (length s1))
152                         (or (/= (length s2) mincol)                         (or (/= (length s2) mincol)
153                             (find padchar s2 :end (- (length s2) (length s1))                             (find padchar s2 :end (- (length s2) (length s1))
# Line 124  Line 155 
155           collect (list i mincol s1 s2 pos)))           collect (list i mincol s1 s2 pos)))
156    nil)    nil)
157    
158    (deftest format.b.6
159      (let ((fn (formatter "~v,vB")))
160        (with-standard-io-syntax
161         (loop for x = (ash 1 (+ 2 (random 80)))
162               for mincol = (random 30)
163               for padchar = (random-from-seq +standard-chars+)
164               for i = (- (random (+ x x)) x)
165               for s1 = (format nil "~b" i)
166               for s2 = (format nil "~v,vb" mincol padchar i)
167               for s3 = (formatter-call-to-string fn mincol padchar i)
168               for pos = (search s1 s2)
169               repeat 1000
170               when (or (null pos)
171                        (not (string= s2 s3))
172                        (and (> mincol (length s1))
173                             (or (/= (length s2) mincol)
174                                 (find padchar s2 :end (- (length s2) (length s1))
175                                       :test-not #'eql))))
176               collect (list i mincol s1 s2 s3 pos))))
177      nil)
178    
179    (deftest format.b.7
180      (let ((fn (formatter "~v,v@B")))
181        (with-standard-io-syntax
182         (loop for x = (ash 1 (+ 2 (random 80)))
183               for mincol = (random 30)
184               for padchar = (random-from-seq +standard-chars+)
185               for i = (- (random (+ x x)) x)
186               for s1 = (format nil "~@B" i)
187               for s2 = (format nil "~v,v@b" mincol padchar i)
188               for s3 = (formatter-call-to-string fn mincol padchar i)
189               for pos = (search s1 s2)
190               repeat 1000
191               when (or (null pos)
192                        (not (string= s2 s3))
193                        (and (>= i 0) (not (eql (elt s1 0) #\+)))
194                        (and (> mincol (length s1))
195                             (or (/= (length s2) mincol)
196                                 (find padchar s2 :end (- (length s2) (length s1))
197                                       :test-not #'eql))))
198               collect (list i mincol s1 s2 s3 pos))))
199      nil)
200    
201  ;;; Comma tests  ;;; Comma tests
202    
203  (deftest format.b.8  (deftest format.b.8
204    (loop for i from -7 to 7    (let ((fn (formatter "~:B")))
205          for s1 = (format nil "~b" i)      (loop for i from -7 to 7
206          for s2 = (format nil "~:b" i)            for s1 = (format nil "~b" i)
207          unless (string= s1 s2)            for s2 = (format nil "~:b" i)
208          collect (list i s1 s2))            for s3 = (formatter-call-to-string fn i)
209              unless (and (string= s1 s2) (string= s2 s3))
210              collect (list i s1 s2 s3)))
211    nil)    nil)
212    
213  (deftest format.b.9  (deftest format.b.9
214    (with-standard-io-syntax    (let ((fn (formatter "~:b")))
215     (loop for x = (ash 1 (+ 2 (random 80)))      (with-standard-io-syntax
216           for i = (- (random (+ x x)) x)       (loop for x = (ash 1 (+ 2 (random 80)))
217           for commachar = #\,             for i = (- (random (+ x x)) x)
218           for s1 = (format nil "~b" i)             for commachar = #\,
219           for s2 = (format nil "~:B" i)             for s1 = (format nil "~b" i)
220           repeat 1000             for s2 = (format nil "~:B" i)
221           unless (and (string= s1 (remove commachar s2))             for s3 = (formatter-call-to-string fn i)
222                       (not (eql (elt s2 0) commachar))             repeat 1000
223                       (or (>= i 0) (not (eql (elt s2 1) commachar)))             unless (and (string= s1 (remove commachar s2))
224                       (let ((len (length s2))                         (string= s2 s3)
225                             (ci+1 4))                         (not (eql (elt s2 0) commachar))
226                         (loop for i from (if (< i 0) 2 1) below len                         (or (>= i 0) (not (eql (elt s2 1) commachar)))
227                               always (if (= (mod (- len i) ci+1) 0)                         (let ((len (length s2))
228                                          (eql (elt s2 i) commachar)                               (ci+1 4))
229                                        (find (elt s2 i) "01")))))                           (loop for i from (if (< i 0) 2 1) below len
230           collect (list x i commachar s1 s2)))                                 always (if (= (mod (- len i) ci+1) 0)
231                                              (eql (elt s2 i) commachar)
232                                            (find (elt s2 i) "01")))))
233               collect (list x i commachar s1 s2 s3))))
234    nil)    nil)
235    
236  (deftest format.b.10  (deftest format.b.10
237      (let ((fn (formatter "~,,v:B")))
238        (with-standard-io-syntax
239         (loop for x = (ash 1 (+ 2 (random 80)))
240               for i = (- (random (+ x x)) x)
241               for commachar = (random-from-seq +standard-chars+)
242               for s1 = (format nil "~b" i)
243               for s2 = (format nil "~,,v:b" commachar i)
244               for s3 = (formatter-call-to-string fn commachar i)
245               repeat 1000
246               unless (and
247                       (eql (elt s1 0) (elt s2 0))
248                       (string= s2 s3)
249                       (if (< i 0) (eql (elt s1 1) (elt s2 1)) t)
250                       (let ((len (length s2))
251                             (ci+1 4)
252                             (j (if (< i 0) 1 0)))
253                         (loop for i from (if (< i 0) 2 1) below len
254                               always (if (= (mod (- len i) ci+1) 0)
255                                          (eql (elt s2 i) commachar)
256                                     (eql (elt s1 (incf j)) (elt s2 i))))))
257               collect (list x i commachar s1 s2 s3))))
258      nil)
259    
260    (deftest format.b.11
261    (with-standard-io-syntax    (with-standard-io-syntax
262     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
263           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
264           for commachar = (random-from-seq +standard-chars+)           for commachar = (random-from-seq +standard-chars+)
265           for s1 = (format nil "~b" i)           for s1 = (format nil "~b" i)
266           for s2 = (format nil "~,,v:b" commachar i)           for fmt = (format nil "~~,,'~c:~c" commachar (random-from-seq "bB"))
267             for s2 = (format nil fmt i)
268           repeat 1000           repeat 1000
269           unless (and           unless (and
270                   (eql (elt s1 0) (elt s2 0))                   (eql (elt s1 0) (elt s2 0))
# Line 175  Line 279 
279           collect (list x i commachar s1 s2)))           collect (list x i commachar s1 s2)))
280    nil)    nil)
281    
282  (deftest format.b.11  (deftest formatter.b.11
283    (with-standard-io-syntax    (with-standard-io-syntax
284     (loop for x = (ash 1 (+ 2 (random 80)))     (loop for x = (ash 1 (+ 2 (random 80)))
285           for i = (- (random (+ x x)) x)           for i = (- (random (+ x x)) x)
286           for commachar = (random-from-seq +standard-chars+)           for commachar = (random-from-seq +standard-chars+)
287           for s1 = (format nil "~b" i)           for s1 = (format nil "~b" i)
288           for s2 = (format nil (format nil "~~,,'~c:~c" commachar           for fmt = (format nil "~~,,'~c:~c" commachar (random-from-seq "bB"))
289                                        (random-from-seq "bB"))           for fn = (eval `(formatter ,fmt))
290                            i)           for s2 = (formatter-call-to-string fn i)
291           repeat 1000           repeat 100
292           unless (and           unless (and
293                   (eql (elt s1 0) (elt s2 0))                   (eql (elt s1 0) (elt s2 0))
294                   (if (< i 0) (eql (elt s1 1) (elt s2 1)) t)                   (if (< i 0) (eql (elt s1 1) (elt s2 1)) t)
# Line 199  Line 303 
303    nil)    nil)
304    
305  (deftest format.b.12  (deftest format.b.12
306    (with-standard-io-syntax    (let ((fn (formatter "~,,V,V:b")))
307     (loop for x = (ash 1 (+ 2 (random 80)))      (with-standard-io-syntax
308           for i = (- (random (+ x x)) x)       (loop for x = (ash 1 (+ 2 (random 80)))
309           for commachar = (random-from-seq +standard-chars+)             for i = (- (random (+ x x)) x)
310           for commaint = (1+ (random 20))             for commachar = (random-from-seq +standard-chars+)
311           for s1 = (format nil "~b" i)             for commaint = (1+ (random 20))
312           for s2 = (format nil "~,,v,v:B" commachar commaint i)             for s1 = (format nil "~b" i)
313           repeat 1000             for s2 = (format nil "~,,v,v:B" commachar commaint i)
314           unless (and             for s3 = (formatter-call-to-string fn commachar commaint i)
315                   (eql (elt s1 0) (elt s2 0))             repeat 1000
316                   (if (< i 0) (eql (elt s1 1) (elt s2 1)) t)             unless (and
317                   (let ((len (length s2))                     (eql (elt s1 0) (elt s2 0))
318                         (ci+1 (1+ commaint))                     (string= s2 s3)
319                         (j (if (< i 0) 1 0)))                     (if (< i 0) (eql (elt s1 1) (elt s2 1)) t)
320                     (loop for i from (if (< i 0) 2 1) below len                     (let ((len (length s2))
321                           always (if (= (mod (- len i) ci+1) 0)                           (ci+1 (1+ commaint))
322                                      (eql (elt s2 i) commachar)                           (j (if (< i 0) 1 0)))
323                                    (eql (elt s1 (incf j)) (elt s2 i))))))                       (loop for i from (if (< i 0) 2 1) below len
324           collect (list x i commachar s1 s2)))                             always (if (= (mod (- len i) ci+1) 0)
325                                          (eql (elt s2 i) commachar)
326                                        (eql (elt s1 (incf j)) (elt s2 i))))))
327               collect (list x i commachar s1 s2 s3))))
328    nil)    nil)
329    
330  (deftest format.b.13  (deftest format.b.13
331    (with-standard-io-syntax    (let ((fn (formatter "~,,V,V@:B")))
332     (loop for x = (ash 1 (+ 2 (random 80)))      (with-standard-io-syntax
333           for i = (- (random (+ x x)) x)       (loop for x = (ash 1 (+ 2 (random 80)))
334           for commachar = (random-from-seq +standard-chars+)             for i = (- (random (+ x x)) x)
335           for commaint = (1+ (random 20))             for commachar = (random-from-seq +standard-chars+)
336           for s1 = (format nil "~@B" i)             for commaint = (1+ (random 20))
337           for s2 = (format nil "~,,v,v:@b" commachar commaint i)             for s1 = (format nil "~@B" i)
338           repeat 1000             for s2 = (format nil "~,,v,v:@b" commachar commaint i)
339           unless (and             for s3 = (formatter-call-to-string fn commachar commaint i)
340                   (eql (elt s1 0) (elt s2 0))             repeat 1000
341                   (eql (elt s1 1) (elt s2 1))             unless (and
342                   (let ((len (length s2))                     (string= s2 s3)
343                         (ci+1 (1+ commaint))                     (eql (elt s1 0) (elt s2 0))
344                         (j 1))                     (eql (elt s1 1) (elt s2 1))
345                     (loop for i from 2 below len                     (let ((len (length s2))
346                           always (if (= (mod (- len i) ci+1) 0)                           (ci+1 (1+ commaint))
347                                      (eql (elt s2 i) commachar)                           (j 1))
348                                    (eql (elt s1 (incf j)) (elt s2 i))))))                       (loop for i from 2 below len
349           collect (list x i commachar s1 s2)))                             always (if (= (mod (- len i) ci+1) 0)
350                                          (eql (elt s2 i) commachar)
351                                        (eql (elt s1 (incf j)) (elt s2 i))))))
352               collect (list x i commachar s1 s2 s3))))
353    nil)    nil)
354    
355  ;;; NIL arguments  ;;; NIL arguments
# Line 259  Line 369 
369  ;;; When the argument is not an integer, print as if using ~A and base 10  ;;; When the argument is not an integer, print as if using ~A and base 10
370    
371  (deftest format.b.18  (deftest format.b.18
372    (loop for x in *mini-universe*    (let ((fn (formatter "~b")))
373          for s1 = (format nil "~b" x)      (loop for x in *mini-universe*
374          for s2 = (let ((*print-base* 2)) (format nil "~A" x))            for s1 = (format nil "~b" x)
375          unless (or (integerp x) (string= s1 s2))            for s2 = (let ((*print-base* 2)) (format nil "~A" x))
376          collect (list x s1 s2))            for s3 = (formatter-call-to-string fn x)
377              unless (or (integerp x) (and (string= s1 s2) (string= s1 s3)))
378              collect (list x s1 s2 s3)))
379    nil)    nil)
380    
381  (deftest format.b.19  (deftest format.b.19
382    (loop for x in *mini-universe*    (let ((fn (formatter "~:b")))
383          for s1 = (format nil "~:B" x)      (loop for x in *mini-universe*
384          for s2 = (let ((*print-base* 2)) (format nil "~A" x))            for s1 = (format nil "~:B" x)
385          unless (or (integerp x) (string= s1 s2))            for s2 = (let ((*print-base* 2)) (format nil "~A" x))
386          collect (list x s1 s2))            for s3 = (formatter-call-to-string fn x)
387              unless (or (integerp x) (and (string= s1 s2) (string= s1 s3)))
388              collect (list x s1 s2 s3)))
389    nil)    nil)
390    
391  (deftest format.b.20  (deftest format.b.20
392    (loop for x in *mini-universe*    (let ((fn (formatter "~@b")))
393          for s1 = (format nil "~@b" x)      (loop for x in *mini-universe*
394          for s2 = (let ((*print-base* 2)) (format nil "~A" x))            for s1 = (format nil "~@b" x)
395          unless (or (integerp x) (string= s1 s2))            for s2 = (let ((*print-base* 2)) (format nil "~A" x))
396          collect (list x s1 s2))            for s3 = (formatter-call-to-string fn x)
397              unless (or (integerp x) (and (string= s1 s2) (string= s1 s3)))
398              collect (list x s1 s2 s3)))
399    nil)    nil)
400    
401  (deftest format.b.21  (deftest format.b.21
402    (loop for x in *mini-universe*    (let ((fn (formatter "~:@b")))
403          for s1 = (format nil "~@:B" x)      (loop for x in *mini-universe*
404          for s2 = (let ((*print-base* 2)) (format nil "~A" x))            for s1 = (format nil "~@:B" x)
405          unless (or (integerp x) (string= s1 s2))            for s2 = (let ((*print-base* 2)) (format nil "~A" x))
406          collect (list x s1 s2))            for s3 = (formatter-call-to-string fn x)
407              unless (or (integerp x) (and (string= s1 s2) (string= s1 s3)))
408              collect (list x s1 s2 s3)))
409    nil)    nil)
410    
411  ;;; Must add tests for non-integers when the parameters  ;;; Must add tests for non-integers when the parameters
# Line 300  Line 418 
418  (deftest format.b.22  (deftest format.b.22
419    (apply    (apply
420     #'values     #'values
421     (loop for i from 0 to 10     (let ((fn (formatter "~#B"))
422           for args = (make-list i)           (bv #b11001))
423           for s = (apply #'format nil "~#b" #b11001 args)       (loop for i from 0 to 10
424           collect s))             for args = (make-list i)
425               for s = (apply #'format nil "~#b" bv args)
426               for s2 = (with-output-to-string
427                          (stream)
428                          (assert (equal (apply fn stream bv args) args)))
429               do (assert (string= s s2))
430               collect s)))
431    "11001"    "11001"
432    "11001"    "11001"
433    "11001"    "11001"
# Line 319  Line 443 
443  (deftest format.b.23  (deftest format.b.23
444    (apply    (apply
445     #'values     #'values
446     (loop for i from 0 to 10     (let ((fn (formatter "~,,,#:b"))
447             (bv #b1100100010))
448         (loop for i from 0 to 10
449           for args = (make-list i)           for args = (make-list i)
450           for s = (apply #'format nil "~,,,#:B" #b1100100010 args)           for s = (apply #'format nil "~,,,#:B" bv args)
451           collect s))           for s2 = (with-output-to-string
452                          (stream)
453                          (assert (equal (apply fn stream bv args) args)))
454               do (assert (string= s s2))
455               collect s)))
456    "1,1,0,0,1,0,0,0,1,0"    "1,1,0,0,1,0,0,0,1,0"
457    "11,00,10,00,10"    "11,00,10,00,10"
458    "1,100,100,010"    "1,100,100,010"
# Line 338  Line 468 
468  (deftest format.b.24  (deftest format.b.24
469    (apply    (apply
470     #'values     #'values
471     (loop for i from 0 to 10     (let ((fn (formatter "~,,,#@:B"))
472           for args = (make-list i)           (bv #b1100100010))
473           for s = (apply #'format nil "~,,,#@:B" #b1100100010 args)       (loop for i from 0 to 10
474           collect s))             for args = (make-list i)
475               for s = (apply #'format nil "~,,,#@:B" bv args)
476               for s2 = (with-output-to-string
477                          (stream)
478                          (assert (equal (apply fn stream bv args) args)))
479               do (assert (string= s s2))
480               collect s)))
481    "+1,1,0,0,1,0,0,0,1,0"    "+1,1,0,0,1,0,0,0,1,0"
482    "+11,00,10,00,10"    "+11,00,10,00,10"
483    "+1,100,100,010"    "+1,100,100,010"
# Line 372  Line 508 
508  ;;; Randomized test  ;;; Randomized test
509    
510  (deftest format.b.30  (deftest format.b.30
511    (loop    (let ((fn (formatter "~V,V,V,VB")))
512     for mincol = (and (coin) (random 50))      (loop
513     for padchar = (and (coin)       for mincol = (and (coin) (random 50))
514                        (random-from-seq +standard-chars+))       for padchar = (and (coin)
    for commachar = (and (coin)  
515                          (random-from-seq +standard-chars+))                          (random-from-seq +standard-chars+))
516     for commaint = (and (coin) (1+ (random 10)))       for commachar = (and (coin)
517     for k = (ash 1 (+ 2 (random 30)))                            (random-from-seq +standard-chars+))
518     for x = (- (random (+ k k)) k)       for commaint = (and (coin) (1+ (random 10)))
519     for fmt = (concatenate       for k = (ash 1 (+ 2 (random 30)))
520                'string       for x = (- (random (+ k k)) k)
521                (if mincol (format nil "~~~d," mincol) "~,")       for fmt = (concatenate
522                (if padchar (format nil "'~c," padchar) ",")                  'string
523                (if commachar (format nil "'~c," commachar) ",")                  (if mincol (format nil "~~~d," mincol) "~,")
524                (if commaint (format nil "~db" commaint) "b"))                  (if padchar (format nil "'~c," padchar) ",")
525     for s1 = (format nil fmt x)                  (if commachar (format nil "'~c," commachar) ",")
526     for s2 = (format nil "~v,v,v,vb" mincol padchar commachar commaint x)                  (if commaint (format nil "~db" commaint) "b"))
527     repeat 2000       for s1 = (format nil fmt x)
528     unless (string= s1 s2)       for s2 = (format nil "~v,v,v,vb" mincol padchar commachar commaint x)
529     collect (list mincol padchar commachar commaint fmt x s1 s2))       for s3 = (formatter-call-to-string fn mincol padchar commachar commaint x)
530         repeat 2000
531         unless (and (string= s1 s2) (string= s2 s3))
532         collect (list mincol padchar commachar commaint fmt x s1 s2)))
533    nil)    nil)

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26