Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Create the test_destructor16() test SQL function to enhance test coverage. Prior to check-in (4883), the test_destructor() function was sufficient, but we now need separate functions since the implementation is restricted to using the published API. (CVS 4884) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
bb7218657f3b06d810ad710fe64e5c99 |
User & Date: | drh 2008-03-19 16:35:24 |
Context
2008-03-19
| ||
19:01 | Initialize the MD5 SQL functions from test_func.c instead of using conditional compilation in tclsqlite.c. (CVS 4885) check-in: 801a0e3c user: drh tags: trunk | |
16:35 | Create the test_destructor16() test SQL function to enhance test coverage. Prior to check-in (4883), the test_destructor() function was sufficient, but we now need separate functions since the implementation is restricted to using the published API. (CVS 4884) check-in: bb721865 user: drh tags: trunk | |
16:08 | Move SQL functions used for testing only out of func.c and into a new test file named test_func.c. Use sqlite3_auto_extension() to make sure the test functions appear in every database connection. (CVS 4883) check-in: e90c4cc8 user: drh tags: trunk | |
Changes
Changes to src/test_func.c.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 ... 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** implements new SQL functions used by the test scripts. ** ** $Id: test_func.c,v 1.1 2008/03/19 16:08:54 drh Exp $ */ #include "sqlite3.h" #include "tcl.h" #include <stdlib.h> #include <string.h> #include <assert.h> ................................................................................ } zVal[len+1] = 0; zVal[len+2] = 0; zVal++; memcpy(zVal, sqlite3_value_text(argv[0]), len); sqlite3_result_text(pCtx, zVal, -1, destructor); } static void test_destructor_count( sqlite3_context *pCtx, int nArg, sqlite3_value **argv ){ sqlite3_result_int(pCtx, test_destructor_count_var); } ................................................................................ char *zName; signed char nArg; unsigned char eTextRep; /* 1: UTF-16. 0: UTF-8 */ void (*xFunc)(sqlite3_context*,int,sqlite3_value **); } aFuncs[] = { { "randstr", 2, SQLITE_UTF8, randStr }, { "test_destructor", 1, SQLITE_UTF8, test_destructor}, { "test_destructor_count", 0, SQLITE_UTF8, test_destructor_count}, { "test_auxdata", -1, SQLITE_UTF8, test_auxdata}, { "test_error", 1, SQLITE_UTF8, test_error}, }; int i; for(i=0; i<sizeof(aFuncs)/sizeof(aFuncs[0]); i++){ |
| > > > > > > > > > > > > > > > > > > > > > > > |
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 ... 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** implements new SQL functions used by the test scripts. ** ** $Id: test_func.c,v 1.2 2008/03/19 16:35:24 drh Exp $ */ #include "sqlite3.h" #include "tcl.h" #include <stdlib.h> #include <string.h> #include <assert.h> ................................................................................ } zVal[len+1] = 0; zVal[len+2] = 0; zVal++; memcpy(zVal, sqlite3_value_text(argv[0]), len); sqlite3_result_text(pCtx, zVal, -1, destructor); } static void test_destructor16( sqlite3_context *pCtx, int nArg, sqlite3_value **argv ){ char *zVal; int len; test_destructor_count_var++; assert( nArg==1 ); if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return; len = sqlite3_value_bytes16(argv[0]); zVal = testContextMalloc(pCtx, len+3); if( !zVal ){ return; } zVal[len+1] = 0; zVal[len+2] = 0; zVal++; memcpy(zVal, sqlite3_value_text16(argv[0]), len); sqlite3_result_text16(pCtx, zVal, -1, destructor); } static void test_destructor_count( sqlite3_context *pCtx, int nArg, sqlite3_value **argv ){ sqlite3_result_int(pCtx, test_destructor_count_var); } ................................................................................ char *zName; signed char nArg; unsigned char eTextRep; /* 1: UTF-16. 0: UTF-8 */ void (*xFunc)(sqlite3_context*,int,sqlite3_value **); } aFuncs[] = { { "randstr", 2, SQLITE_UTF8, randStr }, { "test_destructor", 1, SQLITE_UTF8, test_destructor}, { "test_destructor16", 1, SQLITE_UTF8, test_destructor16}, { "test_destructor_count", 0, SQLITE_UTF8, test_destructor_count}, { "test_auxdata", -1, SQLITE_UTF8, test_auxdata}, { "test_error", 1, SQLITE_UTF8, test_error}, }; int i; for(i=0; i<sizeof(aFuncs)/sizeof(aFuncs[0]); i++){ |
Changes to test/func.test.
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
|
# 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 testing built-in functions. # # $Id: func.test,v 1.72 2008/01/12 19:03:49 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table to work with. # do_test func-0.0 { ................................................................................ # (implemented in func.c) only available in test builds. # # Function test_destructor() takes one argument and returns a copy of the # text form of that argument. A destructor is associated with the return # value. Function test_destructor_count() returns the number of outstanding # destructor calls for values returned by test_destructor(). # do_test func-12.1 { execsql { SELECT test_destructor('hello world'), test_destructor_count(); } } {{hello world} 1} do_test func-12.2 { execsql { SELECT test_destructor_count(); } } {0} do_test func-12.3 { execsql { |
|
>
|
>
>
>
>
>
>
>
|
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
|
# 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 testing built-in functions. # # $Id: func.test,v 1.73 2008/03/19 16:35:24 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table to work with. # do_test func-0.0 { ................................................................................ # (implemented in func.c) only available in test builds. # # Function test_destructor() takes one argument and returns a copy of the # text form of that argument. A destructor is associated with the return # value. Function test_destructor_count() returns the number of outstanding # destructor calls for values returned by test_destructor(). # if {[db eval {PRAGMA encoding}]=="UTF-8"} { do_test func-12.1-utf8 { execsql { SELECT test_destructor('hello world'), test_destructor_count(); } } {{hello world} 1} } else { do_test func-12.1-utf16 { execsql { SELECT test_destructor16('hello world'), test_destructor_count(); } } {{hello world} 1} } do_test func-12.2 { execsql { SELECT test_destructor_count(); } } {0} do_test func-12.3 { execsql { |