Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improved test coverage of table.c and printf.c. (CVS 1762) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ba87834d863cb50f3016ccb04f790be5 |
User & Date: | drh 2004-06-29 13:04:33.000 |
Context
2004-06-29
| ||
13:18 | Test cases intended to improve coverage of main.c. (CVS 1763) (check-in: 15a084e9ea user: danielk1977 tags: trunk) | |
13:04 | Improved test coverage of table.c and printf.c. (CVS 1762) (check-in: ba87834d86 user: drh tags: trunk) | |
12:39 | Improved test coverage of tclsqlite.c (CVS 1761) (check-in: 008e57dcd5 user: drh tags: trunk) | |
Changes
Changes to src/table.c.
︙ | ︙ | |||
54 55 56 57 58 59 60 | }else{ need = nCol; } if( p->nData + need >= p->nAlloc ){ char **azNew; p->nAlloc = p->nAlloc*2 + need + 1; azNew = realloc( p->azResult, sizeof(char*)*p->nAlloc ); | | < < < | < < < | < < < > > > > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | }else{ need = nCol; } if( p->nData + need >= p->nAlloc ){ char **azNew; p->nAlloc = p->nAlloc*2 + need + 1; azNew = realloc( p->azResult, sizeof(char*)*p->nAlloc ); if( azNew==0 ) goto malloc_failed; p->azResult = azNew; } /* If this is the first row, then generate an extra row containing ** the names of all columns. */ if( p->nRow==0 ){ p->nColumn = nCol; for(i=0; i<nCol; i++){ if( colv[i]==0 ){ z = 0; }else{ z = malloc( strlen(colv[i])+1 ); if( z==0 ) goto malloc_failed; strcpy(z, colv[i]); } p->azResult[p->nData++] = z; } }else if( p->nColumn!=nCol ){ sqlite3SetString(&p->zErrMsg, "sqlite3_get_table() called with two or more incompatible queries", (char*)0); p->rc = SQLITE_ERROR; return 1; } /* Copy over the row data */ if( argv!=0 ){ for(i=0; i<nCol; i++){ if( argv[i]==0 ){ z = 0; }else{ z = malloc( strlen(argv[i])+1 ); if( z==0 ) goto malloc_failed; strcpy(z, argv[i]); } p->azResult[p->nData++] = z; } p->nRow++; } return 0; malloc_failed: p->rc = SQLITE_NOMEM; return 1; } /* ** Query the database. But instead of invoking a callback for each row, ** malloc() for space to hold the result and return the entire results ** at the conclusion of the call. ** |
︙ | ︙ | |||
140 141 142 143 144 145 146 | res.nResult = 0; res.nRow = 0; res.nColumn = 0; res.nData = 1; res.nAlloc = 20; res.rc = SQLITE_OK; res.azResult = malloc( sizeof(char*)*res.nAlloc ); | | < < | 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | res.nResult = 0; res.nRow = 0; res.nColumn = 0; res.nData = 1; res.nAlloc = 20; res.rc = SQLITE_OK; res.azResult = malloc( sizeof(char*)*res.nAlloc ); if( res.azResult==0 ) return SQLITE_NOMEM; res.azResult[0] = 0; rc = sqlite3_exec(db, zSql, sqlite3_get_table_cb, &res, pzErrMsg); if( res.azResult ){ res.azResult[0] = (char*)res.nData; } if( rc==SQLITE_ABORT ){ sqlite3_free_table(&res.azResult[1]); |
︙ | ︙ | |||
186 187 188 189 190 191 192 | return rc; } /* ** This routine frees the space the sqlite3_get_table() malloced. */ void sqlite3_free_table( | | < < < | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | return rc; } /* ** This routine frees the space the sqlite3_get_table() malloced. */ void sqlite3_free_table( char **azResult /* Result returned from from sqlite3_get_table() */ ){ if( azResult ){ int i, n; azResult--; if( azResult==0 ) return; n = (int)azResult[0]; for(i=1; i<n; i++){ if( azResult[i] ) free(azResult[i]); } free(azResult); } } |
Changes to test/printf.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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 implements regression tests for SQLite library. The # focus of this file is testing the sqlite_*_printf() interface. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 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 implements regression tests for SQLite library. The # focus of this file is testing the sqlite_*_printf() interface. # # $Id: printf.test,v 1.11 2004/06/29 13:04:33 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl set n 1 foreach v {1 2 5 10 99 100 1000000 999999999 0 -1 -2 -5 -10 -99 -100 -9999999} { do_test printf-1.$n.1 [subst { |
︙ | ︙ | |||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 | }] [format {Three integers: (%+6d) (%+6x) (%+6o)} $v $v $v] do_test printf-1.$n.5 [subst { sqlite3_mprintf_int {Three integers: (%06d) (%06x) (%06o)} $v $v $v }] [format {Three integers: (%06d) (%06x) (%06o)} $v $v $v] do_test printf-1.$n.6 [subst { sqlite3_mprintf_int {Three integers: (% 6d) (% 6x) (% 6o)} $v $v $v }] [format {Three integers: (% 6d) (% 6x) (% 6o)} $v $v $v] incr n } if {$::tcl_platform(platform)!="windows"} { set m 1 | > > > | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | }] [format {Three integers: (%+6d) (%+6x) (%+6o)} $v $v $v] do_test printf-1.$n.5 [subst { sqlite3_mprintf_int {Three integers: (%06d) (%06x) (%06o)} $v $v $v }] [format {Three integers: (%06d) (%06x) (%06o)} $v $v $v] do_test printf-1.$n.6 [subst { sqlite3_mprintf_int {Three integers: (% 6d) (% 6x) (% 6o)} $v $v $v }] [format {Three integers: (% 6d) (% 6x) (% 6o)} $v $v $v] do_test printf-1.$n.7 [subst { sqlite3_mprintf_int {Three integers: (%#6d) (%#6x) (%#6o)} $v $v $v }] [format {Three integers: (%#6d) (%#6x) (%#6o)} $v $v $v] incr n } if {$::tcl_platform(platform)!="windows"} { set m 1 |
︙ | ︙ | |||
57 58 59 60 61 62 63 64 65 66 67 68 69 70 | }] [format {A double: %*.*g} $a $b $x] do_test printf-2.$m.$n.4 [subst { sqlite3_mprintf_double {A double: %d %d %g} $a $b $x }] [format {A double: %d %d %g} $a $b $x] do_test printf-2.$m.$n.5 [subst { sqlite3_mprintf_double {A double: %d %d %#g} $a $b $x }] [format {A double: %d %d %#g} $a $b $x] incr n } incr m } } | > > > | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | }] [format {A double: %*.*g} $a $b $x] do_test printf-2.$m.$n.4 [subst { sqlite3_mprintf_double {A double: %d %d %g} $a $b $x }] [format {A double: %d %d %g} $a $b $x] do_test printf-2.$m.$n.5 [subst { sqlite3_mprintf_double {A double: %d %d %#g} $a $b $x }] [format {A double: %d %d %#g} $a $b $x] do_test printf-2.$m.$n.6 [subst { sqlite3_mprintf_double {A double: %d %d %010g} $a $b $x }] [format {A double: %d %d %010g} $a $b $x] incr n } incr m } } |
︙ | ︙ | |||
137 138 139 140 141 142 143 144 145 | } {2147483647 2147483648 4294967296} do_test printf-8.5 { sqlite3_mprintf_int64 {%llx %llx %llx} 2147483647 2147483648 4294967296 } {7fffffff 80000000 100000000} do_test printf-8.6 { sqlite3_mprintf_int64 {%llx %llo %lld} -1 -1 -1 } {ffffffffffffffff 1777777777777777777777 -1} finish_test | > > > > > > > > > > > > > | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | } {2147483647 2147483648 4294967296} do_test printf-8.5 { sqlite3_mprintf_int64 {%llx %llx %llx} 2147483647 2147483648 4294967296 } {7fffffff 80000000 100000000} do_test printf-8.6 { sqlite3_mprintf_int64 {%llx %llo %lld} -1 -1 -1 } {ffffffffffffffff 1777777777777777777777 -1} do_test printf-9.1 { sqlite3_mprintf_int {%*.*c} 4 4 65 } {AAAA} do_test printf-9.2 { sqlite3_mprintf_int {%*.*c} -4 1 66 } {B } do_test printf-9.3 { sqlite3_mprintf_int {%*.*c} 4 1 67 } { C} do_test printf-9.4 { sqlite3_mprintf_int {%yhello} 0 0 0 } {%} finish_test |