Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: third_party/sqlite/src/test9.c

Issue 3108030: Move bundled copy of sqlite one level deeper to better separate it... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/test8.c ('k') | third_party/sqlite/src/test_async.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 ** 2007 March 29
3 **
4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
6 **
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
10 **
11 *************************************************************************
12 **
13 ** This file contains obscure tests of the C-interface required
14 ** for completeness. Test code is written in C for these cases
15 ** as there is not much point in binding to Tcl.
16 **
17 ** $Id: test9.c,v 1.7 2009/04/02 18:32:27 drh Exp $
18 */
19 #include "sqliteInt.h"
20 #include "tcl.h"
21 #include <stdlib.h>
22 #include <string.h>
23
24 /*
25 ** c_collation_test
26 */
27 static int c_collation_test(
28 ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
29 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
30 int objc, /* Number of arguments */
31 Tcl_Obj *CONST objv[] /* Command arguments */
32 ){
33 const char *zErrFunction = "N/A";
34 sqlite3 *db;
35
36 int rc;
37 if( objc!=1 ){
38 Tcl_WrongNumArgs(interp, 1, objv, "");
39 return TCL_ERROR;
40 }
41
42 /* Open a database. */
43 rc = sqlite3_open(":memory:", &db);
44 if( rc!=SQLITE_OK ){
45 zErrFunction = "sqlite3_open";
46 goto error_out;
47 }
48
49 rc = sqlite3_create_collation(db, "collate", 456, 0, 0);
50 if( rc!=SQLITE_MISUSE ){
51 sqlite3_close(db);
52 zErrFunction = "sqlite3_create_collation";
53 goto error_out;
54 }
55
56 sqlite3_close(db);
57 return TCL_OK;
58
59 error_out:
60 Tcl_ResetResult(interp);
61 Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);
62 return TCL_ERROR;
63 }
64
65 /*
66 ** c_realloc_test
67 */
68 static int c_realloc_test(
69 ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
70 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
71 int objc, /* Number of arguments */
72 Tcl_Obj *CONST objv[] /* Command arguments */
73 ){
74 void *p;
75 const char *zErrFunction = "N/A";
76
77 if( objc!=1 ){
78 Tcl_WrongNumArgs(interp, 1, objv, "");
79 return TCL_ERROR;
80 }
81
82 p = sqlite3_malloc(5);
83 if( !p ){
84 zErrFunction = "sqlite3_malloc";
85 goto error_out;
86 }
87
88 /* Test that realloc()ing a block of memory to a negative size is
89 ** the same as free()ing that memory.
90 */
91 p = sqlite3_realloc(p, -1);
92 if( p ){
93 zErrFunction = "sqlite3_realloc";
94 goto error_out;
95 }
96
97 return TCL_OK;
98
99 error_out:
100 Tcl_ResetResult(interp);
101 Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);
102 return TCL_ERROR;
103 }
104
105
106 /*
107 ** c_misuse_test
108 */
109 static int c_misuse_test(
110 ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
111 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
112 int objc, /* Number of arguments */
113 Tcl_Obj *CONST objv[] /* Command arguments */
114 ){
115 const char *zErrFunction = "N/A";
116 sqlite3 *db = 0;
117 sqlite3_stmt *pStmt;
118 int rc;
119
120 if( objc!=1 ){
121 Tcl_WrongNumArgs(interp, 1, objv, "");
122 return TCL_ERROR;
123 }
124
125 /* Open a database. Then close it again. We need to do this so that
126 ** we have a "closed database handle" to pass to various API functions.
127 */
128 rc = sqlite3_open(":memory:", &db);
129 if( rc!=SQLITE_OK ){
130 zErrFunction = "sqlite3_open";
131 goto error_out;
132 }
133 sqlite3_close(db);
134
135
136 rc = sqlite3_errcode(db);
137 if( rc!=SQLITE_MISUSE ){
138 zErrFunction = "sqlite3_errcode";
139 goto error_out;
140 }
141
142 pStmt = (sqlite3_stmt*)1234;
143 rc = sqlite3_prepare(db, 0, 0, &pStmt, 0);
144 if( rc!=SQLITE_MISUSE ){
145 zErrFunction = "sqlite3_prepare";
146 goto error_out;
147 }
148 assert( pStmt==0 ); /* Verify that pStmt is zeroed even on a MISUSE error */
149
150 pStmt = (sqlite3_stmt*)1234;
151 rc = sqlite3_prepare_v2(db, 0, 0, &pStmt, 0);
152 if( rc!=SQLITE_MISUSE ){
153 zErrFunction = "sqlite3_prepare_v2";
154 goto error_out;
155 }
156 assert( pStmt==0 );
157
158 #ifndef SQLITE_OMIT_UTF16
159 pStmt = (sqlite3_stmt*)1234;
160 rc = sqlite3_prepare16(db, 0, 0, &pStmt, 0);
161 if( rc!=SQLITE_MISUSE ){
162 zErrFunction = "sqlite3_prepare16";
163 goto error_out;
164 }
165 assert( pStmt==0 );
166 pStmt = (sqlite3_stmt*)1234;
167 rc = sqlite3_prepare16_v2(db, 0, 0, &pStmt, 0);
168 if( rc!=SQLITE_MISUSE ){
169 zErrFunction = "sqlite3_prepare16_v2";
170 goto error_out;
171 }
172 assert( pStmt==0 );
173 #endif
174
175 return TCL_OK;
176
177 error_out:
178 Tcl_ResetResult(interp);
179 Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);
180 return TCL_ERROR;
181 }
182
183 /*
184 ** Register commands with the TCL interpreter.
185 */
186 int Sqlitetest9_Init(Tcl_Interp *interp){
187 static struct {
188 char *zName;
189 Tcl_ObjCmdProc *xProc;
190 void *clientData;
191 } aObjCmd[] = {
192 { "c_misuse_test", c_misuse_test, 0 },
193 { "c_realloc_test", c_realloc_test, 0 },
194 { "c_collation_test", c_collation_test, 0 },
195 };
196 int i;
197 for(i=0; i<sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){
198 Tcl_CreateObjCommand(interp, aObjCmd[i].zName,
199 aObjCmd[i].xProc, aObjCmd[i].clientData, 0);
200 }
201 return TCL_OK;
202 }
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test8.c ('k') | third_party/sqlite/src/test_async.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698