2014-06-16 16:44:32 +04:00
|
|
|
# 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 {
|
2014-06-16 16:51:56 +04:00
|
|
|
if {$::tcl_platform(platform)=="unix"} {
|
|
|
|
file attributes ./file2.txt -permissions r--r--r--
|
|
|
|
} else {
|
|
|
|
file attributes ./file2.txt -readonly 1
|
|
|
|
}
|
2014-06-16 16:44:32 +04:00
|
|
|
db eval {
|
|
|
|
SELECT writefile('./file2.txt', 'Another test');
|
|
|
|
}
|
|
|
|
} {nil}
|
|
|
|
do_test 1.7 {
|
2014-06-16 16:51:56 +04:00
|
|
|
if {$::tcl_platform(platform)=="unix"} {
|
|
|
|
file attributes ./file2.txt -permissions rw-r--r--
|
|
|
|
} else {
|
|
|
|
file attributes ./file2.txt -readonly 0
|
|
|
|
}
|
2014-06-16 16:44:32 +04:00
|
|
|
db eval {
|
|
|
|
SELECT writefile(NULL, 'Another test');
|
|
|
|
}
|
|
|
|
} {nil}
|
|
|
|
|
|
|
|
finish_test
|