xref: /sqlite-3.40.0/test/intarray.test (revision 522efc62)
1# 2009 November 10
2#
3# The author disclaims copyright to this source code.  In place of
4# a legal notice, here is a blessing:
5#
6#    May you do good and not evil.
7#    May you find forgiveness for yourself and forgive others.
8#    May you share freely, never taking more than you give.
9#
10#***********************************************************************
11# This file implements regression tests for SQLite library.
12#
13# This file implements tests for the "intarray" object implemented
14# in test_intarray.c.
15#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20ifcapable !vtab {
21  return
22}
23
24do_test intarray-1.0 {
25  db eval {
26    CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
27  }
28  for {set i 1} {$i<=999} {incr i} {
29    set b [format {x%03d} $i]
30    db eval {INSERT INTO t1(a,b) VALUES($i,$b)}
31  }
32  db eval {
33    SELECT b FROM t1 WHERE a IN (12,34,56,78) ORDER BY a
34  }
35} {x012 x034 x056 x078}
36
37do_test intarray-1.1 {
38  set ia1 [sqlite3_intarray_create db ia1]
39  set ia2 [sqlite3_intarray_create db ia2]
40  set ia3 [sqlite3_intarray_create db ia3]
41  set ia4 [sqlite3_intarray_create db ia4]
42  db eval {
43    SELECT type, name FROM sqlite_temp_master
44     ORDER BY name
45  }
46} {table ia1 table ia2 table ia3 table ia4}
47
48do_test intarray-1.2 {
49  db eval {
50    SELECT b FROM t1 WHERE a IN ia3 ORDER BY a
51  }
52} {}
53
54do_test intarray-1.3 {
55  sqlite3_intarray_bind $ia3 45 123 678
56  db eval {
57    SELECT b FROM t1 WHERE a IN ia3 ORDER BY a
58  }
59} {x045 x123 x678}
60
61
62finish_test
63