summaryrefslogtreecommitdiffstats
path: root/test/swarmvtab2.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/swarmvtab2.test')
-rw-r--r--test/swarmvtab2.test75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/swarmvtab2.test b/test/swarmvtab2.test
new file mode 100644
index 0000000..1cc7fbb
--- /dev/null
+++ b/test/swarmvtab2.test
@@ -0,0 +1,75 @@
+# 2017-07-15
+#
+# 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 regression tests for SQLite library. The
+# focus of this file is the "swarmvtab" extension
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix swarmvtab2
+do_not_use_codec
+
+ifcapable !vtab {
+ finish_test
+ return
+}
+
+
+db close
+foreach name [glob -nocomplain test*.db] {
+ forcedelete $name
+}
+sqlite3 db test.db
+load_static_extension db unionvtab
+proc create_database {filename} {
+ sqlite3 dbx $filename
+ set num [regsub -all {[^0-9]+} $filename {}]
+ set num [string trimleft $num 0]
+ set start [expr {$num*1000}]
+ set end [expr {$start+999}]
+ dbx eval {
+ CREATE TABLE t2(a INTEGER PRIMARY KEY,b);
+ WITH RECURSIVE c(x) AS (
+ VALUES($start) UNION ALL SELECT x+1 FROM c WHERE x<$end
+ )
+ INSERT INTO t2(a,b) SELECT x, printf('**%05d**',x) FROM c;
+ }
+ dbx close
+}
+db func create_database create_database
+do_execsql_test 100 {
+ CREATE TABLE t1(filename, tablename, istart, iend);
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<99)
+ INSERT INTO t1 SELECT printf('test%03d.db',x),'t2',x*1000,x*1000+999 FROM c;
+ CREATE VIRTUAL TABLE temp.v1 USING swarmvtab(
+ 'SELECT * FROM t1', 'create_database'
+ );
+} {}
+do_execsql_test 110 {
+ SELECT b FROM v1 WHERE a=3875;
+} {**03875**}
+do_test 120 {
+ lsort [glob -nocomplain test?*.db]
+} {test001.db test003.db}
+do_execsql_test 130 {
+ SELECT b FROM v1 WHERE a BETWEEN 3999 AND 4000 ORDER BY a;
+} {**03999** **04000**}
+do_test 140 {
+ lsort [glob -nocomplain test?*.db]
+} {test001.db test003.db test004.db}
+do_execsql_test 150 {
+ SELECT b FROM v1 WHERE a>=99998;
+} {**99998** **99999**}
+do_test 160 {
+ lsort -dictionary [glob -nocomplain test?*.db]
+} {test001.db test003.db test004.db test099.db}
+
+finish_test