1# 2010 October 26 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# 12# 13 14set testdir [file dirname $argv0] 15source $testdir/tester.tcl 16 17set testprefix incrblobfault 18 19do_execsql_test 1.0 { 20 CREATE TABLE blob(x INTEGER PRIMARY KEY, v BLOB); 21 INSERT INTO blob VALUES(1, 'hello world'); 22 INSERT INTO blob VALUES(2, 'world hello'); 23 INSERT INTO blob SELECT NULL, v FROM blob; 24 INSERT INTO blob SELECT NULL, v FROM blob; 25 INSERT INTO blob SELECT NULL, v FROM blob; 26 INSERT INTO blob SELECT NULL, v FROM blob; 27 INSERT INTO blob SELECT NULL, v FROM blob; 28 INSERT INTO blob SELECT NULL, v FROM blob; 29 INSERT INTO blob SELECT NULL, v FROM blob; 30 INSERT INTO blob SELECT NULL, v FROM blob; 31 INSERT INTO blob SELECT NULL, v FROM blob; 32 INSERT INTO blob SELECT NULL, v FROM blob; 33} 34 35do_faultsim_test 1 -prep { 36 sqlite3 db test.db 37 set ::blob [db incrblob blob v 1] 38} -body { 39 if {[catch {sqlite3_blob_reopen $::blob 1000}]} { 40 error [sqlite3_errmsg db] 41 } 42} -test { 43 faultsim_test_result {0 {}} 44 close $::blob 45} 46 47do_faultsim_test 2 -prep { 48 sqlite3 db test.db 49 set ::blob [db incrblob blob v 1] 50} -body { 51 if {[catch {sqlite3_blob_reopen $::blob -1}]} { 52 error [sqlite3_errmsg db] 53 } 54} -test { 55 faultsim_test_result {1 {no such rowid: -1}} 56 close $::blob 57} 58 59do_faultsim_test 3 -prep { 60 sqlite3 db test.db 61} -body { 62 set ::blob [db incrblob blob v 1] 63 gets $::blob 64} -test { 65 faultsim_test_result {0 {hello world}} 66 catch { close $::blob } 67} 68 69finish_test 70 71