348d7f64f2
Ticket [30e2c183b6b356e4] FossilOrigin-Name: d43e0efb9642037dd751cfed13438e71cfceb50e14a0ec603880c6c3be2e93b1
104 lines
3.5 KiB
Plaintext
104 lines
3.5 KiB
Plaintext
# 2018-05-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 contains tests for the r-tree module, specifically the
|
|
# auxiliary column mechanism.
|
|
|
|
if {![info exists testdir]} {
|
|
set testdir [file join [file dirname [info script]] .. .. test]
|
|
}
|
|
source [file join [file dirname [info script]] rtree_util.tcl]
|
|
source $testdir/tester.tcl
|
|
ifcapable !rtree { finish_test ; return }
|
|
|
|
do_execsql_test rtreeH-100 {
|
|
CREATE VIRTUAL TABLE t1 USING rtree(id,x0,x1,y0,y1,+label,+other);
|
|
INSERT INTO t1(x0,x1,y0,y1,label) VALUES
|
|
(0,10,0,10,'lower-left corner'),
|
|
(0,10,90,100,'upper-left corner'),
|
|
(90,100,0,10,'lower-right corner'),
|
|
(90,100,90,100,'upper-right corner'),
|
|
(40,60,40,60,'center'),
|
|
(0,5,0,100,'left edge'),
|
|
(95,100,0,100,'right edge'),
|
|
(0,100,0,5,'bottom edge'),
|
|
(0,100,95,100,'top edge'),
|
|
(0,100,0,100,'the whole thing'),
|
|
(0,50,0,100,'left half'),
|
|
(51,100,0,100,'right half'),
|
|
(0,100,0,50,'bottom half'),
|
|
(0,100,51,100,'top half');
|
|
} {}
|
|
do_execsql_test rtreeH-101 {
|
|
SELECT * FROM t1_rowid ORDER BY rowid
|
|
} {1 1 {lower-left corner} {} 2 1 {upper-left corner} {} 3 1 {lower-right corner} {} 4 1 {upper-right corner} {} 5 1 center {} 6 1 {left edge} {} 7 1 {right edge} {} 8 1 {bottom edge} {} 9 1 {top edge} {} 10 1 {the whole thing} {} 11 1 {left half} {} 12 1 {right half} {} 13 1 {bottom half} {} 14 1 {top half} {}}
|
|
|
|
do_execsql_test rtreeH-102 {
|
|
SELECT * FROM t1 WHERE rowid=5;
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
do_execsql_test rtreeH-102b {
|
|
SELECT * FROM t1 WHERE rowid=5.0;
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
do_execsql_test rtreeH-102c {
|
|
SELECT * FROM t1 WHERE rowid='5';
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
do_execsql_test rtreeH-102d {
|
|
SELECT * FROM t1 WHERE rowid='0005';
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
do_execsql_test rtreeH-102e {
|
|
SELECT * FROM t1 WHERE rowid='+5.0e+0';
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
do_execsql_test rtreeH-103 {
|
|
SELECT * FROM t1 WHERE label='center';
|
|
} {5 40.0 60.0 40.0 60.0 center {}}
|
|
|
|
do_execsql_test rtreeH-104 {
|
|
SELECT * FROM t1 WHERE rowid='+5.0e+0x';
|
|
} {}
|
|
do_execsql_test rtreeH-105 {
|
|
SELECT * FROM t1 WHERE rowid=x'35';
|
|
} {}
|
|
do_execsql_test rtreeH-106 {
|
|
SELECT * FROM t1 WHERE rowid=null;
|
|
} {}
|
|
|
|
|
|
do_rtree_integrity_test rtreeH-110 t1
|
|
|
|
do_execsql_test rtreeH-120 {
|
|
SELECT label FROM t1 WHERE x1<=50 ORDER BY id
|
|
} {{lower-left corner} {upper-left corner} {left edge} {left half}}
|
|
do_execsql_test rtreeH-121 {
|
|
SELECT label FROM t1 WHERE x1<=50 AND label NOT LIKE '%corner%' ORDER BY id
|
|
} {{left edge} {left half}}
|
|
|
|
do_execsql_test rtreeH-200 {
|
|
WITH RECURSIVE
|
|
c1(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c1 WHERE x<99),
|
|
c2(y) AS (VALUES(0) UNION ALL SELECT y+1 FROM c2 WHERE y<99)
|
|
INSERT INTO t1(id, x0,x1,y0,y1,label)
|
|
SELECT 1000+x+y*100, x, x+1, y, y+1, printf('box-%d,%d',x,y) FROM c1, c2;
|
|
} {}
|
|
|
|
do_execsql_test rtreeH-210 {
|
|
SELECT label FROM t1 WHERE x0>=48 AND x1<=50 AND y0>=48 AND y1<=50
|
|
ORDER BY id;
|
|
} {box-48,48 box-49,48 box-48,49 box-49,49}
|
|
|
|
do_execsql_test rtreeH-300 {
|
|
UPDATE t1 SET label='x'||label
|
|
WHERE x0>=49 AND x1<=50 AND y0>=49 AND y1<=50;
|
|
SELECT label FROM t1 WHERE x0>=48 AND x1<=50 AND y0>=48 AND y1<=50
|
|
ORDER BY id;
|
|
} {box-48,48 box-49,48 box-48,49 xbox-49,49}
|
|
|
|
|
|
finish_test
|