github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/incrblobfault.test (about)

     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  
    14  set testdir [file dirname $argv0]
    15  source $testdir/tester.tcl
    16  
    17  set testprefix incrblobfault
    18  
    19  do_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  
    35  do_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  
    47  do_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}} {1 {disk I/O error}}
    56    close $::blob
    57  }
    58  
    59  do_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  
    69  finish_test