Megatest

Hex Artifact Content
Login

Artifact 197f4966586634a0c7d7600cad276dd0a08b806d:


0000: 28 75 73 65 20 74 65 73 74 29 0a 3b 3b 20 28 72  (use test).;; (r
0010: 65 71 75 69 72 65 2d 6c 69 62 72 61 72 79 20 61  equire-library a
0020: 72 67 73 29 0a 0a 28 69 6e 63 6c 75 64 65 20 22  rgs)..(include "
0030: 2e 2e 2f 63 6f 6d 6d 6f 6e 2e 73 63 6d 22 29 0a  ../common.scm").
0040: 28 69 6e 63 6c 75 64 65 20 22 2e 2e 2f 6b 65 79  (include "../key
0050: 73 2e 73 63 6d 22 29 0a 28 69 6e 63 6c 75 64 65  s.scm").(include
0060: 20 22 2e 2e 2f 64 62 2e 73 63 6d 22 29 0a 28 69   "../db.scm").(i
0070: 6e 63 6c 75 64 65 20 22 2e 2e 2f 63 6f 6e 66 69  nclude "../confi
0080: 67 66 2e 73 63 6d 22 29 0a 28 69 6e 63 6c 75 64  gf.scm").(includ
0090: 65 20 22 2e 2e 2f 70 72 6f 63 65 73 73 2e 73 63  e "../process.sc
00a0: 6d 22 29 0a 28 69 6e 63 6c 75 64 65 20 22 2e 2e  m").(include "..
00b0: 2f 6c 61 75 6e 63 68 2e 73 63 6d 22 29 0a 28 69  /launch.scm").(i
00c0: 6e 63 6c 75 64 65 20 22 2e 2e 2f 69 74 65 6d 73  nclude "../items
00d0: 2e 73 63 6d 22 29 0a 28 69 6e 63 6c 75 64 65 20  .scm").(include 
00e0: 22 2e 2e 2f 72 75 6e 73 2e 73 63 6d 22 29 0a 28  "../runs.scm").(
00f0: 69 6e 63 6c 75 64 65 20 22 2e 2e 2f 6d 65 67 61  include "../mega
0100: 74 65 73 74 2d 76 65 72 73 69 6f 6e 2e 73 63 6d  test-version.scm
0110: 22 29 0a 0a 28 64 65 66 69 6e 65 20 63 6f 6e 66  ")..(define conf
0120: 66 69 6c 65 20 23 66 29 0a 28 74 65 73 74 20 22  file #f).(test "
0130: 52 65 61 64 20 61 20 63 6f 6e 66 69 67 22 20 23  Read a config" #
0140: 74 20 28 68 61 73 68 2d 74 61 62 6c 65 3f 20 28  t (hash-table? (
0150: 72 65 61 64 2d 63 6f 6e 66 69 67 20 22 74 65 73  read-config "tes
0160: 74 2e 63 6f 6e 66 69 67 22 20 23 66 20 23 66 29  t.config" #f #f)
0170: 29 29 0a 28 74 65 73 74 20 22 52 65 61 64 20 61  )).(test "Read a
0180: 20 63 6f 6e 66 69 67 20 74 68 61 74 20 64 6f 65   config that doe
0190: 73 6e 27 74 20 65 78 69 73 74 22 20 23 74 20 28  sn't exist" #t (
01a0: 68 61 73 68 2d 74 61 62 6c 65 3f 20 28 72 65 61  hash-table? (rea
01b0: 64 2d 63 6f 6e 66 69 67 20 22 6e 61 64 61 2e 63  d-config "nada.c
01c0: 6f 6e 66 69 67 22 20 23 66 20 23 66 29 29 29 0a  onfig" #f #f))).
01d0: 0a 28 73 65 74 21 20 63 6f 6e 66 66 69 6c 65 20  .(set! conffile 
01e0: 28 72 65 61 64 2d 63 6f 6e 66 69 67 20 22 74 65  (read-config "te
01f0: 73 74 2e 63 6f 6e 66 69 67 22 20 23 66 20 23 66  st.config" #f #f
0200: 29 29 0a 28 74 65 73 74 20 22 47 65 74 20 61 76  )).(test "Get av
0210: 61 69 6c 61 62 6c 65 20 64 69 73 6b 73 70 61 63  ailable diskspac
0220: 65 22 20 23 74 20 28 6e 75 6d 62 65 72 3f 20 28  e" #t (number? (
0230: 67 65 74 2d 64 66 20 22 2e 2f 22 29 29 29 0a 28  get-df "./"))).(
0240: 74 65 73 74 20 22 47 65 74 20 62 65 73 74 20 64  test "Get best d
0250: 69 72 22 20 23 74 20 28 6c 65 74 20 28 28 62 65  ir" #t (let ((be
0260: 73 74 64 69 72 20 28 67 65 74 2d 62 65 73 74 2d  stdir (get-best-
0270: 64 69 73 6b 20 63 6f 6e 66 66 69 6c 65 29 29 29  disk conffile)))
0280: 0a 09 09 09 20 20 20 20 20 20 28 6f 72 20 28 65  ....      (or (e
0290: 71 75 61 6c 3f 20 22 2e 2f 22 20 20 20 62 65 73  qual? "./"   bes
02a0: 74 64 69 72 29 0a 09 09 09 09 20 20 28 65 71 75  tdir).....  (equ
02b0: 61 6c 3f 20 22 2f 74 6d 70 22 20 62 65 73 74 64  al? "/tmp" bestd
02c0: 69 72 29 29 29 29 0a 28 74 65 73 74 20 22 4d 75  ir)))).(test "Mu
02d0: 6c 74 69 6c 69 6e 65 20 76 61 72 69 61 62 6c 65  ltiline variable
02e0: 22 20 34 20 28 6c 65 6e 67 74 68 20 28 73 74 72  " 4 (length (str
02f0: 69 6e 67 2d 73 70 6c 69 74 20 28 63 6f 6e 66 69  ing-split (confi
0300: 67 2d 6c 6f 6f 6b 75 70 20 63 6f 6e 66 66 69 6c  g-lookup conffil
0310: 65 20 22 6d 65 74 61 64 61 74 61 22 20 22 64 65  e "metadata" "de
0320: 73 63 72 69 70 74 69 6f 6e 22 29 20 22 5c 6e 22  scription") "\n"
0330: 29 29 29 0a 0a 3b 3b 20 64 62 0a 28 64 65 66 69  )))..;; db.(defi
0340: 6e 65 20 72 6f 77 20 20 20 20 28 76 65 63 74 6f  ne row    (vecto
0350: 72 20 22 61 22 20 22 62 22 20 22 63 22 20 22 62  r "a" "b" "c" "b
0360: 6c 61 68 22 29 29 0a 28 64 65 66 69 6e 65 20 68  lah")).(define h
0370: 65 61 64 65 72 20 28 6c 69 73 74 20 22 63 6f 6c  eader (list "col
0380: 31 22 20 22 63 6f 6c 32 22 20 22 63 6f 6c 33 22  1" "col2" "col3"
0390: 20 22 63 6f 6c 34 22 29 29 0a 28 74 65 73 74 20   "col4")).(test 
03a0: 22 47 65 74 20 72 6f 77 20 62 79 20 68 65 61 64  "Get row by head
03b0: 65 72 22 20 22 62 6c 61 68 22 20 28 64 62 3a 67  er" "blah" (db:g
03c0: 65 74 2d 76 61 6c 75 65 2d 62 79 2d 68 65 61 64  et-value-by-head
03d0: 65 72 20 72 6f 77 20 68 65 61 64 65 72 20 22 63  er row header "c
03e0: 6f 6c 34 22 29 29 0a 0a 3b 3b 20 28 64 65 66 69  ol4"))..;; (defi
03f0: 6e 65 20 2a 74 6f 70 70 61 74 68 2a 20 22 74 65  ne *toppath* "te
0400: 73 74 73 22 29 0a 28 64 65 66 69 6e 65 20 2a 64  sts").(define *d
0410: 62 2a 20 23 66 29 0a 28 74 65 73 74 20 22 73 65  b* #f).(test "se
0420: 74 75 70 20 66 6f 72 20 72 75 6e 22 20 23 74 20  tup for run" #t 
0430: 28 62 65 67 69 6e 20 28 73 65 74 75 70 2d 66 6f  (begin (setup-fo
0440: 72 2d 72 75 6e 29 0a 09 09 09 09 28 73 74 72 69  r-run).....(stri
0450: 6e 67 3f 20 28 67 65 74 65 6e 76 20 22 4d 54 5f  ng? (getenv "MT_
0460: 52 55 4e 5f 41 52 45 41 5f 48 4f 4d 45 22 29 29  RUN_AREA_HOME"))
0470: 29 29 0a 28 74 65 73 74 20 22 6f 70 65 6e 2d 64  )).(test "open-d
0480: 62 22 20 23 74 20 28 62 65 67 69 6e 0a 09 09 20  b" #t (begin... 
0490: 20 20 20 20 28 73 65 74 21 20 2a 64 62 2a 20 28      (set! *db* (
04a0: 6f 70 65 6e 2d 64 62 29 29 0a 09 09 20 20 20 20  open-db))...    
04b0: 20 28 69 66 20 2a 64 62 2a 20 23 74 20 23 66 29   (if *db* #t #f)
04c0: 29 29 0a 0a 3b 3b 20 71 75 69 74 20 77 61 73 74  ))..;; quit wast
04d0: 69 6e 67 20 74 69 6d 65 20 63 68 61 6e 67 69 6e  ing time changin
04e0: 67 20 64 62 20 74 6f 20 2a 64 62 2a 0a 28 64 65  g db to *db*.(de
04f0: 66 69 6e 65 20 64 62 20 2a 64 62 2a 29 0a 0a 28  fine db *db*)..(
0500: 74 65 73 74 20 22 67 65 74 20 63 70 75 20 6c 6f  test "get cpu lo
0510: 61 64 22 20 23 74 20 28 6e 75 6d 62 65 72 3f 20  ad" #t (number? 
0520: 28 67 65 74 2d 63 70 75 2d 6c 6f 61 64 29 29 29  (get-cpu-load)))
0530: 0a 28 74 65 73 74 20 22 67 65 74 20 75 6e 61 6d  .(test "get unam
0540: 65 22 20 20 20 20 23 74 20 28 73 74 72 69 6e 67  e"    #t (string
0550: 3f 20 28 67 65 74 2d 75 6e 61 6d 65 29 29 29 0a  ? (get-uname))).
0560: 0a 28 74 65 73 74 20 22 67 65 74 20 76 61 6c 69  .(test "get vali
0570: 64 76 61 6c 75 65 73 20 61 73 20 6c 69 73 74 22  dvalues as list"
0580: 20 28 6c 69 73 74 20 22 73 74 61 72 74 22 20 22   (list "start" "
0590: 65 6e 64 22 20 22 63 6f 6d 70 6c 65 74 65 64 22  end" "completed"
05a0: 29 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d  ).      (string-
05b0: 73 70 6c 69 74 20 28 63 6f 6e 66 69 67 2d 6c 6f  split (config-lo
05c0: 6f 6b 75 70 20 2a 63 6f 6e 66 69 67 64 61 74 2a  okup *configdat*
05d0: 20 22 76 61 6c 69 64 76 61 6c 75 65 73 22 20 22   "validvalues" "
05e0: 73 74 61 74 65 22 29 29 29 0a 0a 28 66 6f 72 2d  state")))..(for-
05f0: 65 61 63 68 20 28 6c 61 6d 62 64 61 20 28 69 74  each (lambda (it
0600: 65 6d 29 0a 09 20 20 20 20 28 74 65 73 74 20 28  em)..    (test (
0610: 63 6f 6e 63 20 22 67 65 74 20 76 61 6c 69 64 20  conc "get valid 
0620: 69 74 65 6d 73 20 28 22 20 69 74 65 6d 20 22 29  items (" item ")
0630: 22 29 0a 09 09 20 20 69 74 65 6d 20 28 63 68 65  ")...  item (che
0640: 63 6b 2d 76 61 6c 69 64 2d 69 74 65 6d 73 20 22  ck-valid-items "
0650: 73 74 61 74 65 22 20 69 74 65 6d 29 29 29 0a 09  state" item)))..
0660: 20 20 28 6c 69 73 74 20 22 73 74 61 72 74 22 20    (list "start" 
0670: 22 65 6e 64 22 20 22 63 6f 6d 70 6c 65 74 65 64  "end" "completed
0680: 22 29 29 0a 0a 28 66 6f 72 2d 65 61 63 68 20 28  "))..(for-each (
0690: 6c 61 6d 62 64 61 20 28 69 74 65 6d 29 0a 09 20  lambda (item).. 
06a0: 20 20 20 28 74 65 73 74 20 28 63 6f 6e 63 20 22     (test (conc "
06b0: 67 65 74 20 76 61 6c 69 64 20 69 74 65 6d 73 20  get valid items 
06c0: 28 22 20 69 74 65 6d 20 22 29 22 29 0a 09 09 20  (" item ")")... 
06d0: 20 69 74 65 6d 20 28 63 68 65 63 6b 2d 76 61 6c   item (check-val
06e0: 69 64 2d 69 74 65 6d 73 20 22 73 74 61 74 75 73  id-items "status
06f0: 22 20 69 74 65 6d 29 29 29 0a 09 20 20 28 6c 69  " item)))..  (li
0700: 73 74 20 22 70 61 73 73 22 20 22 66 61 69 6c 22  st "pass" "fail"
0710: 20 22 6e 2f 61 22 29 29 0a 0a 28 74 65 73 74 20   "n/a"))..(test 
0720: 22 77 72 69 74 65 20 65 6e 76 20 66 69 6c 65 73  "write env files
0730: 22 20 22 6e 61 64 61 2e 63 73 68 22 20 28 62 65  " "nada.csh" (be
0740: 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  gin.            
0750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0760: 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d            (save-
0770: 65 6e 76 69 72 6f 6e 6d 65 6e 74 2d 61 73 2d 66  environment-as-f
0780: 69 6c 65 73 20 22 6e 61 64 61 22 29 0a 20 20 20  iles "nada").   
0790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07b0: 20 20 20 28 61 6e 64 20 28 66 69 6c 65 2d 65 78     (and (file-ex
07c0: 69 73 74 73 3f 20 22 6e 61 64 61 2e 73 68 22 29  ists? "nada.sh")
07d0: 0a 20 20 20 20 09 09 09 20 20 20 20 20 20 20 20  .    ...        
07e0: 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 65           (file-e
07f0: 78 69 73 74 73 3f 20 22 6e 61 64 61 2e 63 73 68  xists? "nada.csh
0800: 22 29 29 29 29 0a 0a 28 74 65 73 74 20 22 67 65  "))))..(test "ge
0810: 74 20 61 6c 6c 20 6c 65 67 61 6c 20 74 65 73 74  t all legal test
0820: 73 22 20 28 6c 69 73 74 20 22 72 75 6e 66 69 72  s" (list "runfir
0830: 73 74 22 20 22 72 75 6e 77 69 74 68 66 69 72 73  st" "runwithfirs
0840: 74 22 20 22 73 69 6e 67 6c 65 74 65 73 74 22 20  t" "singletest" 
0850: 22 73 69 6e 67 6c 65 74 65 73 74 32 22 20 22 73  "singletest2" "s
0860: 71 6c 69 74 65 73 70 65 65 64 22 29 20 28 73 6f  qlitespeed") (so
0870: 72 74 20 28 67 65 74 2d 61 6c 6c 2d 6c 65 67 61  rt (get-all-lega
0880: 6c 2d 74 65 73 74 73 29 20 73 74 72 69 6e 67 3c  l-tests) string<
0890: 3d 3f 29 29 0a 0a 28 74 65 73 74 20 22 72 65 67  =?))..(test "reg
08a0: 69 73 74 65 72 2d 74 65 73 74 2c 20 74 65 73 74  ister-test, test
08b0: 20 69 6e 66 6f 22 20 22 4e 4f 54 5f 53 54 41 52   info" "NOT_STAR
08c0: 54 45 44 22 0a 20 20 20 20 20 20 28 62 65 67 69  TED".      (begi
08d0: 6e 0a 09 28 72 65 67 69 73 74 65 72 2d 74 65 73  n..(register-tes
08e0: 74 20 2a 64 62 2a 20 31 20 22 6e 61 64 61 22 20  t *db* 1 "nada" 
08f0: 22 22 20 27 28 22 74 61 67 31 22 20 22 74 61 67  "" '("tag1" "tag
0900: 32 22 20 22 74 61 67 33 22 29 29 0a 09 28 74 65  2" "tag3"))..(te
0910: 73 74 3a 67 65 74 2d 73 74 61 74 65 20 28 64 62  st:get-state (db
0920: 3a 67 65 74 2d 74 65 73 74 2d 69 6e 66 6f 20 2a  :get-test-info *
0930: 64 62 2a 20 31 20 22 6e 61 64 61 22 20 22 22 29  db* 1 "nada" "")
0940: 29 29 29 0a 0a 28 74 65 73 74 20 22 67 65 74 2d  )))..(test "get-
0950: 6b 65 79 73 22 20 22 73 79 73 6e 61 6d 65 22 20  keys" "sysname" 
0960: 28 6b 65 79 3a 67 65 74 2d 66 69 65 6c 64 6e 61  (key:get-fieldna
0970: 6d 65 20 28 63 61 72 20 28 73 6f 72 74 20 28 64  me (car (sort (d
0980: 62 2d 67 65 74 2d 6b 65 79 73 20 2a 64 62 2a 29  b-get-keys *db*)
0990: 28 6c 61 6d 62 64 61 20 28 61 20 62 29 28 73 74  (lambda (a b)(st
09a0: 72 69 6e 67 3e 3d 3f 20 28 76 65 63 74 6f 72 2d  ring>=? (vector-
09b0: 72 65 66 20 61 20 30 29 28 76 65 63 74 6f 72 2d  ref a 0)(vector-
09c0: 72 65 66 20 62 20 30 29 29 29 29 29 29 29 0a 0a  ref b 0)))))))..
09d0: 28 64 65 66 69 6e 65 20 72 65 6d 61 72 67 73 20  (define remargs 
09e0: 28 61 72 67 73 3a 67 65 74 2d 61 72 67 73 0a 09  (args:get-args..
09f0: 09 20 27 28 22 62 61 72 22 20 22 66 6f 6f 22 20  . '("bar" "foo" 
0a00: 22 3a 72 75 6e 6e 61 6d 65 22 20 22 62 6f 62 22  ":runname" "bob"
0a10: 20 22 3a 73 79 73 6e 61 6d 65 22 20 22 75 62 75   ":sysname" "ubu
0a20: 6e 74 75 22 20 22 3a 66 73 6e 61 6d 65 22 20 22  ntu" ":fsname" "
0a30: 6e 66 73 22 20 22 3a 64 61 74 61 70 61 74 68 22  nfs" ":datapath"
0a40: 20 22 62 6c 61 68 2f 66 6f 6f 22 20 22 6e 61 64   "blah/foo" "nad
0a50: 61 22 29 0a 09 09 20 28 6c 69 73 74 20 22 3a 72  a")... (list ":r
0a60: 75 6e 6e 61 6d 65 22 20 22 3a 73 74 61 74 65 22  unname" ":state"
0a70: 20 22 3a 73 74 61 74 75 73 22 29 0a 09 09 20 28   ":status")... (
0a80: 6c 69 73 74 20 22 2d 68 22 29 0a 09 09 20 61 72  list "-h")... ar
0a90: 67 73 3a 61 72 67 2d 68 61 73 68 0a 09 09 20 30  gs:arg-hash... 0
0aa0: 29 29 0a 0a 28 74 65 73 74 20 22 72 65 67 69 73  ))..(test "regis
0ab0: 74 65 72 2d 72 75 6e 22 20 23 74 20 28 6e 75 6d  ter-run" #t (num
0ac0: 62 65 72 3f 20 28 72 65 67 69 73 74 65 72 2d 72  ber? (register-r
0ad0: 75 6e 20 2a 64 62 2a 20 28 64 62 2d 67 65 74 2d  un *db* (db-get-
0ae0: 6b 65 79 73 20 2a 64 62 2a 29 29 29 29 0a 0a 3b  keys *db*))))..;
0af0: 3b 28 74 65 73 74 20 22 75 70 64 61 74 65 2d 74  ;(test "update-t
0b00: 65 73 74 2d 69 6e 66 6f 22 20 23 74 20 28 74 65  est-info" #t (te
0b10: 73 74 2d 75 70 64 61 74 65 2d 6d 65 74 61 2d 69  st-update-meta-i
0b20: 6e 66 6f 20 2a 64 62 2a 20 31 20 22 6e 61 64 61  nfo *db* 1 "nada
0b30: 22 20 0a 28 73 65 74 65 6e 76 20 22 42 4c 41 48  " .(setenv "BLAH
0b40: 46 4f 4f 22 20 22 31 32 33 34 22 29 0a 28 75 6e  FOO" "1234").(un
0b50: 73 65 74 65 6e 76 20 22 4e 41 44 41 46 4f 4f 22  setenv "NADAFOO"
0b60: 29 0a 28 74 65 73 74 20 22 65 6e 76 20 74 65 6d  ).(test "env tem
0b70: 70 20 6f 76 65 72 72 69 64 65 73 22 20 22 78 79  p overrides" "xy
0b80: 7a 22 20 28 6c 65 74 20 28 28 70 72 65 76 76 61  z" (let ((prevva
0b90: 6c 73 20 28 61 6c 69 73 74 2d 3e 65 6e 76 2d 76  ls (alist->env-v
0ba0: 61 72 73 20 27 28 28 22 42 4c 41 48 46 4f 4f 22  ars '(("BLAHFOO"
0bb0: 20 34 33 32 31 29 28 22 4e 41 44 41 46 4f 4f 22   4321)("NADAFOO"
0bc0: 20 78 79 7a 29 29 29 29 0a 09 09 09 09 20 20 20   xyz)))).....   
0bd0: 20 20 20 20 28 72 65 73 75 6c 74 20 20 20 28 67      (result   (g
0be0: 65 74 2d 65 6e 76 69 72 6f 6e 6d 65 6e 74 2d 76  et-environment-v
0bf0: 61 72 69 61 62 6c 65 20 22 4e 41 44 41 46 4f 4f  ariable "NADAFOO
0c00: 22 29 29 29 0a 09 09 09 09 20 20 20 20 28 61 6c  "))).....    (al
0c10: 69 73 74 2d 3e 65 6e 76 2d 76 61 72 73 20 70 72  ist->env-vars pr
0c20: 65 76 76 61 6c 73 29 0a 09 09 09 09 20 20 20 20  evvals).....    
0c30: 72 65 73 75 6c 74 29 29 0a 0a 28 74 65 73 74 20  result))..(test 
0c40: 22 65 6e 76 20 72 65 73 74 6f 72 65 64 22 20 22  "env restored" "
0c50: 31 32 33 34 22 20 28 67 65 74 2d 65 6e 76 69 72  1234" (get-envir
0c60: 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c 65 20  onment-variable 
0c70: 22 42 4c 41 48 46 4f 4f 22 29 29 0a 0a 0a 28 74  "BLAHFOO"))...(t
0c80: 65 73 74 20 22 49 74 65 6d 73 20 61 73 73 6f 63  est "Items assoc
0c90: 22 20 22 45 6c 65 70 68 61 6e 74 22 20 28 63 61  " "Elephant" (ca
0ca0: 64 61 72 20 28 63 61 64 72 20 28 69 74 65 6d 2d  dar (cadr (item-
0cb0: 61 73 73 6f 63 2d 3e 69 74 65 6d 2d 6c 69 73 74  assoc->item-list
0cc0: 20 27 28 28 22 41 4e 49 4d 41 4c 22 20 22 45 6c   '(("ANIMAL" "El
0cd0: 65 70 68 61 6e 74 20 4c 69 6f 6e 22 29 28 22 53  ephant Lion")("S
0ce0: 45 41 53 4f 4e 22 20 22 53 70 72 69 6e 67 20 46  EASON" "Spring F
0cf0: 61 6c 6c 22 29 29 29 29 29 29 0a 28 73 65 74 21  all")))))).(set!
0d00: 20 2a 76 65 72 62 6f 73 69 74 79 2a 20 36 29 0a   *verbosity* 6).
0d10: 28 74 65 73 74 20 22 49 74 65 6d 73 20 61 73 73  (test "Items ass
0d20: 6f 63 22 20 27 28 29 28 69 74 65 6d 2d 61 73 73  oc" '()(item-ass
0d30: 6f 63 2d 3e 69 74 65 6d 2d 6c 69 73 74 20 27 28  oc->item-list '(
0d40: 28 22 61 22 20 22 61 20 62 20 63 20 64 22 29 28  ("a" "a b c d")(
0d50: 22 62 22 20 22 63 20 64 20 65 22 29 28 22 63 22  "b" "c d e")("c"
0d60: 20 22 22 29 28 22 64 22 29 29 29 29 0a 28 73 65   "")("d")))).(se
0d70: 74 21 20 2a 76 65 72 62 6f 73 69 74 79 2a 20 2d  t! *verbosity* -
0d80: 31 29 0a 28 74 65 73 74 20 22 49 74 65 6d 73 20  1).(test "Items 
0d90: 61 73 73 6f 63 20 65 6d 70 74 79 20 69 74 65 6d  assoc empty item
0da0: 73 22 20 27 28 29 20 20 20 28 69 74 65 6d 2d 61  s" '()   (item-a
0db0: 73 73 6f 63 2d 3e 69 74 65 6d 2d 6c 69 73 74 20  ssoc->item-list 
0dc0: 27 28 28 22 41 22 29 29 29 29 0a 28 73 65 74 21  '(("A")))).(set!
0dd0: 20 2a 76 65 72 62 6f 73 69 74 79 2a 20 31 29 0a   *verbosity* 1).
0de0: 28 74 65 73 74 20 22 49 74 65 6d 73 20 74 61 62  (test "Items tab
0df0: 6c 65 22 20 22 53 45 41 53 4f 4e 22 20 28 63 61  le" "SEASON" (ca
0e00: 61 64 61 72 20 28 69 74 65 6d 2d 74 61 62 6c 65  adar (item-table
0e10: 2d 3e 69 74 65 6d 2d 6c 69 73 74 20 27 28 28 22  ->item-list '(("
0e20: 41 4e 49 4d 41 4c 22 20 22 45 6c 65 70 68 61 6e  ANIMAL" "Elephan
0e30: 74 20 4c 69 6f 6e 22 29 28 22 53 45 41 53 4f 4e  t Lion")("SEASON
0e40: 22 20 22 53 70 72 69 6e 67 20 57 69 6e 74 65 72  " "Spring Winter
0e50: 22 29 29 29 29 29 0a 28 74 65 73 74 20 22 49 74  "))))).(test "It
0e60: 65 6d 73 20 74 61 62 6c 65 20 65 6d 70 74 79 20  ems table empty 
0e70: 69 74 65 6d 73 20 49 22 20 27 28 29 20 28 69 74  items I" '() (it
0e80: 65 6d 2d 74 61 62 6c 65 2d 3e 69 74 65 6d 2d 6c  em-table->item-l
0e90: 69 73 74 20 27 28 28 22 41 22 29 29 29 29 0a 28  ist '(("A")))).(
0ea0: 74 65 73 74 20 22 49 74 65 6d 73 20 74 61 62 6c  test "Items tabl
0eb0: 65 20 65 6d 70 74 79 20 69 74 65 6d 73 20 49 49  e empty items II
0ec0: 22 20 27 28 29 20 28 69 74 65 6d 2d 74 61 62 6c  " '() (item-tabl
0ed0: 65 2d 3e 69 74 65 6d 2d 6c 69 73 74 20 27 28 28  e->item-list '((
0ee0: 22 41 22 20 22 22 29 29 29 29 0a                 "A" "")))).