System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ec00018070a7aceb2e3b4fba061bb85b1d8be823:


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 31 37 30 34 35 30  .#..# tkt-170450
0060: 31 30 64 66 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  10df.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 31  Test {test tkt-1
0280: 37 30 34 35 30 31 30 64 66 2d 31 2e 31 20 7b 45  7045010df-1.1 {E
0290: 6e 61 62 6c 65 45 78 74 65 6e 73 69 6f 6e 73 20  nableExtensions 
02a0: 26 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 7d  & LoadExtension}
02b0: 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74   -setup {..  set
02c0: 75 70 44 62 20 5b 73 65 74 20 66 69 6c 65 4e 61  upDb [set fileNa
02d0: 6d 65 20 74 6b 74 2d 31 37 30 34 35 30 31 30 64  me tkt-17045010d
02e0: 66 2d 31 2e 31 2e 64 62 5d 0d 0a 7d 20 2d 62 6f  f-1.1.db]..} -bo
02f0: 64 79 20 7b 0d 0a 20 20 73 65 74 20 63 6f 6e 6e  dy {..  set conn
0300: 65 63 74 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e  ection [getDbCon
0310: 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 6c 61  nection]....  la
0320: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61  ppend result [ca
0330: 74 63 68 41 6e 64 52 65 74 75 72 6e 20 7b 24 63  tchAndReturn {$c
0340: 6f 6e 6e 65 63 74 69 6f 6e 20 45 6e 61 62 6c 65  onnection Enable
0350: 45 78 74 65 6e 73 69 6f 6e 73 20 66 61 6c 73 65  Extensions false
0360: 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  }]....  lappend 
0370: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 41 6e 64  result [catchAnd
0380: 52 65 74 75 72 6e 20 7b 24 63 6f 6e 6e 65 63 74  Return {$connect
0390: 69 6f 6e 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f  ion LoadExtensio
03a0: 6e 20 5c 0d 0a 20 20 20 20 20 20 5b 67 65 74 43  n \..      [getC
03b0: 6f 72 65 45 78 74 65 6e 73 69 6f 6e 42 69 6e 61  oreExtensionBina
03c0: 72 79 46 69 6c 65 4e 61 6d 65 20 6e 75 6c 6c 5d  ryFileName null]
03d0: 20 69 6e 74 65 72 6f 70 5f 74 65 73 74 5f 65 78   interop_test_ex
03e0: 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 7d 5d 0d 0a  tension_init}]..
03f0: 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75  ..  lappend resu
0400: 6c 74 20 5b 63 61 74 63 68 41 6e 64 52 65 74 75  lt [catchAndRetu
0410: 72 6e 20 7b 73 71 6c 20 65 78 65 63 75 74 65 20  rn {sql execute 
0420: 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20  -execute scalar 
0430: 24 64 62 20 5c 0d 0a 20 20 20 20 20 20 22 53 45  $db \..      "SE
0440: 4c 45 43 54 20 69 6e 74 65 72 6f 70 54 65 73 74  LECT interopTest
0450: 28 27 74 65 73 74 31 27 29 3b 22 7d 5d 0d 0a 20  ('test1');"}].. 
0460: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
0470: 5b 63 61 74 63 68 41 6e 64 52 65 74 75 72 6e 20  [catchAndReturn 
0480: 7b 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78  {sql execute -ex
0490: 65 63 75 74 65 20 73 63 61 6c 61 72 20 24 64 62  ecute scalar $db
04a0: 20 5c 0d 0a 20 20 20 20 20 20 22 53 45 4c 45 43   \..      "SELEC
04b0: 54 20 69 6e 74 65 72 6f 70 54 65 73 74 28 27 74  T interopTest('t
04c0: 65 73 74 31 27 2c 20 27 31 32 33 34 27 29 3b 22  est1', '1234');"
04d0: 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  }]....  lappend 
04e0: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 41 6e 64  result [catchAnd
04f0: 52 65 74 75 72 6e 20 7b 24 63 6f 6e 6e 65 63 74  Return {$connect
0500: 69 6f 6e 20 45 6e 61 62 6c 65 45 78 74 65 6e 73  ion EnableExtens
0510: 69 6f 6e 73 20 74 72 75 65 7d 5d 0d 0a 0d 0a 20  ions true}].... 
0520: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
0530: 5b 63 61 74 63 68 41 6e 64 52 65 74 75 72 6e 20  [catchAndReturn 
0540: 7b 24 63 6f 6e 6e 65 63 74 69 6f 6e 20 4c 6f 61  {$connection Loa
0550: 64 45 78 74 65 6e 73 69 6f 6e 20 5c 0d 0a 20 20  dExtension \..  
0560: 20 20 20 20 5b 67 65 74 43 6f 72 65 45 78 74 65      [getCoreExte
0570: 6e 73 69 6f 6e 42 69 6e 61 72 79 46 69 6c 65 4e  nsionBinaryFileN
0580: 61 6d 65 20 6e 75 6c 6c 5d 20 69 6e 74 65 72 6f  ame null] intero
0590: 70 5f 74 65 73 74 5f 65 78 74 65 6e 73 69 6f 6e  p_test_extension
05a0: 5f 69 6e 69 74 7d 5d 0d 0a 0d 0a 20 20 6c 61 70  _init}]....  lap
05b0: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74  pend result [cat
05c0: 63 68 41 6e 64 52 65 74 75 72 6e 20 7b 73 71 6c  chAndReturn {sql
05d0: 20 65 78 65 63 75 74 65 20 2d 65 78 65 63 75 74   execute -execut
05e0: 65 20 73 63 61 6c 61 72 20 24 64 62 20 5c 0d 0a  e scalar $db \..
05f0: 20 20 20 20 20 20 22 53 45 4c 45 43 54 20 69 6e        "SELECT in
0600: 74 65 72 6f 70 54 65 73 74 28 27 74 65 73 74 32  teropTest('test2
0610: 27 29 3b 22 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e  ');"}]..  lappen
0620: 64 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 41  d result [catchA
0630: 6e 64 52 65 74 75 72 6e 20 7b 73 71 6c 20 65 78  ndReturn {sql ex
0640: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
0650: 63 61 6c 61 72 20 24 64 62 20 5c 0d 0a 20 20 20  calar $db \..   
0660: 20 20 20 22 53 45 4c 45 43 54 20 69 6e 74 65 72     "SELECT inter
0670: 6f 70 54 65 73 74 28 27 74 65 73 74 32 27 2c 20  opTest('test2', 
0680: 27 35 36 37 38 27 29 3b 22 7d 5d 0d 0a 0d 0a 20  '5678');"}].... 
0690: 20 73 65 74 20 72 65 73 75 6c 74 0d 0a 7d 20 2d   set result..} -
06a0: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 66 72 65  cleanup {..  fre
06b0: 65 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d  eDbConnection...
06c0: 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70  .  unset -nocomp
06d0: 6c 61 69 6e 20 72 65 73 75 6c 74 20 63 6f 6e 6e  lain result conn
06e0: 65 63 74 69 6f 6e 0d 0a 0d 0a 20 20 63 6c 65 61  ection....  clea
06f0: 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d  nupDb $fileName.
0700: 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ...  unset -noco
0710: 6d 70 6c 61 69 6e 20 64 62 20 66 69 6c 65 4e 61  mplain db fileNa
0720: 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  me..} -constrain
0730: 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61 6e  ts {eagle comman
0740: 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e 6f 42 75 67  d.object monoBug
0750: 32 38 5c 0d 0a 64 65 66 69 6e 65 43 6f 6e 73 74  28\..defineConst
0760: 61 6e 74 2e 53 79 73 74 65 6d 2e 44 61 74 61 2e  ant.System.Data.
0770: 53 51 4c 69 74 65 2e 49 4e 54 45 52 4f 50 5f 54  SQLite.INTEROP_T
0780: 45 53 54 5f 45 58 54 45 4e 53 49 4f 4e 20 63 6f  EST_EXTENSION co
0790: 6d 6d 61 6e 64 2e 73 71 6c 5c 0d 0a 63 6f 6d 70  mmand.sql\..comp
07a0: 69 6c 65 2e 44 41 54 41 20 53 51 4c 69 74 65 20  ile.DATA SQLite 
07b0: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
07c0: 74 65 7d 20 2d 6d 61 74 63 68 20 72 65 67 65 78  te} -match regex
07d0: 70 20 2d 72 65 73 75 6c 74 20 7b 5e 5c 7b 30 20  p -result {^\{0 
07e0: 5c 7b 5c 7d 5c 7d 20 5c 7b 31 5c 0d 0a 5c 7b 45  \{\}\} \{1\..\{E
07f0: 58 43 45 50 54 49 4f 4e 20 53 79 73 74 65 6d 5c  XCEPTION System\
0800: 2e 44 61 74 61 5c 2e 53 51 4c 69 74 65 5c 2e 53  .Data\.SQLite\.S
0810: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 5c 0d  QLiteException\.
0820: 0a 53 79 73 74 65 6d 5c 2e 44 61 74 61 5c 2e 53  .System\.Data\.S
0830: 51 4c 69 74 65 5c 2e 53 51 4c 69 74 65 33 5c 2e  QLite\.SQLite3\.
0840: 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 5c 7d 20  LoadExtension\} 
0850: 5c 7b 53 51 4c 20 6c 6f 67 69 63 20 65 72 72 6f  \{SQL logic erro
0860: 72 28 20 6f 72 20 6d 69 73 73 69 6e 67 5c 0d 0a  r( or missing\..
0870: 64 61 74 61 62 61 73 65 29 3f 20 2d 2d 20 6e 6f  database)? -- no
0880: 74 20 61 75 74 68 6f 72 69 7a 65 64 5c 7d 5c 7d  t authorized\}\}
0890: 20 5c 7b 31 20 5c 7b 45 58 43 45 50 54 49 4f 4e   \{1 \{EXCEPTION
08a0: 5c 0d 0a 53 79 73 74 65 6d 5c 2e 44 61 74 61 5c  \..System\.Data\
08b0: 2e 53 51 4c 69 74 65 5c 2e 53 51 4c 69 74 65 45  .SQLite\.SQLiteE
08c0: 78 63 65 70 74 69 6f 6e 20 53 79 73 74 65 6d 5c  xception System\
08d0: 2e 44 61 74 61 5c 2e 53 51 4c 69 74 65 5c 2e 53  .Data\.SQLite\.S
08e0: 51 4c 69 74 65 33 5c 2e 50 72 65 70 61 72 65 5c  QLite3\.Prepare\
08f0: 7d 5c 0d 0a 5c 7b 53 51 4c 20 6c 6f 67 69 63 20  }\..\{SQL logic 
0900: 65 72 72 6f 72 28 20 6f 72 20 6d 69 73 73 69 6e  error( or missin
0910: 67 20 64 61 74 61 62 61 73 65 29 3f 20 2d 2d 20  g database)? -- 
0920: 6e 6f 20 73 75 63 68 20 66 75 6e 63 74 69 6f 6e  no such function
0930: 3a 20 69 6e 74 65 72 6f 70 54 65 73 74 5c 7d 5c  : interopTest\}\
0940: 7d 5c 0d 0a 5c 7b 31 20 5c 7b 45 58 43 45 50 54  }\..\{1 \{EXCEPT
0950: 49 4f 4e 20 53 79 73 74 65 6d 5c 2e 44 61 74 61  ION System\.Data
0960: 5c 2e 53 51 4c 69 74 65 5c 2e 53 51 4c 69 74 65  \.SQLite\.SQLite
0970: 45 78 63 65 70 74 69 6f 6e 5c 0d 0a 53 79 73 74  Exception\..Syst
0980: 65 6d 5c 2e 44 61 74 61 5c 2e 53 51 4c 69 74 65  em\.Data\.SQLite
0990: 5c 2e 53 51 4c 69 74 65 33 5c 2e 50 72 65 70 61  \.SQLite3\.Prepa
09a0: 72 65 5c 7d 20 5c 7b 53 51 4c 20 6c 6f 67 69 63  re\} \{SQL logic
09b0: 20 65 72 72 6f 72 28 20 6f 72 20 6d 69 73 73 69   error( or missi
09c0: 6e 67 5c 0d 0a 64 61 74 61 62 61 73 65 29 3f 20  ng\..database)? 
09d0: 2d 2d 20 6e 6f 20 73 75 63 68 20 66 75 6e 63 74  -- no such funct
09e0: 69 6f 6e 3a 20 69 6e 74 65 72 6f 70 54 65 73 74  ion: interopTest
09f0: 5c 7d 5c 7d 20 5c 7b 30 20 5c 7b 5c 7d 5c 7d 20  \}\} \{0 \{\}\} 
0a00: 5c 7b 30 20 5c 7b 5c 7d 5c 7d 20 5c 7b 30 5c 0d  \{0 \{\}\} \{0\.
0a10: 0a 74 65 73 74 32 5c 7d 20 5c 7b 31 20 5c 7b 45  .test2\} \{1 \{E
0a20: 58 43 45 50 54 49 4f 4e 20 53 79 73 74 65 6d 5c  XCEPTION System\
0a30: 2e 44 61 74 61 5c 2e 53 51 4c 69 74 65 5c 2e 53  .Data\.SQLite\.S
0a40: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 5c 0d  QLiteException\.
0a50: 0a 53 79 73 74 65 6d 5c 2e 44 61 74 61 5c 2e 53  .System\.Data\.S
0a60: 51 4c 69 74 65 5c 2e 53 51 4c 69 74 65 33 5c 2e  QLite\.SQLite3\.
0a70: 52 65 73 65 74 5c 7d 20 5c 7b 53 51 4c 20 6c 6f  Reset\} \{SQL lo
0a80: 67 69 63 20 65 72 72 6f 72 28 20 6f 72 20 6d 69  gic error( or mi
0a90: 73 73 69 6e 67 20 64 61 74 61 62 61 73 65 29 3f  ssing database)?
0aa0: 5c 0d 0a 2d 2d 20 6e 65 65 64 20 65 78 61 63 74  \..-- need exact
0ab0: 6c 79 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74 5c  ly one argument\
0ac0: 7d 5c 7d 24 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23  }\}$}}....######
0ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b10: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e  #########....run
0b20: 53 51 4c 69 74 65 54 65 73 74 45 70 69 6c 6f 67  SQLiteTestEpilog
0b30: 75 65 0d 0a 72 75 6e 54 65 73 74 45 70 69 6c 6f  ue..runTestEpilo
0b40: 67 75 65 0d 0a                                   gue..