blob: 52d7db25bf6b822772f933b9e85ef595473700a5 [file] [log] [blame]
drhff6e9112000-08-28 16:21:58 +00001# Copyright (c) 1999, 2000 D. Richard Hipp
2#
3# This program is free software; you can redistribute it and/or
4# modify it under the terms of the GNU General Public
5# License as published by the Free Software Foundation; either
6# version 2 of the License, or (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11# General Public License for more details.
12#
13# You should have received a copy of the GNU General Public
14# License along with this library; if not, write to the
15# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16# Boston, MA 02111-1307, USA.
17#
18# Author contact information:
19# drh@hwaci.com
20# http://www.hwaci.com/drh/
21#
22#***********************************************************************
23# This file implements regression tests for SQLite library. The
24# focus of this file is testing built-in functions.
25#
26# $Id: func.test,v 1.1 2000/08/28 16:22:00 drh Exp $
27
28set testdir [file dirname $argv0]
29source $testdir/tester.tcl
30
31# Create a table to work with.
32#
33execsql {CREATE TABLE tbl1(t1 text)}
34foreach word {this program is free software} {
35 execsql "INSERT INTO tbl1 VALUES('$word')"
36}
37
38# Make sure the table was created properly.
39#
40do_test func-0.0 {
41 execsql {SELECT t1 FROM tbl1 ORDER BY t1}
42} {free is program software this}
43
44# Check out the length() function
45#
46do_test func-1.0 {
47 execsql {SELECT length(t1) FROM tbl1 ORDER BY t1}
48} {4 2 7 8 4}
49do_test func-1.1 {
50 set r [catch {execsql {SELECT length(*) FROM tbl1 ORDER BY t1}} msg]
51 lappend r $msg
52} {1 {too few arguments to function length()}}
53do_test func-1.2 {
54 set r [catch {execsql {SELECT length(t1,5) FROM tbl1 ORDER BY t1}} msg]
55 lappend r $msg
56} {1 {too many arguments to function length()}}
57do_test func-1.3 {
58 execsql {SELECT length(t1), count(*) FROM tbl1 GROUP BY length(t1)
59 ORDER BY length(t1)}
60} {2 1 4 2 7 1 8 1}
61
62# Check out the substr() function
63#
64do_test func-2.0 {
65 execsql {SELECT substr(t1,1,2) FROM tbl1 ORDER BY t1}
66} {fr is pr so th}
67do_test func-2.1 {
68 execsql {SELECT substr(t1,2,1) FROM tbl1 ORDER BY t1}
69} {r s r o h}
70do_test func-2.2 {
71 execsql {SELECT substr(t1,3,3) FROM tbl1 ORDER BY t1}
72} {ee {} ogr ftw is}
73do_test func-2.3 {
74 execsql {SELECT substr(t1,-1,1) FROM tbl1 ORDER BY t1}
75} {e s m e s}
76do_test func-2.4 {
77 execsql {SELECT substr(t1,-1,2) FROM tbl1 ORDER BY t1}
78} {e s m e s}
79do_test func-2.5 {
80 execsql {SELECT substr(t1,-2,1) FROM tbl1 ORDER BY t1}
81} {e i a r i}
82do_test func-2.6 {
83 execsql {SELECT substr(t1,-2,2) FROM tbl1 ORDER BY t1}
84} {ee is am re is}
85do_test func-2.7 {
86 execsql {SELECT substr(t1,-4,2) FROM tbl1 ORDER BY t1}
87} {fr {} gr wa th}
88do_test func-2.8 {
89 execsql {SELECT t1 FROM tbl1 ORDER BY substr(t1,2,20)}
90} {this software free program is}
91
92finish_test