Hex Artifact Content
Not logged in

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.