Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Test sqlite3_bind_zeroblob(). Only include sqlite3Utf8To8 in builds if SQLITE_DEBUG is defined. (CVS 4363) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
fde6142b7bb33198b3d6b65cfbddfad6 |
User & Date: | danielk1977 2007-09-01 11:04:26.000 |
Context
2007-09-01
| ||
16:16 | Remove the syncOk argument to pager_recycle. Now that sqlite3_memory_release uses a global lru list of page, it is no longer required. (CVS 4364) (check-in: fb27692ab1 user: danielk1977 tags: trunk) | |
11:04 | Test sqlite3_bind_zeroblob(). Only include sqlite3Utf8To8 in builds if SQLITE_DEBUG is defined. (CVS 4363) (check-in: fde6142b7b user: danielk1977 tags: trunk) | |
10:01 | Allow sqlite3GetInt32 to recognize 10-digit decimal numbers as 32-bit. (CVS 4362) (check-in: 7571345d20 user: danielk1977 tags: trunk) | |
Changes
Changes to src/test1.c.
︙ | ︙ | |||
9 10 11 12 13 14 15 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** ** $Id: test1.c,v 1.274 2007/09/01 11:04:26 danielk1977 Exp $ */ #include "sqliteInt.h" #include "tcl.h" #include <stdlib.h> #include <string.h> /* |
︙ | ︙ | |||
2458 2459 2460 2461 2462 2463 2464 | ){ sqlite3_stmt *pStmt; int idx; int n; int rc; if( objc!=4 ){ | | < | 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 | ){ sqlite3_stmt *pStmt; int idx; int n; int rc; if( objc!=4 ){ Tcl_WrongNumArgs(interp, 1, objv, "STMT IDX N"); return TCL_ERROR; } if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &idx) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[3], &n) ) return TCL_ERROR; |
︙ | ︙ |
Changes to src/test_hexio.c.
︙ | ︙ | |||
13 14 15 16 17 18 19 | ** implements TCL commands for reading and writing the binary ** database files and displaying the content of those files as ** hexadecimal. We could, in theory, use the built-in "binary" ** command of TCL to do a lot of this, but there are some issues ** with historical versions of the "binary" command. So it seems ** easier and safer to build our own mechanism. ** | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ** implements TCL commands for reading and writing the binary ** database files and displaying the content of those files as ** hexadecimal. We could, in theory, use the built-in "binary" ** command of TCL to do a lot of this, but there are some issues ** with historical versions of the "binary" command. So it seems ** easier and safer to build our own mechanism. ** ** $Id: test_hexio.c,v 1.5 2007/09/01 11:04:27 danielk1977 Exp $ */ #include "sqliteInt.h" #include "tcl.h" #include <stdlib.h> #include <string.h> #include <assert.h> |
︙ | ︙ | |||
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 | */ static int utf8_to_utf8( void * clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[] ){ int n; int nOut; const unsigned char *zOrig; unsigned char *z; if( objc!=2 ){ Tcl_WrongNumArgs(interp, 1, objv, "HEX"); return TCL_ERROR; } zOrig = (unsigned char *)Tcl_GetStringFromObj(objv[1], &n); z = sqlite3_malloc( n+3 ); n = hexToBin(zOrig, n, z); z[n] = 0; nOut = sqlite3Utf8To8(z); binToHex(z,nOut); Tcl_AppendResult(interp, (char*)z, 0); sqlite3_free(z); return TCL_OK; } /* ** Register commands with the TCL interpreter. */ | > > | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 | */ static int utf8_to_utf8( void * clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[] ){ #ifdef SQLITE_DEBUG int n; int nOut; const unsigned char *zOrig; unsigned char *z; if( objc!=2 ){ Tcl_WrongNumArgs(interp, 1, objv, "HEX"); return TCL_ERROR; } zOrig = (unsigned char *)Tcl_GetStringFromObj(objv[1], &n); z = sqlite3_malloc( n+3 ); n = hexToBin(zOrig, n, z); z[n] = 0; nOut = sqlite3Utf8To8(z); binToHex(z,nOut); Tcl_AppendResult(interp, (char*)z, 0); sqlite3_free(z); #endif return TCL_OK; } /* ** Register commands with the TCL interpreter. */ |
︙ | ︙ |
Changes to src/utf.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used to translate between UTF-8, ** UTF-16, UTF-16BE, and UTF-16LE. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used to translate between UTF-8, ** UTF-16, UTF-16BE, and UTF-16LE. ** ** $Id: utf.c,v 1.57 2007/09/01 11:04:27 danielk1977 Exp $ ** ** Notes on UTF-8: ** ** Byte-0 Byte-1 Byte-2 Byte-3 Value ** 0xxxxxxx 00000000 00000000 0xxxxxxx ** 110yyyyy 10xxxxxx 00000000 00000yyy yyxxxxxx ** 1110zzzz 10yyyyyy 10xxxxxx 00000000 zzzzyyyy yyxxxxxx |
︙ | ︙ | |||
452 453 454 455 456 457 458 | READ_UTF16LE(z, c); n++; } } return (z-(char const *)zIn)-((c==0)?2:0); } | > > > | | 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 | READ_UTF16LE(z, c); n++; } } return (z-(char const *)zIn)-((c==0)?2:0); } /* This test function is not currently used by the automated test-suite. ** Hence it is only available in debug builds. */ #if defined(SQLITE_TEST) && defined(SQLITE_DEBUG) /* ** Translate UTF-8 to UTF-8. ** ** This has the effect of making sure that the string is well-formed ** UTF-8. Miscoded characters are removed. ** ** The translation is done in-place (since it is impossible for the |
︙ | ︙ |
Changes to test/all.test.
1 2 3 4 5 6 7 8 9 10 11 12 | # 2001 September 15 # # 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 runs all tests. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 2001 September 15 # # 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 runs all tests. # # $Id: all.test,v 1.48 2007/09/01 11:04:28 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl rename finish_test really_finish_test proc finish_test {} { # no-op } |
︙ | ︙ | |||
58 59 60 61 62 63 64 | lappend EXCLUDE crash.test ;# Run seperately later. lappend EXCLUDE crash2.test ;# Run seperately later. lappend EXCLUDE autovacuum_crash.test ;# Run seperately later. lappend EXCLUDE quick.test ;# Alternate test driver script lappend EXCLUDE malloc.test ;# Run seperately later. lappend EXCLUDE misuse.test ;# Run seperately later. lappend EXCLUDE memleak.test ;# Alternate test driver script | < | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | lappend EXCLUDE crash.test ;# Run seperately later. lappend EXCLUDE crash2.test ;# Run seperately later. lappend EXCLUDE autovacuum_crash.test ;# Run seperately later. lappend EXCLUDE quick.test ;# Alternate test driver script lappend EXCLUDE malloc.test ;# Run seperately later. lappend EXCLUDE misuse.test ;# Run seperately later. lappend EXCLUDE memleak.test ;# Alternate test driver script lappend EXCLUDE fuzz.test lappend EXCLUDE soak.test ;# Takes a very long time (default 1 hr) # Files to include in the test. If this list is empty then everything # that is not in the EXCLUDE list is run. # set INCLUDE { |
︙ | ︙ |
Changes to test/sqllimits1.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains tests to verify that the limits defined in # sqlite source file limits.h are enforced. # | | | > > > > > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains tests to verify that the limits defined in # sqlite source file limits.h are enforced. # # $Id: sqllimits1.test,v 1.13 2007/09/01 11:04:28 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Test organization: # # sqllimits-1.*: SQLITE_MAX_LENGTH # sqllimits-2.*: SQLITE_MAX_SQL_LENGTH # sqllimits-3.*: SQLITE_MAX_PAGE_COUNT (and the max_page_count pragma) # sqllimits-4.*: SQLITE_MAX_COLUMN # # # sqllimits-7.*: SQLITE_MAX_FUNCTION_ARG # sqllimits-8.*: SQLITE_MAX_ATTACHED # sqllimits-9.*: SQLITE_MAX_VARIABLE_NUMBER # sqllimits-10.*: SQLITE_MAX_PAGE_SIZE # sqllimits-11.*: SQLITE_MAX_LIKE_PATTERN_LENGTH # # Todo: # # sqllimits-5.*: SQLITE_MAX_EXPR_DEPTH (sqlite todo) # sqllimits-6.*: SQLITE_MAX_VDBE_OP (sqlite todo) # sqllimits-12.*: SQLITE_MAX_PAGE_COUNT (sqlite todo) # unset -nocomplain saved foreach var [info vars SQLITE_MAX_*] { set saved($var) [set $var] } set SQLITE_MAX_LENGTH 100000 set SQLITE_MAX_COLUMN set SQLITE_MAX_SQL_LENGTH 100000 set SQLITE_MAX_EXPR_DEPTH 1000 set SQLITE_MAX_COMPOUND_SELECT 5 set SQLITE_MAX_VDBE_OP |
︙ | ︙ | |||
468 469 470 471 472 473 474 475 | do_test sqllimits-1.12.2 { set ::format "[string repeat A 60][string repeat "%J" $::N]" catchsql { SELECT strftime($::format, 1); } } {1 {string or blob too big}} finish_test | > > > > | 473 474 475 476 477 478 479 480 481 482 483 484 | do_test sqllimits-1.12.2 { set ::format "[string repeat A 60][string repeat "%J" $::N]" catchsql { SELECT strftime($::format, 1); } } {1 {string or blob too big}} foreach {key value} [array get saved] { catch {set $key $value} } finish_test |
Changes to test/zeroblob.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing of the zero-filled blob functionality # including the sqlite3_bind_zeroblob(), sqlite3_result_zeroblob(), # and the built-in zeroblob() SQL function. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing of the zero-filled blob functionality # including the sqlite3_bind_zeroblob(), sqlite3_result_zeroblob(), # and the built-in zeroblob() SQL function. # # $Id: zeroblob.test,v 1.7 2007/09/01 11:04:28 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !incrblob { finish_test return |
︙ | ︙ | |||
171 172 173 174 175 176 177 178 179 | } {1} do_test zeroblob-6.4 { catchsql {select length(zeroblob(2147483648))} } {1 {string or blob too big}} do_test zeroblob-6.5 { catchsql {select zeroblob(2147483648)} } {1 {string or blob too big}} finish_test | > > > > > > > > > > > > > > | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | } {1} do_test zeroblob-6.4 { catchsql {select length(zeroblob(2147483648))} } {1 {string or blob too big}} do_test zeroblob-6.5 { catchsql {select zeroblob(2147483648)} } {1 {string or blob too big}} # Test bind_zeroblob() # do_test zeroblob-7.1 { set ::STMT [sqlite3_prepare $::DB "SELECT length(?)" -1 DUMMY] sqlite3_bind_zeroblob $::STMT 1 450 sqlite3_step $::STMT } {SQLITE_ROW} do_test zeroblob-7.2 { sqlite3_column_int $::STMT 0 } {450} do_test zeroblob-7.3 { sqlite3_finalize $::STMT } {SQLITE_OK} finish_test |