]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Added additional tests. No new errors found. (CVS 653)
authordrh <drh@noemail.net>
Mon, 1 Jul 2002 00:31:36 +0000 (00:31 +0000)
committerdrh <drh@noemail.net>
Mon, 1 Jul 2002 00:31:36 +0000 (00:31 +0000)
FossilOrigin-Name: 8924a7f5bab790ab552332d6359028d0d1825e4a

manifest
manifest.uuid
src/test1.c
test/func.test
test/in.test

index a2d62defe6dcde5e189019f2628189672afc9337..ca3eea071de4fdf1ee6b7f84d9e9225064114010 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\sfew\smore\stests\sand\sfix\sa\sfew\sbugs\sthat\sthe\stests\suncovered.\s(CVS\s652)
-D 2002-06-29T02:20:08
+C Added\sadditional\stests.\s\sNo\snew\serrors\sfound.\s(CVS\s653)
+D 2002-07-01T00:31:36
 F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
 F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
@@ -44,7 +44,7 @@ F src/sqlite.h.in 75c5bbb066d0faf34424b7d1babf8b44d5b31af2
 F src/sqliteInt.h 314a4feb08cccdeb90b434e6dde86b93d2f36b8e
 F src/table.c eed2098c9b577aa17f8abe89313a9c4413f57d63
 F src/tclsqlite.c e932591c0bb522b0a35ea7dc861c623ccb2e3aa8
-F src/test1.c 29ed719d8ce890733fbeadb53cacc4e542d423ed
+F src/test1.c a2f2b6b1df07d4e8b380323896c3ed34442cea91
 F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730
 F src/test3.c 72ac6a9017a70e542954907a1dfd87ab6f7824e3
 F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f
@@ -64,8 +64,8 @@ F test/conflict.test 4518cc3c1c40c4ba74220d9ee814257ae7d09c47
 F test/copy.test 92e21ebea11319c3f70448d3763fdaa0e2f1c21f
 F test/delete.test c904a62129fe102b314a96111a8417f10249e4d8
 F test/expr.test 5fadd0bc87c223b424ce6752b576c1df346abf1f
-F test/func.test 7e5500c9db4b02fd62f9737931a6ada01e3b55d0
-F test/in.test c09312672e3f0709fa02c8e2e9cd8fb4bd6269aa
+F test/func.test cae5f27e09736cfdcc978c3719ac1345405b848c
+F test/in.test e59461f1702b7387880bf08a0ce6bb777925d282
 F test/index.test c8a471243bbf878974b99baf5badd59407237cf3
 F test/insert.test a122afb86911e77c181d912348866a5b1a61eeab
 F test/insert2.test c288375a64dad3295044714f0dfed4a193cf067f
@@ -137,7 +137,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
 F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P 96515b813eb57e1f48c28d357d1f38639b2fdcfa
-R c1f2449afe59030f9bd638b2fb549a9b
+P 91c0db66c86facb21b5b522afadd83d91a488256
+R 7d04cf3eef7b325f91f0693158023bcb
 U drh
-Z e559f098ea075de4e2b198f365f605ef
+Z e9235d5a107811a531de8a11c88a7168
index dbe121612beb64674b905e07d640f1579ba54a01..60e6e273eca58f76734e2216b6899ec44d8ccda1 100644 (file)
@@ -1 +1 @@
-91c0db66c86facb21b5b522afadd83d91a488256
\ No newline at end of file
+8924a7f5bab790ab552332d6359028d0d1825e4a
\ No newline at end of file
index 62c7bf5bcdab686b59544ef3bbdb1854652d4dcf..771b26d61bedb61ed7558a9099059cbadacb0673 100644 (file)
@@ -13,7 +13,7 @@
 ** is not included in the SQLite library.  It is used for automated
 ** testing of the SQLite library.
 **
-** $Id: test1.c,v 1.10 2002/06/26 20:06:06 drh Exp $
+** $Id: test1.c,v 1.11 2002/07/01 00:31:36 drh Exp $
 */
 #include "sqliteInt.h"
 #include "tcl.h"
@@ -214,7 +214,7 @@ static void ifnullFunc(sqlite_func *context, int argc, const char **argv){
 /*
 ** Implementation of the x_sqlite_exec() function.  This function takes
 ** a single argument and attempts to execute that argument as SQL code.
-** This is illegal and shut set the SQLITE_MISUSE flag on the database.
+** This is illegal and should set the SQLITE_MISUSE flag on the database.
 ** 
 ** This routine simulates the effect of having two threads attempt to
 ** use the same database at the same time.
@@ -452,6 +452,60 @@ static int sqlite_abort(
   return TCL_OK;
 }
 
+/*
+** The following routine is a user-defined SQL function whose purpose
+** is to test the sqlite_set_result() API.
+*/
+static void testFunc(sqlite_func *context, int argc, const char **argv){
+  while( argc>=2 ){
+    if( argv[0]==0 ){
+      sqlite_set_result_error(context, "first argument to test function "
+         "may not be NULL", -1);
+    }else if( sqliteStrICmp(argv[0],"string")==0 ){
+      sqlite_set_result_string(context, argv[1], -1);
+    }else if( argv[1]==0 ){
+      sqlite_set_result_error(context, "2nd argument may not be NULL if the "
+         "first argument is not \"string\"", -1);
+    }else if( sqliteStrICmp(argv[0],"int")==0 ){
+      sqlite_set_result_int(context, atoi(argv[1]));
+    }else if( sqliteStrICmp(argv[0],"double")==0 ){
+      sqlite_set_result_double(context, atof(argv[1]));
+    }else{
+      sqlite_set_result_error(context,"first argument should be one of: "
+          "string int double", -1);
+    }
+    argc -= 2;
+    argv += 2;
+  }
+}
+
+/*
+** Usage:   sqlite_register_test_function  DB  NAME
+**
+** Register the test SQL function on the database DB under the name NAME.
+*/
+static int sqlite_register_test_function(
+  void *NotUsed,
+  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
+  int argc,              /* Number of arguments */
+  char **argv            /* Text of each argument */
+){
+  sqlite *db;
+  int rc;
+  if( argc!=3 ){
+    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 
+       " DB FUNCTION-NAME", 0);
+    return TCL_ERROR;
+  }
+  db = (sqlite*)strtol(argv[1], 0, 0);
+  rc = sqlite_create_function(db, argv[2], -1, testFunc, 0);
+  if( rc!=0 ){
+    Tcl_AppendResult(interp, sqlite_error_string(rc), 0);
+    return TCL_ERROR;
+  }
+  return TCL_OK;
+}
+
 /*
 ** Register commands with the TCL interpreter.
 */
