/ Hex Artifact Content
Login

Artifact 10c13a783de3f42a21e3e53e123b62ed0c3a1618:


0000: 23 20 32 30 31 34 20 4a 75 6e 65 20 31 37 0a 23  # 2014 June 17.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 0a 23 0a 23 20 54 68 69 73 20  ******.#.# This 
0170: 66 69 6c 65 20 69 73 20 66 6f 63 75 73 65 64 20  file is focused 
0180: 6f 6e 20 4f 4f 4d 20 65 72 72 6f 72 73 2e 0a 23  on OOM errors..#
0190: 0a 0a 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a  ..source [file j
01a0: 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  oin [file dirnam
01b0: 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d  e [info script]]
01c0: 20 66 74 73 35 5f 63 6f 6d 6d 6f 6e 2e 74 63 6c   fts5_common.tcl
01d0: 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69  ].source $testdi
01e0: 72 2f 6d 61 6c 6c 6f 63 5f 63 6f 6d 6d 6f 6e 2e  r/malloc_common.
01f0: 74 63 6c 0a 73 65 74 20 74 65 73 74 70 72 65 66  tcl.set testpref
0200: 69 78 20 66 74 73 35 66 61 75 6c 74 35 0a 0a 23  ix fts5fault5..#
0210: 20 49 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   If SQLITE_ENABL
0220: 45 5f 46 54 53 33 20 69 73 20 64 65 66 69 6e 65  E_FTS3 is define
0230: 64 2c 20 6f 6d 69 74 20 74 68 69 73 20 66 69 6c  d, omit this fil
0240: 65 2e 0a 69 66 63 61 70 61 62 6c 65 20 21 66 74  e..ifcapable !ft
0250: 73 35 20 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65  s5 {.  finish_te
0260: 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 23  st.  return.}..#
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 4f 4f 4d 20  ---------.# OOM 
02c0: 77 68 69 6c 65 20 63 72 65 61 74 69 6e 67 20 61  while creating a
02d0: 6e 20 46 54 53 35 20 74 61 62 6c 65 2e 0a 23 0a  n FTS5 table..#.
02e0: 64 6f 5f 66 61 75 6c 74 73 69 6d 5f 74 65 73 74  do_faultsim_test
02f0: 20 31 2e 31 20 2d 66 61 75 6c 74 73 20 6f 6f 6d   1.1 -faults oom
0300: 2d 74 2a 20 2d 70 72 65 70 20 7b 0a 20 20 64 62  -t* -prep {.  db
0310: 20 65 76 61 6c 20 7b 20 44 52 4f 50 20 54 41 42   eval { DROP TAB
0320: 4c 45 20 49 46 20 45 58 49 53 54 53 20 61 62 63  LE IF EXISTS abc
0330: 20 7d 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 64   }.} -body {.  d
0340: 62 20 65 76 61 6c 20 7b 20 43 52 45 41 54 45 20  b eval { CREATE 
0350: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 61 62  VIRTUAL TABLE ab
0360: 63 20 55 53 49 4e 47 20 66 74 73 35 28 78 2c 79  c USING fts5(x,y
0370: 29 20 7d 0a 7d 20 2d 74 65 73 74 20 7b 0a 20 20  ) }.} -test {.  
0380: 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 5f 72 65  faultsim_test_re
0390: 73 75 6c 74 20 7b 30 20 7b 7d 7d 0a 7d 0a 0a 0a  sult {0 {}}.}...
03a0: 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 4f 4f 4d  ----------.# OOM
03f0: 20 77 68 69 6c 65 20 77 72 69 74 69 6e 67 20 61   while writing a
0400: 20 6d 75 6c 74 69 2d 74 69 65 72 20 64 6f 63 6c   multi-tier docl
0410: 69 73 74 2d 69 6e 64 65 78 2e 20 41 6e 64 20 77  ist-index. And w
0420: 68 69 6c 65 20 72 75 6e 6e 69 6e 67 0a 23 20 69  hile running.# i
0430: 6e 74 65 67 72 69 74 79 2d 63 68 65 63 6b 20 6f  ntegrity-check o
0440: 6e 20 74 68 65 20 73 61 6d 65 2e 0a 23 0a 72 65  n the same..#.re
0450: 73 65 74 5f 64 62 0a 64 6f 5f 65 78 65 63 73 71  set_db.do_execsq
0460: 6c 5f 74 65 73 74 20 32 2e 30 20 7b 0a 20 20 43  l_test 2.0 {.  C
0470: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
0480: 42 4c 45 20 74 74 20 55 53 49 4e 47 20 66 74 73  BLE tt USING fts
0490: 35 28 78 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  5(x);.  INSERT I
04a0: 4e 54 4f 20 74 74 28 74 74 2c 20 72 61 6e 6b 29  NTO tt(tt, rank)
04b0: 20 56 41 4c 55 45 53 28 27 70 67 73 7a 27 2c 20   VALUES('pgsz', 
04c0: 33 32 29 3b 0a 7d 0a 66 61 75 6c 74 73 69 6d 5f  32);.}.faultsim_
04d0: 73 61 76 65 5f 61 6e 64 5f 63 6c 6f 73 65 0a 0a  save_and_close..
04e0: 64 6f 5f 66 61 75 6c 74 73 69 6d 5f 74 65 73 74  do_faultsim_test
04f0: 20 32 2e 31 20 2d 66 61 75 6c 74 73 20 6f 6f 6d   2.1 -faults oom
0500: 2d 74 2a 20 2d 70 72 65 70 20 7b 0a 20 20 66 61  -t* -prep {.  fa
0510: 75 6c 74 73 69 6d 5f 72 65 73 74 6f 72 65 5f 61  ultsim_restore_a
0520: 6e 64 5f 72 65 6f 70 65 6e 0a 20 20 64 62 20 65  nd_reopen.  db e
0530: 76 61 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46  val { SELECT * F
0540: 52 4f 4d 20 74 74 20 7d 0a 7d 20 2d 62 6f 64 79  ROM tt }.} -body
0550: 20 7b 0a 20 20 73 65 74 20 73 74 72 20 5b 73 74   {.  set str [st
0560: 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 62 63  ring repeat "abc
0570: 20 22 20 35 30 5d 0a 20 20 64 62 20 65 76 61 6c   " 50].  db eval
0580: 20 7b 0a 20 20 20 20 57 49 54 48 20 69 69 28 69   {.    WITH ii(i
0590: 29 20 41 53 20 28 53 45 4c 45 43 54 20 31 20 55  ) AS (SELECT 1 U
05a0: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
05b0: 69 2b 31 20 46 52 4f 4d 20 69 69 20 57 48 45 52  i+1 FROM ii WHER
05c0: 45 20 69 3c 31 30 30 29 0a 20 20 20 20 20 20 49  E i<100).      I
05d0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 74 28 72 6f  NSERT INTO tt(ro
05e0: 77 69 64 2c 20 78 29 20 53 45 4c 45 43 54 20 69  wid, x) SELECT i
05f0: 2c 20 24 73 74 72 20 46 52 4f 4d 20 69 69 3b 0a  , $str FROM ii;.
0600: 20 20 7d 0a 7d 20 2d 74 65 73 74 20 7b 0a 20 20    }.} -test {.  
0610: 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 5f 72 65  faultsim_test_re
0620: 73 75 6c 74 20 7b 30 20 7b 7d 7d 0a 7d 0a 0a 64  sult {0 {}}.}..d
0630: 6f 5f 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 20  o_faultsim_test 
0640: 32 2e 32 20 2d 66 61 75 6c 74 73 20 6f 6f 6d 2d  2.2 -faults oom-
0650: 74 2a 20 2d 62 6f 64 79 20 7b 0a 20 20 64 62 20  t* -body {.  db 
0660: 65 76 61 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e  eval { INSERT IN
0670: 54 4f 20 74 74 28 74 74 29 20 56 41 4c 55 45 53  TO tt(tt) VALUES
0680: 28 27 69 6e 74 65 67 72 69 74 79 2d 63 68 65 63  ('integrity-chec
0690: 6b 27 29 20 7d 0a 7d 20 2d 74 65 73 74 20 7b 0a  k') }.} -test {.
06a0: 20 20 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 5f    faultsim_test_
06b0: 72 65 73 75 6c 74 20 7b 30 20 7b 7d 7d 0a 7d 0a  result {0 {}}.}.
06c0: 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .#--------------
06d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 4f 4f  -----------.# OO
0710: 4d 20 77 68 69 6c 65 20 73 63 61 6e 6e 69 6e 67  M while scanning
0720: 20 66 74 73 35 76 6f 63 61 62 20 74 61 62 6c 65   fts5vocab table
0730: 73 2e 0a 23 0a 72 65 73 65 74 5f 64 62 0a 64 6f  s..#.reset_db.do
0740: 5f 74 65 73 74 20 33 2e 30 20 7b 0a 20 20 65 78  _test 3.0 {.  ex
0750: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
0760: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0770: 20 74 74 20 55 53 49 4e 47 20 66 74 73 35 28 78   tt USING fts5(x
0780: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 56 49  );.    CREATE VI
0790: 52 54 55 41 4c 20 54 41 42 4c 45 20 74 76 20 55  RTUAL TABLE tv U
07a0: 53 49 4e 47 20 66 74 73 35 76 6f 63 61 62 28 74  SING fts5vocab(t
07b0: 74 2c 20 27 72 6f 77 27 29 3b 0a 0a 20 20 20 20  t, 'row');..    
07c0: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
07d0: 41 42 4c 45 20 74 74 32 20 55 53 49 4e 47 20 66  ABLE tt2 USING f
07e0: 74 73 35 28 78 2c 20 64 65 74 61 69 6c 3d 63 6f  ts5(x, detail=co
07f0: 6c 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 56  l);.    CREATE V
0800: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 76 32  IRTUAL TABLE tv2
0810: 20 55 53 49 4e 47 20 66 74 73 35 76 6f 63 61 62   USING fts5vocab
0820: 28 74 74 32 2c 20 27 63 6f 6c 27 29 3b 0a 0a 20  (tt2, 'col');.. 
0830: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0840: 74 28 74 74 2c 20 72 61 6e 6b 29 20 56 41 4c 55  t(tt, rank) VALU
0850: 45 53 28 27 70 67 73 7a 27 2c 20 33 32 29 3b 0a  ES('pgsz', 32);.
0860: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0870: 74 74 32 28 74 74 32 2c 20 72 61 6e 6b 29 20 56  tt2(tt2, rank) V
0880: 41 4c 55 45 53 28 27 70 67 73 7a 27 2c 20 33 32  ALUES('pgsz', 32
0890: 29 3b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20  );.    BEGIN;.  
08a0: 7d 0a 0a 20 20 66 6f 72 20 7b 73 65 74 20 69 20  }..  for {set i 
08b0: 30 7d 20 7b 24 69 20 3c 20 32 30 7d 20 7b 69 6e  0} {$i < 20} {in
08c0: 63 72 20 69 7d 20 7b 0a 20 20 20 20 73 65 74 20  cr i} {.    set 
08d0: 73 74 72 20 5b 73 74 72 69 6e 67 20 72 65 70 65  str [string repe
08e0: 61 74 20 22 24 69 20 22 20 35 30 5d 0a 20 20 20  at "$i " 50].   
08f0: 20 65 78 65 63 73 71 6c 20 7b 20 49 4e 53 45 52   execsql { INSER
0900: 54 20 49 4e 54 4f 20 74 74 20 56 41 4c 55 45 53  T INTO tt VALUES
0910: 28 24 73 74 72 29 20 7d 0a 20 20 20 20 65 78 65  ($str) }.    exe
0920: 63 73 71 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e  csql { INSERT IN
0930: 54 4f 20 74 74 32 20 56 41 4c 55 45 53 28 24 73  TO tt2 VALUES($s
0940: 74 72 29 20 7d 0a 20 20 7d 0a 20 20 65 78 65 63  tr) }.  }.  exec
0950: 73 71 6c 20 43 4f 4d 4d 49 54 0a 7d 20 7b 7d 0a  sql COMMIT.} {}.
0960: 0a 64 6f 5f 66 61 75 6c 74 73 69 6d 5f 74 65 73  .do_faultsim_tes
0970: 74 20 33 2e 31 20 2d 66 61 75 6c 74 73 20 6f 6f  t 3.1 -faults oo
0980: 6d 2d 74 2a 20 2d 62 6f 64 79 20 7b 0a 20 20 64  m-t* -body {.  d
0990: 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c  b eval {.    SEL
09a0: 45 43 54 20 74 65 72 6d 20 46 52 4f 4d 20 74 76  ECT term FROM tv
09b0: 3b 0a 20 20 7d 0a 7d 20 2d 74 65 73 74 20 7b 0a  ;.  }.} -test {.
09c0: 20 20 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 5f    faultsim_test_
09d0: 72 65 73 75 6c 74 20 7b 30 20 7b 30 20 31 20 31  result {0 {0 1 1
09e0: 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
09f0: 20 31 36 20 31 37 20 31 38 20 31 39 20 32 20 33   16 17 18 19 2 3
0a00: 20 34 20 35 20 36 20 37 20 38 20 39 7d 7d 0a 7d   4 5 6 7 8 9}}.}
0a10: 0a 0a 64 6f 5f 66 61 75 6c 74 73 69 6d 5f 74 65  ..do_faultsim_te
0a20: 73 74 20 33 2e 32 20 2d 66 61 75 6c 74 73 20 6f  st 3.2 -faults o
0a30: 6f 6d 2d 74 2a 20 2d 62 6f 64 79 20 7b 0a 20 20  om-t* -body {.  
0a40: 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45  db eval {.    SE
0a50: 4c 45 43 54 20 74 65 72 6d 20 46 52 4f 4d 20 74  LECT term FROM t
0a60: 76 20 57 48 45 52 45 20 74 65 72 6d 20 42 45 54  v WHERE term BET
0a70: 57 45 45 4e 20 27 31 27 20 41 4e 44 20 27 32 27  WEEN '1' AND '2'
0a80: 3b 0a 20 20 7d 0a 7d 20 2d 74 65 73 74 20 7b 0a  ;.  }.} -test {.
0a90: 20 20 66 61 75 6c 74 73 69 6d 5f 74 65 73 74 5f    faultsim_test_
0aa0: 72 65 73 75 6c 74 20 7b 30 20 7b 31 20 31 30 20  result {0 {1 10 
0ab0: 31 31 20 31 32 20 31 33 20 31 34 20 31 35 20 31  11 12 13 14 15 1
0ac0: 36 20 31 37 20 31 38 20 31 39 20 32 7d 7d 0a 7d  6 17 18 19 2}}.}
0ad0: 0a 0a 62 72 65 61 6b 70 6f 69 6e 74 0a 64 6f 5f  ..breakpoint.do_
0ae0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 33  execsql_test 3.3
0af0: 2e 30 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .0 {.  SELECT * 
0b00: 46 52 4f 4d 20 74 76 32 3b 0a 7d 20 7b 0a 20 20  FROM tv2;.} {.  
0b10: 30 20 78 20 31 20 7b 7d 20 31 20 78 20 31 20 7b  0 x 1 {} 1 x 1 {
0b20: 7d 20 31 30 20 78 20 31 20 7b 7d 20 31 31 20 78  } 10 x 1 {} 11 x
0b30: 20 31 20 7b 7d 20 31 32 20 78 20 31 20 7b 7d 20   1 {} 12 x 1 {} 
0b40: 31 33 20 78 20 31 20 7b 7d 20 20 20 20 20 20 20  13 x 1 {}       
0b50: 20 0a 20 20 31 34 20 78 20 31 20 7b 7d 20 31 35   .  14 x 1 {} 15
0b60: 20 78 20 31 20 7b 7d 20 31 36 20 78 20 31 20 7b   x 1 {} 16 x 1 {
0b70: 7d 20 31 37 20 78 20 31 20 7b 7d 20 31 38 20 78  } 17 x 1 {} 18 x
0b80: 20 31 20 7b 7d 20 31 39 20 20 78 20 31 20 7b 7d   1 {} 19  x 1 {}
0b90: 20 20 20 20 20 0a 20 20 32 20 78 20 31 20 7b 7d       .  2 x 1 {}
0ba0: 20 33 20 78 20 31 20 7b 7d 20 34 20 78 20 31 20   3 x 1 {} 4 x 1 
0bb0: 7b 7d 20 35 20 78 20 31 20 7b 7d 20 36 20 78 20  {} 5 x 1 {} 6 x 
0bc0: 31 20 7b 7d 20 37 20 78 20 31 20 7b 7d 20 38 20  1 {} 7 x 1 {} 8 
0bd0: 78 20 31 20 7b 7d 20 20 20 0a 20 20 39 20 78 20  x 1 {}   .  9 x 
0be0: 31 20 7b 7d 0a 7d 0a 64 6f 5f 66 61 75 6c 74 73  1 {}.}.do_faults
0bf0: 69 6d 5f 74 65 73 74 20 33 2e 33 20 2d 66 61 75  im_test 3.3 -fau
0c00: 6c 74 73 20 6f 6f 6d 2d 74 2a 20 2d 62 6f 64 79  lts oom-t* -body
0c10: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20   {.  db eval {. 
0c20: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
0c30: 20 74 76 32 3b 0a 20 20 7d 0a 7d 20 2d 74 65 73   tv2;.  }.} -tes
0c40: 74 20 7b 0a 20 20 66 61 75 6c 74 73 69 6d 5f 74  t {.  faultsim_t
0c50: 65 73 74 5f 72 65 73 75 6c 74 20 5b 6c 69 73 74  est_result [list
0c60: 20 30 20 5b 6c 69 73 74 20 20 20 20 20 20 20 20   0 [list        
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c80: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
0c90: 20 20 20 30 20 78 20 31 20 7b 7d 20 31 20 78 20     0 x 1 {} 1 x 
0ca0: 31 20 7b 7d 20 31 30 20 78 20 31 20 7b 7d 20 31  1 {} 10 x 1 {} 1
0cb0: 31 20 78 20 31 20 7b 7d 20 31 32 20 78 20 31 20  1 x 1 {} 12 x 1 
0cc0: 7b 7d 20 31 33 20 78 20 31 20 7b 7d 20 20 20 20  {} 13 x 1 {}    
0cd0: 20 20 20 20 5c 0a 20 20 20 20 20 20 31 34 20 78      \.      14 x
0ce0: 20 31 20 7b 7d 20 31 35 20 78 20 31 20 7b 7d 20   1 {} 15 x 1 {} 
0cf0: 31 36 20 78 20 31 20 7b 7d 20 31 37 20 78 20 31  16 x 1 {} 17 x 1
0d00: 20 7b 7d 20 31 38 20 78 20 31 20 7b 7d 20 31 39   {} 18 x 1 {} 19
0d10: 20 20 78 20 31 20 7b 7d 20 20 20 20 20 5c 0a 20    x 1 {}     \. 
0d20: 20 20 20 20 20 32 20 78 20 31 20 7b 7d 20 33 20       2 x 1 {} 3 
0d30: 78 20 31 20 7b 7d 20 34 20 78 20 31 20 7b 7d 20  x 1 {} 4 x 1 {} 
0d40: 35 20 78 20 31 20 7b 7d 20 36 20 78 20 31 20 7b  5 x 1 {} 6 x 1 {
0d50: 7d 20 37 20 78 20 31 20 7b 7d 20 38 20 78 20 31  } 7 x 1 {} 8 x 1
0d60: 20 7b 7d 20 20 20 5c 0a 20 20 20 20 20 20 39 20   {}   \.      9 
0d70: 78 20 31 20 7b 7d 0a 20 20 5d 5d 0a 7d 0a 0a 0a  x 1 {}.  ]].}...
0d80: 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a 0a        .finish_test..