gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/shell7.test (about)

     1  # 2016 December 17
     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  # Test the readfile() function built into the shell tool. Specifically,
    13  # that it does not truncate the blob read at the first embedded 0x00
    14  # byte.
    15  #
    16  
    17  set testdir [file dirname $argv0]
    18  source $testdir/tester.tcl
    19  set testprefix shell7
    20  set CLI [test_find_cli]
    21  
    22  
    23  do_execsql_test 1.0 { 
    24    CREATE TABLE f1(tn INTEGER PRIMARY KEY, x BLOB); 
    25    CREATE TABLE f2(tn INTEGER PRIMARY KEY, x BLOB); 
    26  
    27    INSERT INTO f1 VALUES(1, X'01020304');
    28    INSERT INTO f1 VALUES(2, X'01000304');
    29    INSERT INTO f1 VALUES(3, randomblob(200));
    30  }
    31  
    32  foreach {tn l x} [db eval { SELECT tn, length(x) AS l, x FROM f1 }] {
    33    forcedelete shell7_test.bin
    34    set fd [open shell7_test.bin w]
    35    fconfigure $fd -encoding binary
    36    fconfigure $fd -translation binary
    37    puts -nonewline $fd $x
    38    close $fd
    39  
    40    do_test 1.$tn.1 { file size shell7_test.bin } $l
    41    do_test 1.$tn.2 { 
    42      catchcmd test.db "INSERT INTO f2 VALUES($tn, readfile('shell7_test.bin'));"
    43    } {0 {}}
    44  
    45    do_execsql_test 1.$tn.3 { 
    46      SELECT (SELECT x FROM f1 WHERE tn=1)==(SELECT x FROM f2 WHERE tn=1)
    47    } {1}
    48  }
    49  
    50  
    51  
    52  finish_test