@@ -470,6 +524,8 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
       sqlite_test_create_function, 0, 0);
   Tcl_CreateCommand(interp, "sqlite_create_aggregate",
       sqlite_test_create_aggregate, 0, 0);
+  Tcl_CreateCommand(interp, "sqlite_register_test_function",
+      sqlite_register_test_function, 0, 0);
   Tcl_LinkVar(interp, "sqlite_search_count", 
       (char*)&sqlite_search_count, TCL_LINK_INT);
 #ifdef MEMORY_DEBUG
index 12cdcfe90d2d8822a645e08d755d0ba6b653ac80..32cfb395b50d5f0baa44d21fec7ddd0fad24620d 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing built-in functions.
 #
-# $Id: func.test,v 1.13 2002/06/29 02:20:09 drh Exp $
+# $Id: func.test,v 1.14 2002/07/01 00:31:36 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -273,4 +273,60 @@ do_test func-9.1 {
   }
 } {1}
 
+# Use the "sqlite_register_test_function" TCL command which is part of
+# the text fixture in order to verify correct operation of some of
+# the user-defined SQL function APIs that are not used by the built-in
+# functions.
+#
+db close
+set ::DB [sqlite db test.db]
+sqlite_register_test_function $::DB testfunc
+do_test func-10.1 {
+  catchsql {
+    SELECT testfunc(NULL,NULL);
+  }
+} {1 {first argument to test function may not be NULL}}
+do_test func-10.2 {
+  execsql {
+    SELECT testfunc(
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'int', 1234
+    );
+  }
+} {1234}
+do_test func-10.3 {
+  execsql {
+    SELECT testfunc(
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'string', NULL
+    );
+  }
+} {{}}
+do_test func-10.4 {
+  execsql {
+    SELECT testfunc(
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'double', 1.234
+    );
+  }
+} {1.234}
+do_test func-10.5 {
+  execsql {
+    SELECT testfunc(
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'int', 1234,
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'string', NULL,
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'double', 1.234,
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'int', 1234,
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'string', NULL,
+     'string', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+     'double', 1.234
+    );
+  }
+} {1.234}
+
 finish_test
index 92bc422507664c83c0de4b276fa50b1b7f5e5fda..019d3bc5a496176edd29cf97524c15611bc1b45a 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing the IN and BETWEEN operator.
 #
-# $Id: in.test,v 1.6 2002/01/28 15:53:05 drh Exp $
+# $Id: in.test,v 1.7 2002/07/01 00:31:36 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -167,7 +167,9 @@ do_test in-6.1 {
     INSERT INTO ta VALUES(4,4);
     INSERT INTO ta VALUES(6,6);
     INSERT INTO ta VALUES(8,8);
-    SELECT * FROM ta;
+    INSERT INTO ta VALUES(10,
+       'This is a key that is long enough to require a malloc in the VDBE');
+    SELECT * FROM ta WHERE a<10;
   }
 } {1 1 2 2 3 3 4 4 6 6 8 8}
 do_test in-6.2 {
@@ -179,7 +181,9 @@ do_test in-6.2 {
     INSERT INTO tb VALUES(5,5);
     INSERT INTO tb VALUES(7,7);
     INSERT INTO tb VALUES(9,9);
-    SELECT * FROM tb;
+    INSERT INTO tb VALUES(11,
+       'This is a key that is long enough to require a malloc in the VDBE');
+    SELECT * FROM tb WHERE a<10;
   }
 } {1 1 2 2 3 3 5 5 7 7 9 9}
 do_test in-6.3 {
@@ -191,12 +195,12 @@ do_test in-6.4 {
   execsql {
     SELECT a FROM ta WHERE b NOT IN (SELECT a FROM tb);
   }
-} {4 6 8}
+} {4 6 8 10}
 do_test in-6.5 {
   execsql {
     SELECT a FROM ta WHERE b IN (SELECT b FROM tb);
   }
-} {1 2 3}
+} {1 2 3 10}
 do_test in-6.6 {
   execsql {
     SELECT a FROM ta WHERE b NOT IN (SELECT b FROM tb);
@@ -211,7 +215,7 @@ do_test in-6.8 {
   execsql {
     SELECT a FROM ta WHERE a NOT IN (SELECT a FROM tb);
   }
-} {4 6 8}
+} {4 6 8 10}
 do_test in-6.9 {
   execsql {
     SELECT a FROM ta WHERE a IN (SELECT b FROM tb);
@@ -221,7 +225,6 @@ do_test in-6.10 {
   execsql {
     SELECT a FROM ta WHERE a NOT IN (SELECT b FROM tb);
   }
-} {4 6 8}
-
+} {4 6 8 10}
 
 finish_test