System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f23c28c93de8789ca8a6c0060cdabc0ae5c42b48:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 74 6b 74 2d 32 30 31 31 32 38  .#..# tkt-201128
0060: 63 63 38 38 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  cc88.eagle --..#
0070: 0d 0a 23 20 57 72 69 74 74 65 6e 20 62 79 20 4a  ..# Written by J
0080: 6f 65 20 4d 69 73 74 61 63 68 6b 69 6e 2e 0d 0a  oe Mistachkin...
0090: 23 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  # Released to th
00a0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00b0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00c0: 20 72 69 73 6b 21 0d 0a 23 0d 0a 23 23 23 23 23   risk!..#..#####
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 70 61  ##########....pa
0120: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 45 61  ckage require Ea
0130: 67 6c 65 0d 0a 70 61 63 6b 61 67 65 20 72 65 71  gle..package req
0140: 75 69 72 65 20 45 61 67 6c 65 2e 4c 69 62 72 61  uire Eagle.Libra
0150: 72 79 0d 0a 70 61 63 6b 61 67 65 20 72 65 71 75  ry..package requ
0160: 69 72 65 20 45 61 67 6c 65 2e 54 65 73 74 0d 0a  ire Eagle.Test..
0170: 0d 0a 72 75 6e 54 65 73 74 50 72 6f 6c 6f 67 75  ..runTestPrologu
0180: 65 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  e....###########
0190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01d0: 23 23 23 23 0d 0a 0d 0a 70 61 63 6b 61 67 65 20  ####....package 
01e0: 72 65 71 75 69 72 65 20 53 79 73 74 65 6d 2e 44  require System.D
01f0: 61 74 61 2e 53 51 4c 69 74 65 2e 54 65 73 74 0d  ata.SQLite.Test.
0200: 0a 72 75 6e 53 51 4c 69 74 65 54 65 73 74 50 72  .runSQLiteTestPr
0210: 6f 6c 6f 67 75 65 0d 0a 0d 0a 23 23 23 23 23 23  ologue....######
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e  #########....run
0270: 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74 2d 32  Test {test tkt-2
0280: 30 31 31 32 38 63 63 38 38 2d 31 2e 31 20 7b 63  01128cc88-1.1 {c
0290: 75 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 20 77  ustom function w
02a0: 69 74 68 20 62 79 74 65 5b 5d 20 61 72 67 7d 20  ith byte[] arg} 
02b0: 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 20  -setup {..  set 
02c0: 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d 32 30 31  fileName tkt-201
02d0: 31 32 38 63 63 38 38 2d 31 2e 31 2e 64 62 0d 0a  128cc88-1.1.db..
02e0: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74  } -body {..  set
02f0: 20 69 64 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f   id [object invo
0300: 6b 65 20 49 6e 74 65 72 70 72 65 74 65 72 2e 47  ke Interpreter.G
0310: 65 74 41 63 74 69 76 65 20 4e 65 78 74 49 64 5d  etActive NextId]
0320: 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  ....  unset -noc
0330: 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 73 20  omplain results 
0340: 65 72 72 6f 72 73 0d 0a 0d 0a 20 20 73 65 74 20  errors....  set 
0350: 63 6f 64 65 20 5b 63 6f 6d 70 69 6c 65 43 53 68  code [compileCSh
0360: 61 72 70 57 69 74 68 20 5b 73 75 62 73 74 20 7b  arpWith [subst {
0370: 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74  ..    using Syst
0380: 65 6d 3b 0d 0a 20 20 20 20 75 73 69 6e 67 20 53  em;..    using S
0390: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
03a0: 65 3b 0d 0a 0d 0a 20 20 20 20 6e 61 6d 65 73 70  e;....    namesp
03b0: 61 63 65 20 5f 44 79 6e 61 6d 69 63 24 7b 69 64  ace _Dynamic${id
03c0: 7d 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  }..    {..      
03d0: 5c 5b 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  \[SQLiteFunction
03e0: 28 4e 61 6d 65 20 3d 20 22 42 61 73 65 36 34 22  (Name = "Base64"
03f0: 2c 20 46 75 6e 63 54 79 70 65 20 3d 20 46 75 6e  , FuncType = Fun
0400: 63 74 69 6f 6e 54 79 70 65 2e 53 63 61 6c 61 72  ctionType.Scalar
0410: 29 5c 5d 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  )\]..      publi
0420: 63 20 63 6c 61 73 73 20 54 65 73 74 24 7b 69 64  c class Test${id
0430: 7d 20 3a 20 53 51 4c 69 74 65 46 75 6e 63 74 69  } : SQLiteFuncti
0440: 6f 6e 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  on..      {..   
0450: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
0460: 72 69 64 65 20 6f 62 6a 65 63 74 20 49 6e 76 6f  ride object Invo
0470: 6b 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 6f  ke(..          o
0480: 62 6a 65 63 74 5c 5b 5c 5d 20 61 72 67 73 0d 0a  bject\[\] args..
0490: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
04a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
04b0: 20 20 69 66 20 28 61 72 67 73 20 3d 3d 20 6e 75    if (args == nu
04c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
04d0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
04e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
04f0: 72 67 73 2e 4c 65 6e 67 74 68 20 21 3d 20 31 29  rgs.Length != 1)
0500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
0510: 74 75 72 6e 20 6e 65 77 20 41 72 67 75 6d 65 6e  turn new Argumen
0520: 74 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69 6e  tException(Strin
0530: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
0540: 20 20 20 20 20 20 20 20 20 22 6e 65 65 64 20 65           "need e
0550: 78 61 63 74 6c 79 20 6f 6e 65 20 61 72 67 75 6d  xactly one argum
0560: 65 6e 74 2c 20 67 6f 74 20 7b 30 7d 22 2c 20 61  ent, got {0}", a
0570: 72 67 73 2e 4c 65 6e 67 74 68 29 29 3b 0d 0a 0d  rgs.Length));...
0580: 0a 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63  .          objec
0590: 74 20 61 72 67 20 3d 20 61 72 67 73 5c 5b 30 5c  t arg = args\[0\
05a0: 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
05b0: 69 66 20 28 61 72 67 20 3d 3d 20 6e 75 6c 6c 29  if (arg == null)
05c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
05d0: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
05e0: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
05f0: 54 79 70 65 20 74 79 70 65 20 3d 20 61 72 67 2e  Type type = arg.
0600: 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20  GetType();....  
0610: 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
0620: 20 3d 3d 20 74 79 70 65 6f 66 28 44 42 4e 75 6c   == typeof(DBNul
0630: 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
0640: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
0650: 6d 70 74 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mpty;....       
0660: 20 20 20 69 66 20 28 74 79 70 65 20 21 3d 20 74     if (type != t
0670: 79 70 65 6f 66 28 62 79 74 65 5c 5b 5c 5d 29 29  ypeof(byte\[\]))
0680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
0690: 74 75 72 6e 20 6e 65 77 20 41 72 67 75 6d 65 6e  turn new Argumen
06a0: 74 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69 6e  tException(Strin
06b0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
06c0: 20 20 20 20 20 20 20 20 20 22 61 72 67 75 6d 65           "argume
06d0: 6e 74 20 6d 75 73 74 20 62 65 20 62 79 74 65 20  nt must be byte 
06e0: 61 72 72 61 79 2c 20 67 6f 74 20 7b 30 7d 22 2c  array, got {0}",
06f0: 20 74 79 70 65 29 29 3b 0d 0a 0d 0a 20 20 20 20   type));....    
0700: 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 6f 6e        return Con
0710: 76 65 72 74 2e 54 6f 42 61 73 65 36 34 53 74 72  vert.ToBase64Str
0720: 69 6e 67 28 28 62 79 74 65 5c 5b 5c 5d 29 20 61  ing((byte\[\]) a
0730: 72 67 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rg);..        }.
0740: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
0750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
07a0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
07b0: 20 4d 61 69 6e 28 29 0d 0a 20 20 20 20 20 20 20   Main()..       
07c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51   {..          SQ
07d0: 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 52 65 67  LiteFunction.Reg
07e0: 69 73 74 65 72 46 75 6e 63 74 69 6f 6e 28 74 79  isterFunction(ty
07f0: 70 65 6f 66 28 54 65 73 74 24 7b 69 64 7d 29 29  peof(Test${id}))
0800: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
0810: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20      }..    }..  
0820: 7d 5d 20 74 72 75 65 20 74 72 75 65 20 74 72 75  }] true true tru
0830: 65 20 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73  e results errors
0840: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0850: 69 74 65 2e 64 6c 6c 5d 0d 0a 0d 0a 20 20 23 0d  ite.dll]....  #.
0860: 0a 20 20 23 20 4e 4f 54 45 3a 20 43 6f 6d 70 69  .  # NOTE: Compi
0870: 6c 65 20 74 68 65 20 43 23 20 63 6f 64 65 20 28  le the C# code (
0880: 61 62 6f 76 65 29 20 74 6f 20 72 65 67 69 73 74  above) to regist
0890: 65 72 20 74 68 65 20 63 75 73 74 6f 6d 20 53 51  er the custom SQ
08a0: 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 0d 0a 20  Lite function.. 
08b0: 20 23 20 20 20 20 20 20 20 61 6e 64 20 74 68 65   #       and the
08c0: 6e 20 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62  n open the datab
08d0: 61 73 65 20 66 6f 72 20 74 68 69 73 20 74 65 73  ase for this tes
08e0: 74 20 63 61 73 65 20 61 6e 64 20 61 74 74 65 6d  t case and attem
08f0: 70 74 20 74 6f 20 65 78 65 63 75 74 65 0d 0a 20  pt to execute.. 
0900: 20 23 20 20 20 20 20 20 20 74 68 65 20 66 75 6e   #       the fun
0910: 63 74 69 6f 6e 2e 20 20 4e 6f 72 6d 61 6c 6c 79  ction.  Normally
0920: 2c 20 77 65 20 77 6f 75 6c 64 20 6f 70 65 6e 20  , we would open 
0930: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 20  the database in 
0940: 74 68 65 20 74 65 73 74 20 73 65 74 75 70 0d 0a  the test setup..
0950: 20 20 23 20 20 20 20 20 20 20 70 68 61 73 65 3b    #       phase;
0960: 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74 20 77   however, that w
0970: 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 63 6f 72  ill not work cor
0980: 72 65 63 74 6c 79 20 62 65 63 61 75 73 65 20 6e  rectly because n
0990: 65 77 6c 79 20 72 65 67 69 73 74 65 72 65 64 0d  ewly registered.
09a0: 0a 20 20 23 20 20 20 20 20 20 20 66 75 6e 63 74  .  #       funct
09b0: 69 6f 6e 73 20 61 72 65 20 6f 6e 6c 79 20 70 69  ions are only pi
09c0: 63 6b 65 64 20 75 70 20 61 6e 64 20 75 73 65 64  cked up and used
09d0: 20 62 79 20 64 61 74 61 62 61 73 65 73 20 6f 70   by databases op
09e0: 65 6e 65 64 20 61 66 74 65 72 20 74 68 65 79 0d  ened after they.
09f0: 0a 20 20 23 20 20 20 20 20 20 20 68 61 76 65 20  .  #       have 
0a00: 62 65 65 6e 20 72 65 67 69 73 74 65 72 65 64 2e  been registered.
0a10: 0d 0a 20 20 23 0d 0a 20 20 6c 69 73 74 20 24 63  ..  #..  list $c
0a20: 6f 64 65 20 24 72 65 73 75 6c 74 73 20 5c 0d 0a  ode $results \..
0a30: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
0a40: 66 6f 20 65 78 69 73 74 73 20 65 72 72 6f 72 73  fo exists errors
0a50: 5d 20 3f 20 24 65 72 72 6f 72 73 20 3a 20 22 22  ] ? $errors : ""
0a60: 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70  }] \..      [exp
0a70: 72 20 7b 24 63 6f 64 65 20 65 71 20 22 4f 6b 22  r {$code eq "Ok"
0a80: 20 3f 20 5b 63 61 74 63 68 20 7b 0d 0a 20 20 20   ? [catch {..   
0a90: 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e 76 6f       object invo
0aa0: 6b 65 20 5f 44 79 6e 61 6d 69 63 24 7b 69 64 7d  ke _Dynamic${id}
0ab0: 2e 54 65 73 74 24 7b 69 64 7d 20 4d 61 69 6e 0d  .Test${id} Main.
0ac0: 0a 20 20 20 20 20 20 7d 20 72 65 73 75 6c 74 5d  .      } result]
0ad0: 20 3a 20 5b 73 65 74 20 72 65 73 75 6c 74 20 22   : [set result "
0ae0: 22 5d 7d 5d 20 24 72 65 73 75 6c 74 20 5b 73 65  "]}] $result [se
0af0: 74 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65 5d  tupDb $fileName]
0b00: 20 5c 0d 0a 20 20 20 20 20 20 5b 73 71 6c 20 65   \..      [sql e
0b10: 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20  xecute -execute 
0b20: 73 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45  scalar $db "SELE
0b30: 43 54 20 42 61 73 65 36 34 28 43 41 53 54 28 4e  CT Base64(CAST(N
0b40: 55 4c 4c 20 41 53 20 42 4c 4f 42 29 29 3b 22 5d  ULL AS BLOB));"]
0b50: 20 5c 0d 0a 20 20 20 20 20 20 5b 73 71 6c 20 65   \..      [sql e
0b60: 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20  xecute -execute 
0b70: 73 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45  scalar $db "SELE
0b80: 43 54 20 42 61 73 65 36 34 28 43 41 53 54 28 27  CT Base64(CAST('
0b90: 27 20 41 53 20 42 4c 4f 42 29 29 3b 22 5d 20 5c  ' AS BLOB));"] \
0ba0: 0d 0a 20 20 20 20 20 20 5b 73 71 6c 20 65 78 65  ..      [sql exe
0bb0: 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73 63  cute -execute sc
0bc0: 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43 54  alar $db "SELECT
0bd0: 20 42 61 73 65 36 34 28 43 41 53 54 28 27 66 6f   Base64(CAST('fo
0be0: 6f 27 20 41 53 20 42 4c 4f 42 29 29 3b 22 5d 0d  o' AS BLOB));"].
0bf0: 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20  .} -cleanup {.. 
0c00: 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65   cleanupDb $file
0c10: 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20  Name....  unset 
0c20: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75  -nocomplain resu
0c30: 6c 74 20 63 6f 64 65 20 72 65 73 75 6c 74 73 20  lt code results 
0c40: 65 72 72 6f 72 73 20 69 64 20 64 62 20 66 69 6c  errors id db fil
0c50: 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72  eName..} -constr
0c60: 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 6d 6f 6e  aints {eagle mon
0c70: 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73  oBug28 command.s
0c80: 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41 20  ql compile.DATA 
0c90: 53 51 4c 69 74 65 5c 0d 0a 53 79 73 74 65 6d 2e  SQLite\..System.
0ca0: 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70  Data.SQLite comp
0cb0: 69 6c 65 43 53 68 61 72 70 7d 20 2d 6d 61 74 63  ileCSharp} -matc
0cc0: 68 20 72 65 67 65 78 70 20 2d 72 65 73 75 6c 74  h regexp -result
0cd0: 20 7b 5e 4f 6b 5c 0d 0a 53 79 73 74 65 6d 23 43   {^Ok\..System#C
0ce0: 6f 64 65 44 6f 6d 23 43 6f 6d 70 69 6c 65 72 23  odeDom#Compiler#
0cf0: 43 6f 6d 70 69 6c 65 72 52 65 73 75 6c 74 73 23  CompilerResults#
0d00: 5c 64 2b 20 5c 7b 5c 7d 20 30 20 5c 7b 5c 7d 5c  \d+ \{\} 0 \{\}\
0d10: 0d 0a 53 79 73 74 65 6d 23 44 61 74 61 23 53 51  ..System#Data#SQ
0d20: 4c 69 74 65 23 53 51 4c 69 74 65 43 6f 6e 6e 65  Lite#SQLiteConne
0d30: 63 74 69 6f 6e 23 5c 64 2b 20 5c 7b 5c 7d 20 5c  ction#\d+ \{\} \
0d40: 7b 5c 7d 20 5a 6d 39 76 24 7d 7d 0d 0a 0d 0a 23  {\} Zm9v$}}....#
0d50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
0da0: 0d 0a 72 75 6e 53 51 4c 69 74 65 54 65 73 74 45  ..runSQLiteTestE
0db0: 70 69 6c 6f 67 75 65 0d 0a 72 75 6e 54 65 73 74  pilogue..runTest
0dc0: 45 70 69 6c 6f 67 75 65 0d 0a                    Epilogue..