24 |
collect (list i x s1 s2))) |
collect (list i x s1 s2))) |
25 |
nil) |
nil) |
26 |
|
|
27 |
|
(deftest formatter.r.1 |
28 |
|
(loop |
29 |
|
for i from 2 to 36 |
30 |
|
for s = (format nil "~~~dR" i) |
31 |
|
for fn = (eval `(formatter ,s)) |
32 |
|
nconc |
33 |
|
(loop for x = (let ((bound (ash 1 (+ 2 (random 40))))) |
34 |
|
(- (random (* bound 2)) bound)) |
35 |
|
for s1 = (formatter-call-to-string fn x) |
36 |
|
for s2 = (with-standard-io-syntax |
37 |
|
(write-to-string x :base i :readably nil)) |
38 |
|
repeat 100 |
39 |
|
unless (string= s1 s2) |
40 |
|
collect (list i x s1 s2))) |
41 |
|
nil) |
42 |
|
|
43 |
(def-format-test format.r.2 |
(def-format-test format.r.2 |
44 |
"~2r" (14) "1110") |
"~2r" (14) "1110") |
45 |
|
|
63 |
collect (list base mincol s))) |
collect (list base mincol s))) |
64 |
nil) |
nil) |
65 |
|
|
66 |
|
(deftest formatter.r.4 |
67 |
|
(loop for base from 2 to 36 |
68 |
|
nconc |
69 |
|
(loop for mincol from 0 to 20 |
70 |
|
for fmt = (format nil "~~~D,~DR" base mincol) |
71 |
|
for fn = (eval `(formatter ,fmt)) |
72 |
|
for s = (formatter-call-to-string fn base) |
73 |
|
unless (if (<= mincol 2) |
74 |
|
(string= s "10") |
75 |
|
(string= (concatenate |
76 |
|
'string |
77 |
|
(make-string (- mincol 2) |
78 |
|
:initial-element #\Space) |
79 |
|
"10") |
80 |
|
s)) |
81 |
|
collect (list base mincol s))) |
82 |
|
nil) |
83 |
|
|
84 |
(deftest format.r.5 |
(deftest format.r.5 |
85 |
(loop for base from 2 to 36 |
(loop for base from 2 to 36 |
86 |
nconc |
nconc |
98 |
collect (list base mincol s))) |
collect (list base mincol s))) |
99 |
nil) |
nil) |
100 |
|
|
101 |
|
(deftest formatter.r.5 |
102 |
|
(loop for base from 2 to 36 |
103 |
|
nconc |
104 |
|
(loop for mincol from 0 to 20 |
105 |
|
for fmt = (format nil "~~~D,~D,'*r" base mincol) |
106 |
|
for fn = (eval `(formatter ,fmt)) |
107 |
|
for s = (formatter-call-to-string fn base) |
108 |
|
unless (if (<= mincol 2) |
109 |
|
(string= s "10") |
110 |
|
(string= (concatenate |
111 |
|
'string |
112 |
|
(make-string (- mincol 2) |
113 |
|
:initial-element #\*) |
114 |
|
"10") |
115 |
|
s)) |
116 |
|
collect (list base mincol s))) |
117 |
|
nil) |
118 |
|
|
119 |
(deftest format.r.6 |
(deftest format.r.6 |
120 |
(loop for base from 2 to 36 |
(loop for base from 2 to 36 |
121 |
for s = (format nil "~vr" base (1+ base)) |
for s = (format nil "~vr" base (1+ base)) |
123 |
collect (list base s)) |
collect (list base s)) |
124 |
nil) |
nil) |
125 |
|
|
126 |
|
(deftest formatter.r.6 |
127 |
|
(let ((fn (formatter "~vr"))) |
128 |
|
(loop for base from 2 to 36 |
129 |
|
for s = (formatter-call-to-string fn base (1+ base)) |
130 |
|
unless (string= s "11") |
131 |
|
collect (list base s))) |
132 |
|
nil) |
133 |
|
|
134 |
(defparameter *english-number-names* |
(defparameter *english-number-names* |
135 |
'("zero" |
'("zero" |
136 |
"one" "two" "three" "four" "five" "six" "seven" "eight" "nine" "ten" |
"one" "two" "three" "four" "five" "six" "seven" "eight" "nine" "ten" |
161 |
collect (list i s1 s2)) |
collect (list i s1 s2)) |
162 |
nil) |
nil) |
163 |
|
|
164 |
|
(deftest formatter.r.7 |
165 |
|
(let ((fn (formatter "~r"))) |
166 |
|
(loop for i from 0 to 100 |
167 |
|
for s1 = (formatter-call-to-string fn i) |
168 |
|
for s2 in *english-number-names* |
169 |
|
unless (string= s1 s2) |
170 |
|
collect (list i s1 s2))) |
171 |
|
nil) |
172 |
|
|
173 |
(deftest format.r.7a |
(deftest format.r.7a |
174 |
(loop for i from 1 to 100 |
(loop for i from 1 to 100 |
175 |
for s1 = (format nil "~r" (- i)) |
for s1 = (format nil "~r" (- i)) |
192 |
(format nil "~10r" 123))) |
(format nil "~10r" 123))) |
193 |
"123") |
"123") |
194 |
|
|
195 |
|
(deftest formatter.r.10 |
196 |
|
(let ((fn (formatter "~10r"))) |
197 |
|
(with-standard-io-syntax |
198 |
|
(let ((*print-radix* t)) |
199 |
|
(values |
200 |
|
(format nil fn 123) |
201 |
|
(formatter-call-to-string fn 123))))) |
202 |
|
"123" |
203 |
|
"123") |
204 |
|
|
205 |
(def-format-test format.r.11 |
(def-format-test format.r.11 |
206 |
"~8@R" (65) "+101") |
"~8@R" (65) "+101") |
207 |
|
|
279 |
collect (list i s1 s2)) |
collect (list i s1 s2)) |
280 |
nil) |
nil) |
281 |
|
|
282 |
|
(deftest formatter.r.18 |
283 |
|
(let ((fn (formatter "~:r"))) |
284 |
|
(loop for i from 0 to 100 |
285 |
|
for s1 = (formatter-call-to-string fn i) |
286 |
|
for s2 in *english-ordinal-names* |
287 |
|
unless (string= s1 s2) |
288 |
|
collect (list i s1 s2))) |
289 |
|
nil) |
290 |
|
|
291 |
(deftest format.r.18a |
(deftest format.r.18a |
292 |
(loop for i from 1 to 100 |
(loop for i from 1 to 100 |
293 |
for s1 = (format nil "~:r" (- i)) |
for s1 = (format nil "~:r" (- i)) |
306 |
collect (list i s1 s2)) |
collect (list i s1 s2)) |
307 |
nil) |
nil) |
308 |
|
|
309 |
|
(deftest formatter.r.19 |
310 |
|
(let ((fn (formatter "~@r"))) |
311 |
|
(loop for i from 1 |
312 |
|
for s1 in *roman-numerals* |
313 |
|
for s2 = (formatter-call-to-string fn i) |
314 |
|
unless (string= s1 s2) |
315 |
|
collect (list i s1 s2))) |
316 |
|
nil) |
317 |
|
|
318 |
;;; Old roman numerals |
;;; Old roman numerals |
319 |
|
|
320 |
(defun old-roman-numeral (x) |
(defun old-roman-numeral (x) |
349 |
collect (list i s1 s2)) |
collect (list i s1 s2)) |
350 |
nil) |
nil) |
351 |
|
|
352 |
|
(deftest formatter.r.20 |
353 |
|
(let ((fn (formatter "~@:R"))) |
354 |
|
(loop for i from 1 to 4999 |
355 |
|
for s1 = (formatter-call-to-string fn i) |
356 |
|
for s2 = (old-roman-numeral i) |
357 |
|
unless (string= s1 s2) |
358 |
|
collect (list i s1 s2))) |
359 |
|
nil) |
360 |
|
|
361 |
(deftest format.r.21 |
(deftest format.r.21 |
362 |
(loop for i from 1 to 4999 |
(loop for i from 1 to 4999 |
363 |
for s1 = (format nil "~:@r" i) |
for s1 = (format nil "~:@r" i) |
386 |
collect (list i s)) |
collect (list i s)) |
387 |
nil) |
nil) |
388 |
|
|
389 |
|
(deftest formatter.r.25 |
390 |
|
(let ((fn (formatter "~10,vr"))) |
391 |
|
(loop for i from 0 to 5 |
392 |
|
for s = (formatter-call-to-string fn i 12345) |
393 |
|
unless (string= s "12345") |
394 |
|
collect (list i s))) |
395 |
|
nil) |
396 |
|
|
397 |
(def-format-test format.r.26 |
(def-format-test format.r.26 |
398 |
"~10,#r" (12345 nil nil nil nil nil) " 12345" 5) |
"~10,#r" (12345 nil nil nil nil nil) " 12345" 5) |
399 |
|
|
438 |
;;; Randomized test |
;;; Randomized test |
439 |
|
|
440 |
(deftest format.r.39 |
(deftest format.r.39 |
441 |
(loop |
(let ((fn (formatter "~v,v,v,v,vr"))) |
442 |
for radix = (+ 2 (random 35)) |
(loop |
443 |
for mincol = (and (coin) (random 50)) |
for radix = (+ 2 (random 35)) |
444 |
for padchar = (and (coin) |
for mincol = (and (coin) (random 50)) |
445 |
(random-from-seq +standard-chars+)) |
for padchar = (and (coin) |
|
for commachar = (and (coin) |
|
446 |
(random-from-seq +standard-chars+)) |
(random-from-seq +standard-chars+)) |
447 |
for commaint = (and (coin) (1+ (random 10))) |
for commachar = (and (coin) |
448 |
for k = (ash 1 (+ 2 (random 30))) |
(random-from-seq +standard-chars+)) |
449 |
for x = (- (random (+ k k)) k) |
for commaint = (and (coin) (1+ (random 10))) |
450 |
for fmt = (concatenate |
for k = (ash 1 (+ 2 (random 30))) |
451 |
'string |
for x = (- (random (+ k k)) k) |
452 |
(format nil "~~~d," radix) |
for fmt = (concatenate |
453 |
(if mincol (format nil "~d," mincol) ",") |
'string |
454 |
(if padchar (format nil "'~c," padchar) ",") |
(format nil "~~~d," radix) |
455 |
(if commachar (format nil "'~c," commachar) ",") |
(if mincol (format nil "~d," mincol) ",") |
456 |
(if commaint (format nil "~dr" commaint) "r")) |
(if padchar (format nil "'~c," padchar) ",") |
457 |
for s1 = (format nil fmt x) |
(if commachar (format nil "'~c," commachar) ",") |
458 |
for s2 = (format nil "~v,v,v,v,vr" radix mincol padchar commachar commaint x) |
(if commaint (format nil "~dr" commaint) "r")) |
459 |
repeat 2000 |
for s1 = (format nil fmt x) |
460 |
unless (string= s1 s2) |
for s2 = (format nil "~v,v,v,v,vr" radix mincol padchar commachar commaint x) |
461 |
collect (list radix mincol padchar commachar commaint fmt x s1 s2)) |
for s3 = (formatter-call-to-string fn radix mincol padchar commachar commaint x) |
462 |
|
repeat 2000 |
463 |
|
unless (and (string= s1 s2) |
464 |
|
(string= s1 s3)) |
465 |
|
collect (list radix mincol padchar commachar commaint fmt x s1 s2 s3))) |
466 |
nil) |
nil) |