Artifact
7e5b4692fb7fc542b831580ac52394c8141a2272:
0000: 23 21 72 36 72 73 0a 28 69 6d 70 6f 72 74 0a 20 #!r6rs.(import.
0010: 20 28 72 6e 72 73 29 0a 20 20 28 72 6e 72 73 20 (rnrs). (rnrs
0020: 6d 75 74 61 62 6c 65 2d 70 61 69 72 73 29 0a 20 mutable-pairs).
0030: 20 28 73 75 72 66 61 67 65 20 73 34 38 20 69 6e (surfage s48 in
0040: 74 65 72 6d 65 64 69 61 74 65 2d 66 6f 72 6d 61 termediate-forma
0050: 74 2d 73 74 72 69 6e 67 73 29 0a 20 20 28 73 75 t-strings). (su
0060: 72 66 61 67 65 20 73 37 38 20 6c 69 67 68 74 77 rfage s78 lightw
0070: 65 69 67 68 74 2d 74 65 73 74 69 6e 67 29 29 0a eight-testing)).
0080: 0a 23 3b 28 64 65 66 69 6e 65 20 28 66 6f 72 6d .#;(define (form
0090: 61 74 2d 6c 6f 74 73 20 6e 20 66 20 66 6d 74 2d at-lots n f fmt-
00a0: 73 74 72 20 2e 20 61 72 67 73 29 0a 20 20 28 6c str . args). (l
00b0: 65 74 20 6c 6f 6f 70 20 28 5b 69 20 30 5d 20 5b et loop ([i 0] [
00c0: 72 20 23 66 5d 29 0a 20 20 20 20 28 69 66 20 28 r #f]). (if (
00d0: 3d 20 69 20 6e 29 0a 20 20 20 20 20 20 72 0a 20 = i n). r.
00e0: 20 20 20 20 20 28 6c 6f 6f 70 20 28 2b 20 31 20 (loop (+ 1
00f0: 69 29 20 28 61 70 70 6c 79 20 66 20 66 6d 74 2d i) (apply f fmt-
0100: 73 74 72 20 61 72 67 73 29 29 29 29 29 0a 0a 28 str args)))))..(
0110: 64 65 66 69 6e 65 2d 73 79 6e 74 61 78 20 65 78 define-syntax ex
0120: 70 65 63 74 0a 20 20 20 28 73 79 6e 74 61 78 2d pect. (syntax-
0130: 72 75 6c 65 73 20 28 29 0a 20 20 20 20 20 5b 28 rules (). [(
0140: 5f 20 65 78 70 65 63 74 65 64 20 65 78 70 72 29 _ expected expr)
0150: 0a 20 20 20 20 20 20 28 63 68 65 63 6b 20 65 78 . (check ex
0160: 70 72 20 3d 3e 20 65 78 70 65 63 74 65 64 29 5d pr => expected)]
0170: 29 29 0a 0a 3b 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d ))..;;;=========
0180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0190: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 28 65 78 70 ==========..(exp
01b0: 65 63 74 20 28 66 6f 72 6d 61 74 20 22 74 65 73 ect (format "tes
01c0: 74 20 7e 73 22 20 27 6d 65 29 20 28 66 6f 72 6d t ~s" 'me) (form
01d0: 61 74 20 23 66 20 22 74 65 73 74 20 7e 61 22 20 at #f "test ~a"
01e0: 22 6d 65 22 29 29 0a 0a 28 63 68 65 63 6b 20 28 "me"))..(check (
01f0: 66 6f 72 6d 61 74 20 22 7e 36 2c 33 46 22 20 31 format "~6,3F" 1
0200: 2f 33 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d /3). (=> m
0210: 65 6d 62 65 72 29 20 20 0a 20 20 20 20 20 20 20 ember) .
0220: 20 20 27 28 22 20 30 2e 33 33 33 22 20 22 20 20 '(" 0.333" "
0230: 2e 33 33 33 22 29 29 0a 0a 28 65 78 70 65 63 74 .333"))..(expect
0240: 20 22 20 20 31 32 22 20 28 66 6f 72 6d 61 74 20 " 12" (format
0250: 22 7e 34 46 22 20 31 32 29 29 0a 0a 28 65 78 70 "~4F" 12))..(exp
0260: 65 63 74 20 22 20 20 31 32 2e 33 34 36 22 20 28 ect " 12.346" (
0270: 66 6f 72 6d 61 74 20 22 7e 38 2c 33 46 22 20 31 format "~8,3F" 1
0280: 32 2e 33 34 35 36 29 29 0a 0a 28 65 78 70 65 63 2.3456))..(expec
0290: 74 20 22 31 32 33 2e 33 34 36 22 20 28 66 6f 72 t "123.346" (for
02a0: 6d 61 74 20 22 7e 36 2c 33 46 22 20 31 32 33 2e mat "~6,3F" 123.
02b0: 33 34 35 36 29 29 0a 0a 28 65 78 70 65 63 74 20 3456))..(expect
02c0: 22 31 32 33 2e 33 34 36 22 20 28 66 6f 72 6d 61 "123.346" (forma
02d0: 74 20 22 7e 34 2c 33 46 22 20 31 32 33 2e 33 34 t "~4,3F" 123.34
02e0: 35 36 29 29 0a 0a 28 65 78 70 65 63 74 20 22 30 56))..(expect "0
02f0: 2e 30 30 30 2b 31 2e 39 34 39 69 22 20 28 66 6f .000+1.949i" (fo
0300: 72 6d 61 74 20 22 7e 38 2c 33 46 22 20 28 73 71 rmat "~8,3F" (sq
0310: 72 74 20 2d 33 2e 38 29 29 29 0a 0a 28 65 78 70 rt -3.8)))..(exp
0320: 65 63 74 20 22 20 33 32 2e 30 30 22 20 28 66 6f ect " 32.00" (fo
0330: 72 6d 61 74 20 22 7e 36 2c 32 46 22 20 33 32 29 rmat "~6,2F" 32)
0340: 29 0a 0a 28 65 78 70 65 63 74 20 22 20 20 20 20 )..(expect "
0350: 33 32 22 20 28 66 6f 72 6d 61 74 20 22 7e 36 46 32" (format "~6F
0360: 22 20 33 32 29 29 0a 0a 28 63 68 65 63 6b 20 28 " 32))..(check (
0370: 66 6f 72 6d 61 74 20 22 7e 36 46 22 20 33 32 2e format "~6F" 32.
0380: 29 0a 3b 3b 20 4e 42 3a 20 28 6e 6f 74 20 28 61 ).;; NB: (not (a
0390: 6e 64 20 28 65 78 61 63 74 3f 20 33 32 2e 29 20 nd (exact? 32.)
03a0: 28 69 6e 74 65 67 65 72 3f 20 33 32 2e 29 29 29 (integer? 32.)))
03b0: 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d 65 6d 62 . (=> memb
03c0: 65 72 29 20 20 0a 20 20 20 20 20 20 20 20 20 27 er) . '
03d0: 28 22 20 20 33 32 2e 30 22 20 22 20 20 20 33 32 (" 32.0" " 32
03e0: 2e 22 29 29 0a 0a 28 63 68 65 63 6b 20 28 66 6f ."))..(check (fo
03f0: 72 6d 61 74 20 22 7e 38 46 22 20 33 32 65 34 35 rmat "~8F" 32e45
0400: 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d 65 6d ). (=> mem
0410: 62 65 72 29 20 20 0a 20 20 20 20 20 20 20 27 28 ber) . '(
0420: 22 20 20 33 2e 32 65 34 36 22 20 22 20 33 2e 32 " 3.2e46" " 3.2
0430: 65 2b 34 36 22 29 29 0a 0a 28 65 78 70 65 63 74 e+46"))..(expect
0440: 20 22 20 33 2e 32 65 2d 34 34 22 20 28 66 6f 72 " 3.2e-44" (for
0450: 6d 61 74 20 22 7e 38 2c 31 46 22 20 33 32 65 2d mat "~8,1F" 32e-
0460: 34 35 29 29 0a 0a 28 63 68 65 63 6b 20 28 66 6f 45))..(check (fo
0470: 72 6d 61 74 20 22 7e 38 46 22 20 33 32 65 32 30 rmat "~8F" 32e20
0480: 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d 65 6d ). (=> mem
0490: 62 65 72 29 20 20 0a 20 20 20 20 20 20 20 27 28 ber) . '(
04a0: 22 20 20 33 2e 32 65 32 31 22 20 22 20 33 2e 32 " 3.2e21" " 3.2
04b0: 65 2b 32 31 22 29 29 0a 0a 28 63 68 65 63 6b 20 e+21"))..(check
04c0: 28 66 6f 72 6d 61 74 20 22 7e 38 46 22 20 33 32 (format "~8F" 32
04d0: 65 35 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d e5). (=> m
04e0: 65 6d 62 65 72 29 20 20 0a 20 20 20 20 20 20 20 ember) .
04f0: 20 20 27 28 22 33 32 30 30 30 30 30 2e 30 22 20 '("3200000.0"
0500: 20 22 20 20 20 33 2e 32 65 36 22 20 22 20 20 33 " 3.2e6" " 3
0510: 2e 32 65 2b 36 22 29 29 0a 0a 28 63 68 65 63 6b .2e+6"))..(check
0520: 20 28 66 6f 72 6d 61 74 20 22 7e 38 46 22 20 33 (format "~8F" 3
0530: 32 65 32 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 2e2). (=>
0540: 6d 65 6d 62 65 72 29 20 20 0a 20 20 20 20 20 20 member) .
0550: 20 27 28 22 20 20 33 32 30 30 2e 30 22 20 22 20 '(" 3200.0" "
0560: 20 20 33 32 30 30 2e 22 29 29 0a 0a 28 63 68 65 3200."))..(che
0570: 63 6b 20 28 66 6f 72 6d 61 74 20 22 7e 38 2c 32 ck (format "~8,2
0580: 46 22 20 33 32 65 31 30 29 0a 20 20 20 20 20 20 F" 32e10).
0590: 20 28 3d 3e 20 6d 65 6d 62 65 72 29 20 20 0a 20 (=> member) .
05a0: 20 20 20 20 20 20 20 20 27 28 22 20 33 2e 32 30 '(" 3.20
05b0: 65 31 31 22 20 22 33 2e 32 30 65 2b 31 31 22 20 e11" "3.20e+11"
05c0: 22 33 32 30 30 30 30 30 30 30 30 30 30 2e 30 30 "320000000000.00
05d0: 22 29 29 0a 0a 28 63 68 65 63 6b 20 28 66 6f 72 "))..(check (for
05e0: 6d 61 74 20 22 7e 30 2c 33 46 22 20 32 30 32 36 mat "~0,3F" 2026
05f0: 33 2f 32 38 31 33 29 0a 20 20 20 20 20 20 20 28 3/2813). (
0600: 3d 3e 20 6d 65 6d 62 65 72 29 0a 20 20 20 20 20 => member).
0610: 20 20 27 28 20 22 37 2e 32 30 33 22 20 29 29 0a '( "7.203" )).
0620: 0a 28 63 68 65 63 6b 20 28 66 6f 72 6d 61 74 20 .(check (format
0630: 22 7e 30 2c 32 46 22 20 32 30 32 36 33 2f 32 38 "~0,2F" 20263/28
0640: 31 33 29 0a 20 20 20 20 20 20 20 28 3d 3e 20 6d 13). (=> m
0650: 65 6d 62 65 72 29 0a 20 20 20 20 20 20 20 27 28 ember). '(
0660: 20 22 37 2e 32 30 22 20 29 29 0a 0a 0a 28 65 78 "7.20" ))...(ex
0670: 70 65 63 74 20 22 20 20 20 20 20 20 31 2e 32 33 pect " 1.23
0680: 34 35 22 20 28 66 6f 72 6d 61 74 20 22 7e 31 32 45" (format "~12
0690: 46 22 20 31 2e 32 33 34 35 29 29 0a 0a 28 65 78 F" 1.2345))..(ex
06a0: 70 65 63 74 20 22 20 20 20 20 20 20 20 20 31 2e pect " 1.
06b0: 32 33 22 20 28 66 6f 72 6d 61 74 20 22 7e 31 32 23" (format "~12
06c0: 2c 32 46 22 20 31 2e 32 33 34 35 29 29 0a 0a 28 ,2F" 1.2345))..(
06d0: 65 78 70 65 63 74 20 22 20 20 20 20 20 20 20 31 expect " 1
06e0: 2e 32 33 34 22 20 28 66 6f 72 6d 61 74 20 22 7e .234" (format "~
06f0: 31 32 2c 33 46 22 20 31 2e 32 33 34 35 29 29 20 12,3F" 1.2345))
0700: 3b 3b 20 22 72 6f 75 6e 64 20 74 6f 20 65 76 65 ;; "round to eve
0710: 6e 22 0a 0a 28 65 78 70 65 63 74 20 22 20 20 20 n"..(expect "
0720: 20 20 20 20 20 30 2e 30 30 30 2b 31 2e 39 34 39 0.000+1.949
0730: 69 22 20 28 66 6f 72 6d 61 74 20 22 7e 32 30 2c i" (format "~20,
0740: 33 46 22 20 28 73 71 72 74 20 2d 33 2e 38 29 29 3F" (sqrt -3.8))
0750: 29 0a 0a 28 65 78 70 65 63 74 20 22 30 2e 30 30 )..(expect "0.00
0760: 30 2b 31 2e 39 34 39 69 22 20 28 66 6f 72 6d 61 0+1.949i" (forma
0770: 74 20 22 7e 38 2c 33 46 22 20 28 73 71 72 74 20 t "~8,3F" (sqrt
0780: 2d 33 2e 38 29 29 29 0a 0a 28 63 68 65 63 6b 20 -3.8)))..(check
0790: 28 66 6f 72 6d 61 74 20 22 7e 38 2c 32 46 22 20 (format "~8,2F"
07a0: 33 2e 34 35 36 37 65 31 31 29 0a 20 20 20 20 20 3.4567e11).
07b0: 20 20 28 3d 3e 20 6d 65 6d 62 65 72 29 20 20 0a (=> member) .
07c0: 20 20 20 20 20 20 20 27 28 22 20 33 2e 34 36 65 '(" 3.46e
07d0: 31 31 22 20 22 33 2e 34 36 65 2b 31 31 22 20 22 11" "3.46e+11" "
07e0: 33 34 35 36 37 30 30 30 30 30 30 30 2e 30 30 22 345670000000.00"
07f0: 29 29 0a 0a 0a 28 63 68 65 63 6b 20 28 66 6f 72 ))...(check (for
0800: 6d 61 74 20 22 7e 77 22 20 28 6c 65 74 20 28 20 mat "~w" (let (
0810: 28 63 20 28 6c 69 73 74 20 27 61 20 27 62 20 27 (c (list 'a 'b '
0820: 63 29 29 20 29 20 28 73 65 74 2d 63 64 72 21 20 c)) ) (set-cdr!
0830: 28 63 64 64 72 20 63 29 20 63 29 20 63 29 29 0a (cddr c) c) c)).
0840: 20 20 20 20 20 20 20 28 3d 3e 20 6d 65 6d 62 65 (=> membe
0850: 72 29 0a 20 20 20 20 20 20 20 27 28 22 23 30 3d r). '("#0=
0860: 28 61 20 62 20 63 20 2e 20 23 30 23 29 22 20 22 (a b c . #0#)" "
0870: 23 31 3d 28 61 20 62 20 63 20 2e 20 23 31 23 29 #1=(a b c . #1#)
0880: 22 29 29 0a 0a 28 65 78 70 65 63 74 20 22 0a 22 "))..(expect "."
0890: 0a 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 . (format
08a0: 20 22 7e 41 7e 41 7e 26 22 20 28 6c 69 73 74 2d "~A~A~&" (list-
08b0: 3e 73 74 72 69 6e 67 20 28 6c 69 73 74 20 23 5c >string (list #\
08c0: 6e 65 77 6c 69 6e 65 29 29 20 22 22 29 29 0a 0a newline)) ""))..
08d0: 28 65 78 70 65 63 74 20 22 61 20 6e 65 77 20 74 (expect "a new t
08e0: 65 73 74 22 0a 20 20 20 20 20 20 20 20 28 66 6f est". (fo
08f0: 72 6d 61 74 20 22 7e 61 20 7e 3f 20 7e 61 22 20 rmat "~a ~? ~a"
0900: 27 61 20 22 7e 61 22 20 27 28 6e 65 77 29 20 27 'a "~a" '(new) '
0910: 74 65 73 74 29 29 0a 0a 28 65 78 70 65 63 74 20 test))..(expect
0920: 22 61 20 5c 22 6e 65 77 5c 22 20 74 65 73 74 22 "a \"new\" test"
0930: 0a 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 . (format
0940: 20 22 7e 61 20 7e 3f 20 7e 61 22 20 27 61 20 22 "~a ~? ~a" 'a "
0950: 7e 73 22 20 27 28 22 6e 65 77 22 29 20 27 74 65 ~s" '("new") 'te
0960: 73 74 29 29 0a 0a 3b 3b 20 66 72 6f 6d 20 53 4c st))..;; from SL
0970: 49 42 0a 0a 28 64 65 66 69 6e 65 2d 73 79 6e 74 IB..(define-synt
0980: 61 78 20 74 65 73 74 0a 20 20 20 28 73 79 6e 74 ax test. (synt
0990: 61 78 2d 72 75 6c 65 73 20 28 29 0a 20 20 20 20 ax-rules ().
09a0: 20 5b 28 74 65 73 74 20 3c 66 6f 72 6d 61 74 2d [(test <format-
09b0: 61 72 67 73 3e 20 3c 65 78 70 65 63 74 65 64 3e args> <expected>
09c0: 29 0a 20 20 20 20 20 20 28 63 68 65 63 6b 20 28 ). (check (
09d0: 61 70 70 6c 79 20 66 6f 72 6d 61 74 20 3c 66 6f apply format <fo
09e0: 72 6d 61 74 2d 61 72 67 73 3e 29 20 3d 3e 20 3c rmat-args>) => <
09f0: 65 78 70 65 63 74 65 64 3e 29 5d 29 29 0a 0a 28 expected>)]))..(
0a00: 74 65 73 74 20 27 28 22 61 62 63 22 29 20 22 61 test '("abc") "a
0a10: 62 63 22 29 0a 28 74 65 73 74 20 27 28 22 7e 61 bc").(test '("~a
0a20: 22 20 31 30 29 20 22 31 30 22 29 0a 28 74 65 73 " 10) "10").(tes
0a30: 74 20 27 28 22 7e 61 22 20 2d 31 2e 32 29 20 22 t '("~a" -1.2) "
0a40: 2d 31 2e 32 22 29 0a 28 74 65 73 74 20 27 28 22 -1.2").(test '("
0a50: 7e 61 22 20 61 29 20 22 61 22 29 0a 28 74 65 73 ~a" a) "a").(tes
0a60: 74 20 27 28 22 7e 61 22 20 23 74 29 20 22 23 74 t '("~a" #t) "#t
0a70: 22 29 0a 28 74 65 73 74 20 27 28 22 7e 61 22 20 ").(test '("~a"
0a80: 23 66 29 20 22 23 66 22 29 0a 28 74 65 73 74 20 #f) "#f").(test
0a90: 27 28 22 7e 61 22 20 22 61 62 63 22 29 20 22 61 '("~a" "abc") "a
0aa0: 62 63 22 29 0a 28 74 65 73 74 20 27 28 22 7e 61 bc").(test '("~a
0ab0: 22 20 23 28 31 20 32 20 33 29 29 20 22 23 28 31 " #(1 2 3)) "#(1
0ac0: 20 32 20 33 29 22 29 0a 28 74 65 73 74 20 27 28 2 3)").(test '(
0ad0: 22 7e 61 22 20 28 29 29 20 22 28 29 22 29 0a 28 "~a" ()) "()").(
0ae0: 74 65 73 74 20 27 28 22 7e 61 22 20 28 61 29 29 test '("~a" (a))
0af0: 20 22 28 61 29 22 29 0a 28 74 65 73 74 20 27 28 "(a)").(test '(
0b00: 22 7e 61 22 20 28 61 20 62 29 29 20 22 28 61 20 "~a" (a b)) "(a
0b10: 62 29 22 29 0a 28 74 65 73 74 20 27 28 22 7e 61 b)").(test '("~a
0b20: 22 20 28 61 20 28 62 20 63 29 20 64 29 29 20 22 " (a (b c) d)) "
0b30: 28 61 20 28 62 20 63 29 20 64 29 22 29 0a 28 74 (a (b c) d)").(t
0b40: 65 73 74 20 27 28 22 7e 61 22 20 28 61 20 2e 20 est '("~a" (a .
0b50: 62 29 29 20 22 28 61 20 2e 20 62 29 22 29 0a 28 b)) "(a . b)").(
0b60: 74 65 73 74 20 27 28 22 7e 61 22 20 28 61 20 28 test '("~a" (a (
0b70: 62 20 63 20 2e 20 64 29 29 29 20 22 28 61 20 28 b c . d))) "(a (
0b80: 62 20 63 20 2e 20 64 29 29 22 29 0a 0a 3b 20 23 b c . d))")..; #
0b90: 20 61 72 67 75 6d 65 6e 74 20 74 65 73 74 0a 0a argument test..
0ba0: 28 74 65 73 74 20 27 28 22 7e 61 20 7e 61 22 20 (test '("~a ~a"
0bb0: 31 30 20 32 30 29 20 22 31 30 20 32 30 22 29 0a 10 20) "10 20").
0bc0: 28 74 65 73 74 20 27 28 22 7e 61 20 61 62 63 20 (test '("~a abc
0bd0: 7e 61 20 64 65 66 22 20 31 30 20 32 30 29 20 22 ~a def" 10 20) "
0be0: 31 30 20 61 62 63 20 32 30 20 64 65 66 22 29 0a 10 abc 20 def").
0bf0: 0a 3b 20 6e 75 6d 65 72 69 63 61 6c 20 74 65 73 .; numerical tes
0c00: 74 0a 0a 28 74 65 73 74 20 27 28 22 7e 64 22 20 t..(test '("~d"
0c10: 31 30 30 29 20 22 31 30 30 22 29 0a 28 74 65 73 100) "100").(tes
0c20: 74 20 27 28 22 7e 78 22 20 31 30 30 29 20 22 36 t '("~x" 100) "6
0c30: 34 22 29 0a 28 74 65 73 74 20 27 28 22 7e 6f 22 4").(test '("~o"
0c40: 20 31 30 30 29 20 22 31 34 34 22 29 0a 28 74 65 100) "144").(te
0c50: 73 74 20 27 28 22 7e 62 22 20 31 30 30 29 20 22 st '("~b" 100) "
0c60: 31 31 30 30 31 30 30 22 29 0a 0a 0a 3b 20 63 68 1100100")...; ch
0c70: 61 72 61 63 74 65 72 20 74 65 73 74 0a 0a 28 74 aracter test..(t
0c80: 65 73 74 20 27 28 22 7e 63 22 20 23 5c 61 29 20 est '("~c" #\a)
0c90: 22 61 22 29 0a 0a 0a 3b 20 74 69 6c 64 65 20 74 "a")...; tilde t
0ca0: 65 73 74 0a 0a 28 74 65 73 74 20 27 28 22 7e 7e est..(test '("~~
0cb0: 7e 7e 22 29 20 22 7e 7e 22 29 0a 0a 0a 3b 20 77 ~~") "~~")...; w
0cc0: 68 69 74 65 73 70 61 63 65 20 63 68 61 72 61 63 hitespace charac
0cd0: 74 65 72 20 74 65 73 74 0a 0a 28 74 65 73 74 20 ter test..(test
0ce0: 27 28 22 7e 25 22 29 20 22 0a 22 29 0a 28 74 65 '("~%") ".").(te
0cf0: 73 74 20 27 28 22 7e 26 22 29 20 22 0a 22 29 0a st '("~&") ".").
0d00: 28 74 65 73 74 20 27 28 22 61 62 63 7e 26 22 29 (test '("abc~&")
0d10: 20 22 61 62 63 0a 22 29 0a 28 74 65 73 74 20 27 "abc.").(test '
0d20: 28 22 61 62 63 7e 26 64 65 66 22 29 20 22 61 62 ("abc~&def") "ab
0d30: 63 0a 64 65 66 22 29 0a 28 74 65 73 74 20 27 28 c.def").(test '(
0d40: 22 7e 26 22 29 20 22 0a 22 29 0a 28 74 65 73 74 "~&") ".").(test
0d50: 20 27 28 22 7e 5f 7e 5f 7e 5f 22 29 20 22 20 20 '("~_~_~_") "
0d60: 20 22 29 0a 0a 0a 0a 3b 20 69 6e 64 69 72 65 63 ")....; indirec
0d70: 74 69 6f 6e 20 74 65 73 74 0a 0a 28 74 65 73 74 tion test..(test
0d80: 20 27 28 22 7e 61 20 7e 3f 20 7e 61 22 20 31 30 '("~a ~? ~a" 10
0d90: 20 22 7e 61 20 7e 61 22 20 28 32 30 20 33 30 29 "~a ~a" (20 30)
0da0: 20 34 30 29 20 22 31 30 20 32 30 20 33 30 20 34 40) "10 20 30 4
0db0: 30 22 29 0a 0a 0a 0a 3b 20 73 6c 61 73 68 69 66 0")....; slashif
0dc0: 79 20 74 65 73 74 0a 0a 28 74 65 73 74 20 27 28 y test..(test '(
0dd0: 22 7e 73 22 20 22 61 62 63 22 29 20 22 5c 22 61 "~s" "abc") "\"a
0de0: 62 63 5c 22 22 29 0a 28 74 65 73 74 20 27 28 22 bc\"").(test '("
0df0: 7e 73 22 20 22 61 62 63 20 5c 5c 20 61 62 63 22 ~s" "abc \\ abc"
0e00: 29 20 22 5c 22 61 62 63 20 5c 5c 5c 5c 20 61 62 ) "\"abc \\\\ ab
0e10: 63 5c 22 22 29 0a 28 74 65 73 74 20 27 28 22 7e c\"").(test '("~
0e20: 61 22 20 22 61 62 63 20 5c 5c 20 61 62 63 22 29 a" "abc \\ abc")
0e30: 20 22 61 62 63 20 5c 5c 20 61 62 63 22 29 0a 28 "abc \\ abc").(
0e40: 74 65 73 74 20 27 28 22 7e 73 22 20 22 61 62 63 test '("~s" "abc
0e50: 20 5c 22 20 61 62 63 22 29 20 22 5c 22 61 62 63 \" abc") "\"abc
0e60: 20 5c 5c 5c 22 20 61 62 63 5c 22 22 29 0a 28 74 \\\" abc\"").(t
0e70: 65 73 74 20 27 28 22 7e 61 22 20 22 61 62 63 20 est '("~a" "abc
0e80: 5c 22 20 61 62 63 22 29 20 22 61 62 63 20 5c 22 \" abc") "abc \"
0e90: 20 61 62 63 22 29 0a 28 74 65 73 74 20 27 28 22 abc").(test '("
0ea0: 7e 73 22 20 23 5c 73 70 61 63 65 29 20 22 23 5c ~s" #\space) "#\
0eb0: 5c 73 70 61 63 65 22 29 0a 3b 28 74 65 73 74 20 \space").;(test
0ec0: 27 28 22 7e 73 22 20 23 5c 6e 65 77 6c 69 6e 65 '("~s" #\newline
0ed0: 29 20 22 23 5c 5c 6e 65 77 6c 69 6e 65 22 29 0a ) "#\\newline").
0ee0: 28 74 65 73 74 20 27 28 22 7e 73 22 20 23 5c 61 (test '("~s" #\a
0ef0: 29 20 22 23 5c 5c 61 22 29 0a 28 74 65 73 74 20 ) "#\\a").(test
0f00: 27 28 22 7e 73 22 20 28 61 20 22 62 22 20 63 29 '("~s" (a "b" c)
0f10: 29 20 22 28 61 20 5c 22 62 5c 22 20 63 29 22 29 ) "(a \"b\" c)")
0f20: 0a 28 74 65 73 74 20 27 28 22 7e 61 22 20 28 61 .(test '("~a" (a
0f30: 20 22 62 22 20 63 29 29 20 22 28 61 20 62 20 63 "b" c)) "(a b c
0f40: 29 22 29 0a 0a 0a 3b 20 66 69 78 65 64 20 66 6c )")...; fixed fl
0f50: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 73 0a 0a 20 oating points..
0f60: 20 28 74 65 73 74 20 27 28 22 7e 36 2c 32 66 22 (test '("~6,2f"
0f70: 20 33 2e 31 34 31 35 39 29 20 22 20 20 33 2e 31 3.14159) " 3.1
0f80: 34 22 29 0a 20 20 28 74 65 73 74 20 27 28 22 7e 4"). (test '("~
0f90: 36 2c 31 66 22 20 33 2e 31 34 31 35 39 29 20 22 6,1f" 3.14159) "
0fa0: 20 20 20 33 2e 31 22 29 0a 20 20 28 74 65 73 74 3.1"). (test
0fb0: 20 27 28 22 7e 36 2c 30 66 22 20 33 2e 31 34 31 '("~6,0f" 3.141
0fc0: 35 39 29 20 22 20 20 20 20 33 2e 22 29 0a 20 20 59) " 3.").
0fd0: 28 74 65 73 74 20 27 28 22 7e 35 2c 31 66 22 20 (test '("~5,1f"
0fe0: 30 29 20 22 20 20 30 2e 30 22 29 0a 20 20 28 74 0) " 0.0"). (t
0ff0: 65 73 74 20 27 28 22 7e 31 30 2c 37 66 22 20 33 est '("~10,7f" 3
1000: 2e 31 34 31 35 39 29 20 22 20 33 2e 31 34 31 35 .14159) " 3.1415
1010: 39 30 30 22 29 0a 20 20 28 74 65 73 74 20 27 28 900"). (test '(
1020: 22 7e 31 30 2c 37 66 22 20 2d 33 2e 31 34 31 35 "~10,7f" -3.1415
1030: 39 29 20 22 2d 33 2e 31 34 31 35 39 30 30 22 29 9) "-3.1415900")
1040: 0a 20 20 28 74 65 73 74 20 27 28 22 7e 36 2c 33 . (test '("~6,3
1050: 66 22 20 30 2e 30 29 20 20 20 20 22 20 30 2e 30 f" 0.0) " 0.0
1060: 30 30 22 29 0a 20 20 28 63 68 65 63 6b 20 28 66 00"). (check (f
1070: 6f 72 6d 61 74 20 22 7e 36 2c 34 66 22 20 30 2e ormat "~6,4f" 0.
1080: 30 30 37 29 0a 20 20 20 20 20 20 20 20 20 28 3d 007). (=
1090: 3e 20 6d 65 6d 62 65 72 29 0a 20 20 20 20 20 20 > member).
10a0: 20 20 20 27 28 22 20 20 37 65 2d 33 22 20 22 30 '(" 7e-3" "0
10b0: 2e 30 30 37 30 22 20 22 2e 30 30 37 30 22 29 29 .0070" ".0070"))
10c0: 0a 20 20 28 63 68 65 63 6b 20 28 66 6f 72 6d 61 . (check (forma
10d0: 74 20 22 7e 36 2c 33 66 22 20 30 2e 30 30 37 29 t "~6,3f" 0.007)
10e0: 0a 20 20 20 20 20 20 20 20 20 28 3d 3e 20 6d 65 . (=> me
10f0: 6d 62 65 72 29 0a 20 20 20 20 20 20 20 20 20 27 mber). '
1100: 28 22 20 20 37 65 2d 33 22 20 20 22 20 30 2e 30 (" 7e-3" " 0.0
1110: 30 37 22 29 29 0a 20 20 28 63 68 65 63 6b 20 28 07")). (check (
1120: 66 6f 72 6d 61 74 20 22 7e 36 2c 32 66 22 20 30 format "~6,2f" 0
1130: 2e 30 30 37 29 0a 20 20 20 20 20 20 20 20 20 28 .007). (
1140: 3d 3e 20 6d 65 6d 62 65 72 29 0a 20 20 20 20 20 => member).
1150: 20 20 20 20 27 28 22 20 20 37 65 2d 33 22 20 22 '(" 7e-3" "
1160: 20 20 30 2e 30 31 22 29 29 0a 20 20 28 63 68 65 0.01")). (che
1170: 63 6b 20 28 66 6f 72 6d 61 74 20 22 7e 33 2c 32 ck (format "~3,2
1180: 66 22 20 30 2e 30 30 37 29 0a 20 20 20 20 20 20 f" 0.007).
1190: 20 20 20 28 3d 3e 20 6d 65 6d 62 65 72 29 0a 20 (=> member).
11a0: 20 20 20 20 20 20 20 20 27 28 22 37 65 2d 33 22 '("7e-3"
11b0: 20 22 2e 30 31 22 20 22 30 2e 30 31 22 29 29 0a ".01" "0.01")).
11c0: 20 20 28 63 68 65 63 6b 20 28 66 6f 72 6d 61 74 (check (format
11d0: 20 22 7e 33 2c 32 66 22 20 2d 30 2e 30 30 37 29 "~3,2f" -0.007)
11e0: 0a 20 20 20 20 20 20 20 20 20 20 28 3d 3e 20 6d . (=> m
11f0: 65 6d 62 65 72 29 0a 20 20 20 20 20 20 20 20 20 ember).
1200: 20 27 28 22 2d 37 65 2d 33 22 20 22 2d 2e 30 31 '("-7e-3" "-.01
1210: 22 20 22 2d 30 2e 30 31 22 29 29 0a 20 20 28 74 " "-0.01")). (t
1220: 65 73 74 20 27 28 22 7e 36 2c 33 66 22 20 31 32 est '("~6,3f" 12
1230: 33 34 35 2e 36 37 38 39 29 20 22 31 32 33 34 35 345.6789) "12345
1240: 2e 36 37 39 22 29 0a 20 20 28 74 65 73 74 20 27 .679"). (test '
1250: 28 22 7e 36 66 22 20 32 33 2e 34 29 20 22 20 20 ("~6f" 23.4) "
1260: 32 33 2e 34 22 29 0a 20 20 28 74 65 73 74 20 27 23.4"). (test '
1270: 28 22 7e 36 66 22 20 31 32 33 34 2e 35 29 20 22 ("~6f" 1234.5) "
1280: 31 32 33 34 2e 35 22 29 0a 20 20 28 74 65 73 74 1234.5"). (test
1290: 20 27 28 22 7e 36 66 22 20 31 32 33 34 35 36 37 '("~6f" 1234567
12a0: 38 29 20 22 31 32 33 34 35 36 37 38 22 29 0a 20 8) "12345678").
12b0: 20 28 74 65 73 74 20 27 28 22 7e 36 2c 32 66 22 (test '("~6,2f"
12c0: 20 31 32 33 2e 35 36 37 38 39 29 20 22 31 32 33 123.56789) "123
12d0: 2e 35 37 22 29 0a 20 20 28 74 65 73 74 20 27 28 .57"). (test '(
12e0: 22 7e 36 66 22 20 31 32 33 2e 30 29 20 22 20 31 "~6f" 123.0) " 1
12f0: 32 33 2e 30 22 29 0a 20 20 28 74 65 73 74 20 27 23.0"). (test '
1300: 28 22 7e 36 66 22 20 2d 31 32 33 2e 30 29 20 22 ("~6f" -123.0) "
1310: 2d 31 32 33 2e 30 22 29 0a 20 20 28 74 65 73 74 -123.0"). (test
1320: 20 27 28 22 7e 36 66 22 20 30 2e 30 29 20 22 20 '("~6f" 0.0) "
1330: 20 20 30 2e 30 22 29 0a 20 20 28 74 65 73 74 20 0.0"). (test
1340: 27 28 22 7e 33 2c 31 66 22 20 33 2e 31 34 31 29 '("~3,1f" 3.141)
1350: 20 22 33 2e 31 22 29 0a 20 20 28 74 65 73 74 20 "3.1"). (test
1360: 27 28 22 7e 32 2c 30 66 22 20 33 2e 31 34 31 29 '("~2,0f" 3.141)
1370: 20 22 33 2e 22 29 0a 20 20 28 74 65 73 74 20 27 "3."). (test '
1380: 28 22 7e 31 66 22 20 33 2e 31 34 31 29 20 22 33 ("~1f" 3.141) "3
1390: 2e 31 34 31 22 29 0a 20 20 28 74 65 73 74 20 27 .141"). (test '
13a0: 28 22 7e 66 22 20 31 32 33 2e 35 36 37 38 39 29 ("~f" 123.56789)
13b0: 20 22 31 32 33 2e 35 36 37 38 39 22 29 0a 20 20 "123.56789").
13c0: 28 74 65 73 74 20 27 28 22 7e 66 22 20 2d 33 31 (test '("~f" -31
13d0: 34 2e 30 29 20 22 2d 33 31 34 2e 30 22 29 0a 20 4.0) "-314.0").
13e0: 20 28 63 68 65 63 6b 20 28 66 6f 72 6d 61 74 20 (check (format
13f0: 22 7e 66 22 20 31 65 34 29 0a 20 20 20 20 20 20 "~f" 1e4).
1400: 20 20 20 28 3d 3e 20 6d 65 6d 62 65 72 29 0a 20 (=> member).
1410: 20 20 20 20 20 20 20 20 27 28 22 31 65 34 22 20 '("1e4"
1420: 22 31 30 30 30 30 2e 30 22 29 29 0a 20 20 28 63 "10000.0")). (c
1430: 68 65 63 6b 20 28 66 6f 72 6d 61 74 20 22 7e 66 heck (format "~f
1440: 22 20 2d 31 2e 32 33 65 31 30 29 0a 20 20 20 20 " -1.23e10).
1450: 20 20 20 20 20 28 3d 3e 20 6d 65 6d 62 65 72 29 (=> member)
1460: 0a 20 20 20 20 20 20 20 20 20 27 28 22 2d 31 2e . '("-1.
1470: 32 33 65 31 30 22 20 22 2d 31 2e 32 33 65 2b 31 23e10" "-1.23e+1
1480: 30 22 20 22 2d 31 32 33 30 30 30 30 30 30 30 30 0" "-12300000000
1490: 2e 30 22 20 22 2d 31 32 33 30 30 30 30 30 30 30 .0" "-1230000000
14a0: 30 2e 22 29 29 0a 20 20 28 63 68 65 63 6b 20 28 0.")). (check (
14b0: 66 6f 72 6d 61 74 20 22 7e 66 22 20 31 65 2d 34 format "~f" 1e-4
14c0: 29 0a 20 20 20 20 20 20 20 20 20 28 3d 3e 20 6d ). (=> m
14d0: 65 6d 62 65 72 29 0a 20 20 20 20 20 20 20 20 20 ember).
14e0: 27 28 22 31 65 2d 34 22 20 22 30 2e 30 30 30 31 '("1e-4" "0.0001
14f0: 22 20 22 2e 30 30 30 31 22 29 29 0a 20 20 28 63 " ".0001")). (c
1500: 68 65 63 6b 20 28 66 6f 72 6d 61 74 20 22 7e 66 heck (format "~f
1510: 22 20 2d 31 2e 32 33 65 2d 31 30 29 0a 20 20 20 " -1.23e-10).
1520: 20 20 20 20 20 20 28 3d 3e 20 6d 65 6d 62 65 72 (=> member
1530: 29 0a 20 20 20 20 20 20 20 20 20 27 28 22 2d 30 ). '("-0
1540: 2e 30 30 30 30 30 30 30 30 30 31 32 33 22 20 22 .000000000123" "
1550: 2d 31 2e 32 33 65 2d 31 30 22 29 29 0a 0a 0a 28 -1.23e-10"))...(
1560: 63 68 65 63 6b 2d 72 65 70 6f 72 74 29 0a 0a 3b check-report)..;
1570: 3b 20 23 21 65 6f 66 0a ; #!eof.