System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 7f9ee2fbd046a9618b4628c6defe34d23733127a:


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 38 35 62 38 32 34  .#..# tkt-85b824
0060: 62 37 33 36 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  b736.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 38  Test {test tkt-8
0280: 35 62 38 32 34 62 37 33 36 2d 31 2e 31 20 7b 53  5b824b736-1.1 {S
0290: 51 4c 69 74 65 56 61 6c 75 65 2e 47 65 74 53 74  QLiteValue.GetSt
02a0: 72 69 6e 67 20 72 65 74 75 72 6e 20 76 61 6c 75  ring return valu
02b0: 65 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73  e} -setup {..  s
02c0: 65 74 20 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d  et fileName tkt-
02d0: 38 35 62 38 32 34 62 37 33 36 2d 31 2e 31 2e 64  85b824b736-1.1.d
02e0: 62 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  b..} -body {..  
02f0: 73 65 74 20 69 64 20 5b 6f 62 6a 65 63 74 20 69  set id [object i
0300: 6e 76 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65  nvoke Interprete
0310: 72 2e 47 65 74 41 63 74 69 76 65 20 4e 65 78 74  r.GetActive Next
0320: 49 64 5d 0d 0a 20 20 73 65 74 20 64 61 74 61 53  Id]..  set dataS
0330: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  ource [file join
0340: 20 5b 67 65 74 44 61 74 61 62 61 73 65 44 69 72   [getDatabaseDir
0350: 65 63 74 6f 72 79 5d 20 24 66 69 6c 65 4e 61 6d  ectory] $fileNam
0360: 65 5d 0d 0a 0d 0a 20 20 73 65 74 20 73 71 6c 28  e]....  set sql(
0370: 31 29 20 7b 20 5c 0d 0a 20 20 20 20 43 52 45 41  1) { \..    CREA
0380: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0390: 20 75 24 7b 69 64 7d 20 55 53 49 4e 47 20 6d 6f   u${id} USING mo
03a0: 64 24 7b 69 64 7d 3b 20 5c 0d 0a 20 20 7d 0d 0a  d${id}; \..  }..
03b0: 0d 0a 20 20 73 65 74 20 73 71 6c 28 32 29 20 7b  ..  set sql(2) {
03c0: 20 5c 0d 0a 20 20 20 20 55 50 44 41 54 45 20 75   \..    UPDATE u
03d0: 24 7b 69 64 7d 20 53 45 54 20 78 20 3d 20 78 20  ${id} SET x = x 
03e0: 7c 7c 20 27 2d 73 74 72 69 6e 67 27 20 57 48 45  || '-string' WHE
03f0: 52 45 20 78 20 49 4e 20 28 27 6f 6e 65 27 2c 20  RE x IN ('one', 
0400: 27 74 77 6f 27 29 3b 20 5c 0d 0a 20 20 7d 0d 0a  'two'); \..  }..
0410: 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  ..  unset -nocom
0420: 70 6c 61 69 6e 20 72 65 73 75 6c 74 73 20 65 72  plain results er
0430: 72 6f 72 73 0d 0a 0d 0a 20 20 73 65 74 20 63 6f  rors....  set co
0440: 64 65 20 5b 63 6f 6d 70 69 6c 65 43 53 68 61 72  de [compileCShar
0450: 70 57 69 74 68 20 5b 73 75 62 73 74 20 7b 0d 0a  pWith [subst {..
0460: 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d      using System
0470: 3b 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73  ;..    using Sys
0480: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 3b  tem.Collections;
0490: 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74  ..    using Syst
04a0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 3b 0d  em.Data.SQLite;.
04b0: 0a 20 20 20 20 75 73 69 6e 67 20 45 61 67 6c 65  .    using Eagle
04c0: 2e 5f 43 6f 6e 74 61 69 6e 65 72 73 2e 50 75 62  ._Containers.Pub
04d0: 6c 69 63 3b 0d 0a 0d 0a 20 20 20 20 6e 61 6d 65  lic;....    name
04e0: 73 70 61 63 65 20 5f 44 79 6e 61 6d 69 63 24 7b  space _Dynamic${
04f0: 69 64 7d 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  id}..    {..    
0500: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
0510: 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
0520: 6c 65 54 65 73 74 24 7b 69 64 7d 20 3a 20 53 51  leTest${id} : SQ
0530: 4c 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72  LiteModuleEnumer
0540: 61 62 6c 65 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  able..      {.. 
0550: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
0560: 72 69 6e 67 20 52 65 73 75 6c 74 20 3d 20 53 74  ring Result = St
0570: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 0d 0a 20  ring.Empty;.... 
0580: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
0590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
05d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
05e0: 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 54 65 73   SQLiteModuleTes
05f0: 74 24 7b 69 64 7d 28 0d 0a 20 20 20 20 20 20 20  t${id}(..       
0600: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
0610: 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d  .          IEnum
0620: 65 72 61 62 6c 65 20 65 6e 75 6d 65 72 61 62 6c  erable enumerabl
0630: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
0640: 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
0650: 28 6e 61 6d 65 2c 20 65 6e 75 6d 65 72 61 62 6c  (name, enumerabl
0660: 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
0670: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
0680: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
0690: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
06f0: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
0700: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
0710: 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20   Update(..      
0720: 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
0730: 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20  lTable table,.. 
0740: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
0750: 61 6c 75 65 5c 5b 5c 5d 20 76 61 6c 75 65 73 2c  alue\[\] values,
0760: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
0770: 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
0780: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
0790: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
07a0: 20 28 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c   ((values != nul
07b0: 6c 29 20 26 26 20 28 76 61 6c 75 65 73 2e 4c 65  l) && (values.Le
07c0: 6e 67 74 68 20 3e 20 30 29 29 0d 0a 20 20 20 20  ngth > 0))..    
07d0: 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 2b          Result +
07e0: 3d 20 22 20 22 20 2b 20 76 61 6c 75 65 73 5c 5b  = " " + values\[
07f0: 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 20 2d 20  values.Length - 
0800: 31 5c 5d 2e 47 65 74 53 74 72 69 6e 67 28 29 3b  1\].GetString();
0810: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
0820: 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
0830: 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20  Code.Ok;..      
0840: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
0850: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
08a0: 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
08b0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 54 65 73  static class Tes
08c0: 74 24 7b 69 64 7d 0d 0a 20 20 20 20 20 20 7b 0d  t${id}..      {.
08d0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
08e0: 73 74 61 74 69 63 20 53 74 72 69 6e 67 4c 69 73  static StringLis
08f0: 74 20 47 65 74 4c 69 73 74 28 70 61 72 61 6d 73  t GetList(params
0900: 20 73 74 72 69 6e 67 5c 5b 5c 5d 20 73 74 72 69   string\[\] stri
0910: 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ngs)..        {.
0920: 0a 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e  .          Strin
0930: 67 4c 69 73 74 20 72 65 73 75 6c 74 20 3d 20 6e  gList result = n
0940: 65 77 20 53 74 72 69 6e 67 4c 69 73 74 28 29 3b  ew StringList();
0950: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 75 73  ....          us
0960: 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ing (SQLiteConne
0970: 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
0980: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e   = new SQLiteCon
0990: 6e 65 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  nection(..      
09a0: 20 20 20 20 20 20 20 20 22 44 61 74 61 20 53 6f          "Data So
09b0: 75 72 63 65 3d 24 7b 64 61 74 61 53 6f 75 72 63  urce=${dataSourc
09c0: 65 7d 3b 5b 67 65 74 54 65 73 74 50 72 6f 70 65  e};[getTestPrope
09d0: 72 74 69 65 73 5d 22 29 29 0d 0a 20 20 20 20 20  rties]"))..     
09e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
09f0: 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 4f      connection.O
0a00: 70 65 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  pen();....      
0a10: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
0a20: 6c 65 54 65 73 74 24 7b 69 64 7d 20 6d 6f 64 75  leTest${id} modu
0a30: 6c 65 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 4d  le = new SQLiteM
0a40: 6f 64 75 6c 65 54 65 73 74 24 7b 69 64 7d 28 0d  oduleTest${id}(.
0a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0a60: 20 22 6d 6f 64 24 7b 69 64 7d 22 2c 20 73 74 72   "mod${id}", str
0a70: 69 6e 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ings);....      
0a80: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
0a90: 2e 43 72 65 61 74 65 4d 6f 64 75 6c 65 28 6d 6f  .CreateModule(mo
0aa0: 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  dule);....      
0ab0: 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c        using (SQL
0ac0: 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f 6d 6d 61  iteCommand comma
0ad0: 6e 64 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  nd = connection.
0ae0: 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 29 29  CreateCommand())
0af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
0b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
0b10: 6f 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64 54 65  ommand.CommandTe
0b20: 78 74 20 3d 20 22 5b 73 75 62 73 74 20 24 7b 73  xt = "[subst ${s
0b30: 71 6c 28 31 29 7d 5d 22 3b 0d 0a 20 20 20 20 20  ql(1)}]";..     
0b40: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
0b50: 41 64 64 28 63 6f 6d 6d 61 6e 64 2e 45 78 65 63  Add(command.Exec
0b60: 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 2e 54 6f  uteNonQuery().To
0b70: 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20  String());..    
0b80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
0b90: 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
0ba0: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f  SQLiteCommand co
0bb0: 6d 6d 61 6e 64 20 3d 20 63 6f 6e 6e 65 63 74 69  mmand = connecti
0bc0: 6f 6e 2e 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64  on.CreateCommand
0bd0: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
0be0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0bf0: 20 20 63 6f 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e    command.Comman
0c00: 64 54 65 78 74 20 3d 20 22 5b 73 75 62 73 74 20  dText = "[subst 
0c10: 24 7b 73 71 6c 28 32 29 7d 5d 22 3b 0d 0a 20 20  ${sql(2)}]";..  
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
0c30: 6c 74 2e 41 64 64 28 63 6f 6d 6d 61 6e 64 2e 45  lt.Add(command.E
0c40: 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29  xecuteNonQuery()
0c50: 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
0c60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
0c80: 6c 74 2e 41 64 64 28 6d 6f 64 75 6c 65 2e 52 65  lt.Add(module.Re
0c90: 73 75 6c 74 2e 54 72 69 6d 28 29 29 3b 0d 0a 20  sult.Trim());.. 
0ca0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65             conne
0cb0: 63 74 69 6f 6e 2e 43 6c 6f 73 65 28 29 3b 0d 0a  ction.Close();..
0cc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
0cd0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
0ce0: 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
0cf0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
0d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0d50: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
0d60: 6f 69 64 20 4d 61 69 6e 28 29 0d 0a 20 20 20 20  oid Main()..    
0d70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
0d80: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
0d90: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
0da0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 5d    }..    }..  }]
0db0: 20 74 72 75 65 20 74 72 75 65 20 74 72 75 65 20   true true true 
0dc0: 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20 5b  results errors [
0dd0: 6c 69 73 74 20 53 79 73 74 65 6d 2e 44 61 74 61  list System.Data
0de0: 2e 53 51 4c 69 74 65 2e 64 6c 6c 20 45 61 67 6c  .SQLite.dll Eagl
0df0: 65 2e 64 6c 6c 5d 5d 0d 0a 0d 0a 20 20 6c 69 73  e.dll]]....  lis
0e00: 74 20 24 63 6f 64 65 20 24 72 65 73 75 6c 74 73  t $code $results
0e10: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
0e20: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 65 72  {[info exists er
0e30: 72 6f 72 73 5d 20 3f 20 24 65 72 72 6f 72 73 20  rors] ? $errors 
0e40: 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20  : ""}] \..      
0e50: 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 65 71 20  [expr {$code eq 
0e60: 22 4f 6b 22 20 3f 20 5b 63 61 74 63 68 20 7b 0d  "Ok" ? [catch {.
0e70: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
0e80: 69 6e 76 6f 6b 65 20 5f 44 79 6e 61 6d 69 63 24  invoke _Dynamic$
0e90: 7b 69 64 7d 2e 54 65 73 74 24 7b 69 64 7d 20 47  {id}.Test${id} G
0ea0: 65 74 4c 69 73 74 20 6f 6e 65 20 74 77 6f 20 74  etList one two t
0eb0: 68 72 65 65 20 34 20 35 2e 30 0d 0a 20 20 20 20  hree 4 5.0..    
0ec0: 20 20 7d 20 72 65 73 75 6c 74 5d 20 3a 20 5b 73    } result] : [s
0ed0: 65 74 20 72 65 73 75 6c 74 20 22 22 5d 7d 5d 20  et result ""]}] 
0ee0: 24 72 65 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61  $result..} -clea
0ef0: 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70  nup {..  cleanup
0f00: 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a  Db $fileName....
0f10: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
0f20: 61 69 6e 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ain result code 
0f30: 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20 73  results errors s
0f40: 71 6c 20 64 61 74 61 53 6f 75 72 63 65 20 69 64  ql dataSource id
0f50: 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f   fileName..} -co
0f60: 6e 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65  nstraints {eagle
0f70: 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20   command.object 
0f80: 6d 6f 6e 6f 42 75 67 32 38 20 6d 6f 6e 6f 43 72  monoBug28 monoCr
0f90: 61 73 68 32 31 31 20 63 6f 6d 6d 61 6e 64 2e 73  ash211 command.s
0fa0: 71 6c 5c 0d 0a 63 6f 6d 70 69 6c 65 2e 44 41 54  ql\..compile.DAT
0fb0: 41 20 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e  A SQLite System.
0fc0: 44 61 74 61 2e 53 51 4c 69 74 65 20 53 51 4c 69  Data.SQLite SQLi
0fd0: 74 65 49 6e 74 65 72 6f 70 5c 0d 0a 64 65 66 69  teInterop\..defi
0fe0: 6e 65 43 6f 6e 73 74 61 6e 74 2e 53 79 73 74 65  neConstant.Syste
0ff0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 49 4e  m.Data.SQLite.IN
1000: 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
1010: 42 4c 45 20 63 6f 6d 70 69 6c 65 43 53 68 61 72  BLE compileCShar
1020: 70 7d 20 2d 6d 61 74 63 68 20 5c 0d 0a 72 65 67  p} -match \..reg
1030: 65 78 70 20 2d 72 65 73 75 6c 74 20 5b 73 74 72  exp -result [str
1040: 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c 6e  ing map [list \n
1050: 20 5c 72 5c 6e 5d 20 7b 5e 4f 6b 5c 0d 0a 53 79   \r\n] {^Ok\..Sy
1060: 73 74 65 6d 23 43 6f 64 65 44 6f 6d 23 43 6f 6d  stem#CodeDom#Com
1070: 70 69 6c 65 72 23 43 6f 6d 70 69 6c 65 72 52 65  piler#CompilerRe
1080: 73 75 6c 74 73 23 5c 64 2b 20 5c 7b 5c 7d 20 30  sults#\d+ \{\} 0
1090: 20 5c 7b 30 20 32 20 5c 7b 6f 6e 65 2d 73 74 72   \{0 2 \{one-str
10a0: 69 6e 67 5c 0d 0a 74 77 6f 2d 73 74 72 69 6e 67  ing\..two-string
10b0: 5c 7d 5c 7d 24 7d 5d 7d 0d 0a 0d 0a 23 23 23 23  \}\}$}]}....####
10c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1100: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
1110: 75 6e 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74  unTest {test tkt
1120: 2d 38 35 62 38 32 34 62 37 33 36 2d 31 2e 32 20  -85b824b736-1.2 
1130: 7b 53 51 4c 69 74 65 56 61 6c 75 65 2e 47 65 74  {SQLiteValue.Get
1140: 42 6c 6f 62 20 72 65 74 75 72 6e 20 76 61 6c 75  Blob return valu
1150: 65 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73  e} -setup {..  s
1160: 65 74 20 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d  et fileName tkt-
1170: 38 35 62 38 32 34 62 37 33 36 2d 31 2e 32 2e 64  85b824b736-1.2.d
1180: 62 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  b..} -body {..  
1190: 73 65 74 20 69 64 20 5b 6f 62 6a 65 63 74 20 69  set id [object i
11a0: 6e 76 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65  nvoke Interprete
11b0: 72 2e 47 65 74 41 63 74 69 76 65 20 4e 65 78 74  r.GetActive Next
11c0: 49 64 5d 0d 0a 20 20 73 65 74 20 64 61 74 61 53  Id]..  set dataS
11d0: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  ource [file join
11e0: 20 5b 67 65 74 44 61 74 61 62 61 73 65 44 69 72   [getDatabaseDir
11f0: 65 63 74 6f 72 79 5d 20 24 66 69 6c 65 4e 61 6d  ectory] $fileNam
1200: 65 5d 0d 0a 0d 0a 20 20 73 65 74 20 73 71 6c 28  e]....  set sql(
1210: 31 29 20 7b 20 5c 0d 0a 20 20 20 20 43 52 45 41  1) { \..    CREA
1220: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
1230: 20 75 24 7b 69 64 7d 20 55 53 49 4e 47 20 6d 6f   u${id} USING mo
1240: 64 24 7b 69 64 7d 3b 20 5c 0d 0a 20 20 7d 0d 0a  d${id}; \..  }..
1250: 0d 0a 20 20 73 65 74 20 73 71 6c 28 32 29 20 7b  ..  set sql(2) {
1260: 20 5c 0d 0a 20 20 20 20 55 50 44 41 54 45 20 75   \..    UPDATE u
1270: 24 7b 69 64 7d 20 53 45 54 20 78 20 3d 20 78 20  ${id} SET x = x 
1280: 7c 7c 20 27 2d 62 6c 6f 62 27 20 57 48 45 52 45  || '-blob' WHERE
1290: 20 78 20 49 4e 20 28 27 6f 6e 65 27 2c 20 27 74   x IN ('one', 't
12a0: 77 6f 27 29 3b 20 5c 0d 0a 20 20 7d 0d 0a 0d 0a  wo'); \..  }....
12b0: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
12c0: 61 69 6e 20 72 65 73 75 6c 74 73 20 65 72 72 6f  ain results erro
12d0: 72 73 0d 0a 0d 0a 20 20 73 65 74 20 63 6f 64 65  rs....  set code
12e0: 20 5b 63 6f 6d 70 69 6c 65 43 53 68 61 72 70 57   [compileCSharpW
12f0: 69 74 68 20 5b 73 75 62 73 74 20 7b 0d 0a 20 20  ith [subst {..  
1300: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 3b 0d    using System;.
1310: 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65  .    using Syste
1320: 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 3b 0d 0a  m.Collections;..
1330: 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d      using System
1340: 2e 44 61 74 61 2e 53 51 4c 69 74 65 3b 0d 0a 20  .Data.SQLite;.. 
1350: 20 20 20 75 73 69 6e 67 20 45 61 67 6c 65 2e 5f     using Eagle._
1360: 43 6f 6e 74 61 69 6e 65 72 73 2e 50 75 62 6c 69  Containers.Publi
1370: 63 3b 0d 0a 0d 0a 20 20 20 20 6e 61 6d 65 73 70  c;....    namesp
1380: 61 63 65 20 5f 44 79 6e 61 6d 69 63 24 7b 69 64  ace _Dynamic${id
1390: 7d 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  }..    {..      
13a0: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
13b0: 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ass SQLiteModule
13c0: 54 65 73 74 24 7b 69 64 7d 20 3a 20 53 51 4c 69  Test${id} : SQLi
13d0: 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61 62  teModuleEnumerab
13e0: 6c 65 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  le..      {..   
13f0: 20 20 20 20 20 70 75 62 6c 69 63 20 42 79 74 65       public Byte
1400: 4c 69 73 74 20 52 65 73 75 6c 74 20 3d 20 6e 65  List Result = ne
1410: 77 20 42 79 74 65 4c 69 73 74 28 29 3b 0d 0a 0d  w ByteList();...
1420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1470: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1480: 69 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 54  ic SQLiteModuleT
1490: 65 73 74 24 7b 69 64 7d 28 0d 0a 20 20 20 20 20  est${id}(..     
14a0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
14b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e  ,..          IEn
14c0: 75 6d 65 72 61 62 6c 65 20 65 6e 75 6d 65 72 61  umerable enumera
14d0: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ble..          )
14e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62 61  ..          : ba
14f0: 73 65 28 6e 61 6d 65 2c 20 65 6e 75 6d 65 72 61  se(name, enumera
1500: 62 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ble)..        {.
1510: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f  .          // do
1520: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
1530: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1580: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1590: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
15a0: 64 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  de SQLiteErrorCo
15b0: 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20  de Update(..    
15c0: 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
15d0: 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d  ualTable table,.
15e0: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
15f0: 65 56 61 6c 75 65 5c 5b 5c 5d 20 76 61 6c 75 65  eValue\[\] value
1600: 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  s,..          re
1610: 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
1620: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1630: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1640: 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d 20 6e  if ((values != n
1650: 75 6c 6c 29 20 26 26 20 28 76 61 6c 75 65 73 2e  ull) && (values.
1660: 4c 65 6e 67 74 68 20 3e 20 30 29 29 0d 0a 20 20  Length > 0))..  
1670: 20 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74            Result
1680: 2e 41 64 64 52 61 6e 67 65 28 76 61 6c 75 65 73  .AddRange(values
1690: 5c 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 20  \[values.Length 
16a0: 2d 20 31 5c 5d 2e 47 65 74 42 6c 6f 62 28 29 29  - 1\].GetBlob())
16b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
16c0: 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
16d0: 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
16e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
16f0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
1700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1740: 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
1750: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 54 65   static class Te
1760: 73 74 24 7b 69 64 7d 0d 0a 20 20 20 20 20 20 7b  st${id}..      {
1770: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1780: 20 73 74 61 74 69 63 20 42 79 74 65 4c 69 73 74   static ByteList
1790: 20 47 65 74 4c 69 73 74 28 70 61 72 61 6d 73 20   GetList(params 
17a0: 73 74 72 69 6e 67 5c 5b 5c 5d 20 73 74 72 69 6e  string\[\] strin
17b0: 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  gs)..        {..
17c0: 20 20 20 20 20 20 20 20 20 20 42 79 74 65 4c 69            ByteLi
17d0: 73 74 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  st result = new 
17e0: 42 79 74 65 4c 69 73 74 28 29 3b 0d 0a 0d 0a 20  ByteList();.... 
17f0: 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
1800: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1810: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65   connection = ne
1820: 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  w SQLiteConnecti
1830: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
1840: 20 20 20 22 44 61 74 61 20 53 6f 75 72 63 65 3d     "Data Source=
1850: 24 7b 64 61 74 61 53 6f 75 72 63 65 7d 3b 5b 67  ${dataSource};[g
1860: 65 74 54 65 73 74 50 72 6f 70 65 72 74 69 65 73  etTestProperties
1870: 5d 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ]"))..          
1880: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
1890: 6f 6e 6e 65 63 74 69 6f 6e 2e 4f 70 65 6e 28 29  onnection.Open()
18a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
18b0: 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 54 65 73   SQLiteModuleTes
18c0: 74 24 7b 69 64 7d 20 6d 6f 64 75 6c 65 20 3d 20  t${id} module = 
18d0: 6e 65 77 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  new SQLiteModule
18e0: 54 65 73 74 24 7b 69 64 7d 28 0d 0a 20 20 20 20  Test${id}(..    
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 6f 64              "mod
1900: 24 7b 69 64 7d 22 2c 20 73 74 72 69 6e 67 73 29  ${id}", strings)
1910: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1920: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 43 72 65 61   connection.Crea
1930: 74 65 4d 6f 64 75 6c 65 28 6d 6f 64 75 6c 65 29  teModule(module)
1940: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1950: 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f   using (SQLiteCo
1960: 6d 6d 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 3d 20  mmand command = 
1970: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 43 72 65 61 74  connection.Creat
1980: 65 43 6f 6d 6d 61 6e 64 28 29 29 0d 0a 20 20 20  eCommand())..   
1990: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19a0: 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e            comman
19b0: 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20  d.CommandText = 
19c0: 22 5b 73 75 62 73 74 20 24 7b 73 71 6c 28 31 29  "[subst ${sql(1)
19d0: 7d 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  }]";..          
19e0: 20 20 20 20 72 65 73 75 6c 74 2e 41 64 64 28 28      result.Add((
19f0: 62 79 74 65 29 63 6f 6d 6d 61 6e 64 2e 45 78 65  byte)command.Exe
1a00: 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 29 3b  cuteNonQuery());
1a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  ...            u
1a30: 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d  sing (SQLiteComm
1a40: 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 3d 20 63 6f  and command = co
1a50: 6e 6e 65 63 74 69 6f 6e 2e 43 72 65 61 74 65 43  nnection.CreateC
1a60: 6f 6d 6d 61 6e 64 28 29 29 0d 0a 20 20 20 20 20  ommand())..     
1a70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a80: 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 2e          command.
1a90: 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20 22 5b  CommandText = "[
1aa0: 73 75 62 73 74 20 24 7b 73 71 6c 28 32 29 7d 5d  subst ${sql(2)}]
1ab0: 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
1ac0: 20 20 72 65 73 75 6c 74 2e 41 64 64 28 28 62 79    result.Add((by
1ad0: 74 65 29 63 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  te)command.Execu
1ae0: 74 65 4e 6f 6e 51 75 65 72 79 28 29 29 3b 0d 0a  teNonQuery());..
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73  .            res
1b10: 75 6c 74 2e 41 64 64 52 61 6e 67 65 28 6d 6f 64  ult.AddRange(mod
1b20: 75 6c 65 2e 52 65 73 75 6c 74 29 3b 0d 0a 20 20  ule.Result);..  
1b30: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
1b40: 74 69 6f 6e 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20  tion.Close();.. 
1b50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1b60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1b70: 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1b80: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1be0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1bf0: 69 64 20 4d 61 69 6e 28 29 0d 0a 20 20 20 20 20  id Main()..     
1c00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c10: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
1c20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c30: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 5d 20   }..    }..  }] 
1c40: 74 72 75 65 20 74 72 75 65 20 74 72 75 65 20 72  true true true r
1c50: 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20 5b 6c  esults errors [l
1c60: 69 73 74 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ist System.Data.
1c70: 53 51 4c 69 74 65 2e 64 6c 6c 20 45 61 67 6c 65  SQLite.dll Eagle
1c80: 2e 64 6c 6c 5d 5d 0d 0a 0d 0a 20 20 6c 69 73 74  .dll]]....  list
1c90: 20 24 63 6f 64 65 20 24 72 65 73 75 6c 74 73 20   $code $results 
1ca0: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
1cb0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 65 72 72  [info exists err
1cc0: 6f 72 73 5d 20 3f 20 24 65 72 72 6f 72 73 20 3a  ors] ? $errors :
1cd0: 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 5b   ""}] \..      [
1ce0: 65 78 70 72 20 7b 24 63 6f 64 65 20 65 71 20 22  expr {$code eq "
1cf0: 4f 6b 22 20 3f 20 5b 63 61 74 63 68 20 7b 0d 0a  Ok" ? [catch {..
1d00: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69          object i
1d10: 6e 76 6f 6b 65 20 5f 44 79 6e 61 6d 69 63 24 7b  nvoke _Dynamic${
1d20: 69 64 7d 2e 54 65 73 74 24 7b 69 64 7d 20 47 65  id}.Test${id} Ge
1d30: 74 4c 69 73 74 20 6f 6e 65 20 74 77 6f 20 74 68  tList one two th
1d40: 72 65 65 20 34 20 35 2e 30 0d 0a 20 20 20 20 20  ree 4 5.0..     
1d50: 20 7d 20 72 65 73 75 6c 74 5d 20 3a 20 5b 73 65   } result] : [se
1d60: 74 20 72 65 73 75 6c 74 20 22 22 5d 7d 5d 20 24  t result ""]}] $
1d70: 72 65 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61 6e  result..} -clean
1d80: 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 44  up {..  cleanupD
1d90: 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20  b $fileName.... 
1da0: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
1db0: 69 6e 20 72 65 73 75 6c 74 20 63 6f 64 65 20 72  in result code r
1dc0: 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20 73 71  esults errors sq
1dd0: 6c 20 64 61 74 61 53 6f 75 72 63 65 20 69 64 20  l dataSource id 
1de0: 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e  fileName..} -con
1df0: 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20  straints {eagle 
1e00: 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20 6d  command.object m
1e10: 6f 6e 6f 42 75 67 32 38 20 6d 6f 6e 6f 43 72 61  onoBug28 monoCra
1e20: 73 68 32 31 31 20 63 6f 6d 6d 61 6e 64 2e 73 71  sh211 command.sq
1e30: 6c 5c 0d 0a 63 6f 6d 70 69 6c 65 2e 44 41 54 41  l\..compile.DATA
1e40: 20 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44   SQLite System.D
1e50: 61 74 61 2e 53 51 4c 69 74 65 20 53 51 4c 69 74  ata.SQLite SQLit
1e60: 65 49 6e 74 65 72 6f 70 5c 0d 0a 64 65 66 69 6e  eInterop\..defin
1e70: 65 43 6f 6e 73 74 61 6e 74 2e 53 79 73 74 65 6d  eConstant.System
1e80: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 49 4e 54  .Data.SQLite.INT
1e90: 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
1ea0: 4c 45 20 63 6f 6d 70 69 6c 65 43 53 68 61 72 70  LE compileCSharp
1eb0: 7d 20 2d 6d 61 74 63 68 20 5c 0d 0a 72 65 67 65  } -match \..rege
1ec0: 78 70 20 2d 72 65 73 75 6c 74 20 5b 73 74 72 69  xp -result [stri
1ed0: 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c 6e 20  ng map [list \n 
1ee0: 5c 72 5c 6e 5d 20 7b 5e 4f 6b 5c 0d 0a 53 79 73  \r\n] {^Ok\..Sys
1ef0: 74 65 6d 23 43 6f 64 65 44 6f 6d 23 43 6f 6d 70  tem#CodeDom#Comp
1f00: 69 6c 65 72 23 43 6f 6d 70 69 6c 65 72 52 65 73  iler#CompilerRes
1f10: 75 6c 74 73 23 5c 64 2b 20 5c 7b 5c 7d 20 30 20  ults#\d+ \{\} 0 
1f20: 5c 7b 30 20 32 20 31 31 31 20 31 31 30 20 31 30  \{0 2 111 110 10
1f30: 31 20 34 35 20 39 38 20 31 30 38 5c 0d 0a 31 31  1 45 98 108\..11
1f40: 31 20 39 38 20 31 31 36 20 31 31 39 20 31 31 31  1 98 116 119 111
1f50: 20 34 35 20 39 38 20 31 30 38 20 31 31 31 20 39   45 98 108 111 9
1f60: 38 5c 7d 24 7d 5d 7d 0d 0a 0d 0a 23 23 23 23 23  8\}$}]}....#####
1f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb0: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
1fc0: 6e 53 51 4c 69 74 65 54 65 73 74 45 70 69 6c 6f  nSQLiteTestEpilo
1fd0: 67 75 65 0d 0a 72 75 6e 54 65 73 74 45 70 69 6c  gue..runTestEpil
1fe0: 6f 67 75 65 0d 0a                                ogue..