summaryrefslogtreecommitdiffstats
path: root/test/extension01.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/extension01.test')
-rw-r--r--test/extension01.test83
1 files changed, 83 insertions, 0 deletions
diff --git a/test/extension01.test b/test/extension01.test
new file mode 100644
index 0000000..97b7726
--- /dev/null
+++ b/test/extension01.test
@@ -0,0 +1,83 @@
+# 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