| # 2014-06-16 |
| # |
| # The author disclaims copyright to this source code. In place of |
| # a legal notice, here is a blessing: |
| # |
| # May you do good and not evil. |
| # May you find forgiveness for yourself and forgive others. |
| # May you share freely, never taking more than you give. |
| # |
| #*********************************************************************** |
| # |
| # This file implements tests for various small extensions. |
| # |
| |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| set ::testprefix extension01 |
| |
| load_static_extension db fileio |
| do_test 1.0 { |
| forcedelete file1.txt |
| set out [open ./file1.txt wb] |
| puts -nonewline $out "This is a text file without a line ending" |
| close $out |
| db eval { |
| CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); |
| INSERT INTO t1 VALUES(1, readfile('./file1.txt')); |
| SELECT * FROM t1; |
| } |
| } {1 {This is a text file without a line ending}} |
| do_test 1.1 { |
| forcedelete file2.txt |
| db nullvalue nil |
| db eval { |
| DELETE FROM t1; |
| INSERT INTO t1 VALUES(2, readfile(NULL)),(3, readfile('file2.txt')); |
| SELECT a, b, typeof(b) FROM t1; |
| } |
| } {2 nil null 3 nil null} |
| |
| do_test 1.2 { |
| db eval { |
| SELECT writefile('./file2.txt', 'A second test line'); |
| } |
| } {18} |
| do_test 1.3 { |
| set in [open ./file2.txt rb] |
| set x [read $in] |
| close $in |
| list $x [file size file2.txt] |
| } {{A second test line} 18} |
| |
| do_test 1.4 { |
| db eval { |
| SELECT writefile('./file2.txt', NULL); |
| } |
| } {0} |
| do_test 1.5 { |
| file size ./file2.txt |
| } {0} |
| |
| do_test 1.6 { |
| if {$::tcl_platform(platform)=="unix"} { |
| file attributes ./file2.txt -permissions r--r--r-- |
| } else { |
| file attributes ./file2.txt -readonly 1 |
| } |
| db eval { |
| SELECT writefile('./file2.txt', 'Another test'); |
| } |
| } {nil} |
| do_test 1.7 { |
| if {$::tcl_platform(platform)=="unix"} { |
| file attributes ./file2.txt -permissions rw-r--r-- |
| } else { |
| file attributes ./file2.txt -readonly 0 |
| } |
| db eval { |
| SELECT writefile(NULL, 'Another test'); |
| } |
| } {nil} |
| |
| finish_test |