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

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