mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add TCL test bindings and some more test cases for the new query API. (CVS 1467)
FossilOrigin-Name: d72adf0c522b442d5e1663862bdd639c282d4495
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
||||
C Break\sMem.flags\sinto\sMem.type\sand\sMem.enc.\s(CVS\s1466)
|
||||
D 2004-05-26T23:43:12
|
||||
C Add\sTCL\stest\sbindings\sand\ssome\smore\stest\scases\sfor\sthe\snew\squery\sAPI.\s(CVS\s1467)
|
||||
D 2004-05-27T01:04:07
|
||||
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
|
||||
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
||||
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
||||
@ -59,7 +59,7 @@ F src/sqlite.h.in 68e165dc4dc2d477c95c76b9ede13eed5fbaabf4
|
||||
F src/sqliteInt.h 6b0d8d856c4af325eb5a00d1c32d89aacf432875
|
||||
F src/table.c af14284fa36c8d41f6829e3f2819dce07d3e2de2
|
||||
F src/tclsqlite.c 86daf7bf6ba715bf0f0c7a47beb1d947a15cb868
|
||||
F src/test1.c f9d1e36b87b5a2253dabd4c563e110e8d8273dbf
|
||||
F src/test1.c 039659c18c6746199fe6e23863bb117a8e216f54
|
||||
F src/test2.c 6195a1ca2c8d0d2d93644e86da3289b403486872
|
||||
F src/test3.c 5e4a6d596f982f6f47a5f9f75ede9b4a3b739968
|
||||
F src/test4.c 34848a9fd31aa65857b20a8bfc03aff77d8c3426
|
||||
@ -90,7 +90,7 @@ F test/btree4.test 3797b4305694c7af6828675b0f4b1424b8ca30e4
|
||||
F test/btree5.test 8e5ff32c02e685d36516c6499add9375fe1377f2
|
||||
F test/btree6.test a5ede6bfbbb2ec8b27e62813612c0f28e8f3e027
|
||||
F test/capi2.test 8fb64e8ab7f78b8254cd4d04bb96822167f731b2
|
||||
F test/capi3.test 7ee3e33971ca5301f6a01e92cffaab95f91f417b
|
||||
F test/capi3.test 64b7bad608d896468a5b4b926ed9037d112b6d77
|
||||
F test/conflict.test 0911bb2f079046914a6e9c3341b36658c4e2103e
|
||||
F test/copy.test f07ea8d60878da7a67416ab62f78e9706b9d3c45
|
||||
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
|
||||
@ -205,7 +205,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
|
||||
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
|
||||
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
||||
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
|
||||
P bba6684d502ba1ecd9614d2470ec94296e3c07c2
|
||||
R 3631e4c50022e315d656f5e4e18ecf0f
|
||||
U drh
|
||||
Z 55bf782fc149a5ef1b23628e3441dfe2
|
||||
P 68ef17028621681f5d091e77d5df84f663a15e27
|
||||
R 7a2016da4fa120ff352ff7111a3e7361
|
||||
U danielk1977
|
||||
Z d6c93a1d5f40d138f387c99f637a146d
|
||||
|
@ -1 +1 @@
|
||||
68ef17028621681f5d091e77d5df84f663a15e27
|
||||
d72adf0c522b442d5e1663862bdd639c282d4495
|
328
src/test1.c
328
src/test1.c
@ -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.59 2004/05/26 23:25:31 drh Exp $
|
||||
** $Id: test1.c,v 1.60 2004/05/27 01:04:07 danielk1977 Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "tcl.h"
|
||||
@ -1315,133 +1315,6 @@ static int test_step(
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_text STMT column
|
||||
**
|
||||
** Advance the statement to the next row.
|
||||
*/
|
||||
static int test_column_text(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
Tcl_Obj *pRet;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
if( SQLITE3_BLOB==sqlite3_column_type(pStmt, col) ){
|
||||
int len = sqlite3_column_bytes(pStmt, col);
|
||||
pRet = Tcl_NewByteArrayObj(sqlite3_column_text(pStmt, col), len);
|
||||
}else{
|
||||
pRet = Tcl_NewStringObj(sqlite3_column_text(pStmt, col), -1);
|
||||
}
|
||||
Tcl_SetObjResult(interp, pRet);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_text16 STMT column
|
||||
**
|
||||
** Advance the statement to the next row.
|
||||
*/
|
||||
static int test_column_text16(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
Tcl_Obj *pRet;
|
||||
int len;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
len = sqlite3_column_bytes16(pStmt, col);
|
||||
pRet = Tcl_NewByteArrayObj(sqlite3_column_text16(pStmt, col), len);
|
||||
Tcl_SetObjResult(interp, pRet);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_name STMT column
|
||||
**
|
||||
** Advance the statement to the next row.
|
||||
*/
|
||||
static int test_column_name(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
Tcl_SetResult(interp, (char *)sqlite3_column_name(pStmt, col), 0);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_name16 STMT column
|
||||
**
|
||||
** Advance the statement to the next row.
|
||||
*/
|
||||
static int test_column_name16(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
Tcl_Obj *pRet;
|
||||
const void *zName16;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
zName16 = sqlite3_column_name16(pStmt, col);
|
||||
pRet = Tcl_NewByteArrayObj(zName16, sqlite3utf16ByteLen(zName16, -1)+2);
|
||||
Tcl_SetObjResult(interp, pRet);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_count STMT
|
||||
**
|
||||
@ -1516,12 +1389,12 @@ static int test_column_type(
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_int STMT column
|
||||
** Usage: sqlite3_column_int64 STMT column
|
||||
**
|
||||
** Return the data in column 'column' of the current row cast as an
|
||||
** integer.
|
||||
** wide (64-bit) integer.
|
||||
*/
|
||||
static int test_column_int(
|
||||
static int test_column_int64(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
@ -1529,6 +1402,7 @@ static int test_column_int(
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
i64 iVal;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
@ -1539,7 +1413,37 @@ static int test_column_int(
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_column_int(pStmt, col)));
|
||||
iVal = sqlite3_column_int64(pStmt, col);
|
||||
Tcl_SetObjResult(interp, Tcl_NewWideIntObj(iVal));
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_double STMT column
|
||||
**
|
||||
** Return the data in column 'column' of the current row cast as a double.
|
||||
*/
|
||||
static int test_column_double(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
double rVal;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
rVal = sqlite3_column_double(pStmt, col);
|
||||
Tcl_SetObjResult(interp, Tcl_NewDoubleObj(iVal));
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
@ -1609,6 +1513,102 @@ static int reverse_collfunc(
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_text STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_decltype STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_name STMT column
|
||||
*/
|
||||
static int test_stmt_utf8(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
const char *(xFunc *)(sqlite3_stmt*, int) = clientData;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
Tcl_SetResult(interp, (char *)xFunc(pStmt, col), 0);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_text STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_decltype STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_name STMT column
|
||||
*/
|
||||
static int test_stmt_utf16(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
Tcl_Obj *pRet;
|
||||
const void *zName16;
|
||||
const void *(xFunc *)(sqlite3_stmt*, int) = clientData;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
zName16 = xFunc(pStmt, col);
|
||||
pRet = Tcl_NewByteArrayObj(zName16, sqlite3utf16ByteLen(zName16, -1)+2);
|
||||
Tcl_SetObjResult(interp, pRet);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_column_int STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_bytes STMT column
|
||||
**
|
||||
** Usage: sqlite3_column_bytes16 STMT column
|
||||
**
|
||||
*/
|
||||
static int test_stmt_int(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
sqlite3_stmt *pStmt;
|
||||
int col;
|
||||
int (xFunc *)(sqlite3_stmt*, int) = clientData;
|
||||
|
||||
if( objc!=3 ){
|
||||
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||
Tcl_GetString(objv[0]), " STMT column", 0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
|
||||
if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
|
||||
|
||||
Tcl_SetObjResult(interp, Tcl_NewIntObj(xFunc(pStmt, col)));
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** Register commands with the TCL interpreter.
|
||||
@ -1645,33 +1645,45 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
||||
static struct {
|
||||
char *zName;
|
||||
Tcl_ObjCmdProc *xProc;
|
||||
void *clientData;
|
||||
} aObjCmd[] = {
|
||||
{ "sqlite3_bind_int32", (Tcl_ObjCmdProc*)test_bind_int32 },
|
||||
{ "sqlite3_bind_int64", (Tcl_ObjCmdProc*)test_bind_int64 },
|
||||
{ "sqlite3_bind_double", (Tcl_ObjCmdProc*)test_bind_double },
|
||||
{ "sqlite3_bind_null", (Tcl_ObjCmdProc*)test_bind_null },
|
||||
{ "sqlite3_bind_text", (Tcl_ObjCmdProc*)test_bind_text },
|
||||
{ "sqlite3_bind_text16", (Tcl_ObjCmdProc*)test_bind_text16 },
|
||||
{ "sqlite3_bind_blob", (Tcl_ObjCmdProc*)test_bind_blob },
|
||||
{ "sqlite3_errcode", (Tcl_ObjCmdProc*)test_errcode },
|
||||
{ "sqlite3_errmsg", (Tcl_ObjCmdProc*)test_errmsg },
|
||||
{ "sqlite3_errmsg16", (Tcl_ObjCmdProc*)test_errmsg16 },
|
||||
{ "sqlite3_prepare", (Tcl_ObjCmdProc*)test_prepare },
|
||||
{ "sqlite3_prepare16", (Tcl_ObjCmdProc*)test_prepare16 },
|
||||
{ "sqlite3_open", (Tcl_ObjCmdProc*)test_open },
|
||||
{ "sqlite3_open16", (Tcl_ObjCmdProc*)test_open16 },
|
||||
{ "sqlite3_finalize", (Tcl_ObjCmdProc*)test_finalize },
|
||||
{ "sqlite3_reset", (Tcl_ObjCmdProc*)test_reset },
|
||||
{ "sqlite3_step", (Tcl_ObjCmdProc*)test_step},
|
||||
{ "sqlite3_column_text", (Tcl_ObjCmdProc*)test_column_text },
|
||||
{ "sqlite3_column_text16", (Tcl_ObjCmdProc*)test_column_text16 },
|
||||
{ "sqlite3_column_count", (Tcl_ObjCmdProc*)test_column_count },
|
||||
{ "sqlite3_column_name", (Tcl_ObjCmdProc*)test_column_name },
|
||||
{ "sqlite3_column_name16", (Tcl_ObjCmdProc*)test_column_name16 },
|
||||
{ "sqlite3_column_type", (Tcl_ObjCmdProc*)test_column_type },
|
||||
{ "sqlite3_column_int", (Tcl_ObjCmdProc*)test_column_int },
|
||||
{ "sqlite3_data_count", (Tcl_ObjCmdProc*)test_data_count },
|
||||
{ "add_reverse_collating_func", (Tcl_ObjCmdProc*)reverse_collfunc },
|
||||
{ "sqlite3_bind_int32", test_bind_int32, 0 },
|
||||
{ "sqlite3_bind_int64", test_bind_int64 , 0 },
|
||||
{ "sqlite3_bind_double", test_bind_double, 0 },
|
||||
{ "sqlite3_bind_null", test_bind_null ,0 },
|
||||
{ "sqlite3_bind_text", test_bind_text ,0 },
|
||||
{ "sqlite3_bind_text16", test_bind_text16 ,0 },
|
||||
{ "sqlite3_bind_blob", test_bind_blob ,0 },
|
||||
{ "sqlite3_errcode", test_errcode ,0 },
|
||||
{ "sqlite3_errmsg", test_errmsg ,0 },
|
||||
{ "sqlite3_errmsg16", test_errmsg16 ,0 },
|
||||
{ "sqlite3_open", test_open ,0 },
|
||||
{ "sqlite3_open16", test_open16 ,0 },
|
||||
{ "add_reverse_collating_func", reverse_collfunc ,0 },
|
||||
|
||||
{ "sqlite3_prepare", test_prepare ,0 },
|
||||
{ "sqlite3_prepare16", test_prepare16 ,0 },
|
||||
{ "sqlite3_finalize", test_finalize ,0 },
|
||||
{ "sqlite3_reset", test_reset ,0 },
|
||||
{ "sqlite3_step", test_step,0 },
|
||||
|
||||
/* sqlite3_column_*() API */
|
||||
{ "sqlite3_column_count", test_column_count ,0 },
|
||||
{ "sqlite3_data_count", test_data_count ,0 },
|
||||
{ "sqlite3_column_type", test_column_type ,0 },
|
||||
{ "sqlite3_column_blob", test_column_name ,0 },
|
||||
{ "sqlite3_column_double", test_column_double ,0 },
|
||||
{ "sqlite3_column_int64", test_column_int64 ,0 },
|
||||
{ "sqlite3_column_int", test_stmt_int ,sqlite3_column_int },
|
||||
{ "sqlite3_column_bytes", test_stmt_int ,sqlite3_column_bytes },
|
||||
{ "sqlite3_column_bytes16", test_stmt_int ,sqlite3_column_bytes16 },
|
||||
{ "sqlite3_column_text", test_stmt_utf8, sqlite3_column_text},
|
||||
{ "sqlite3_column_decltype", test_stmt_utf8, sqlite3_column_decltype},
|
||||
{ "sqlite3_column_name", test_stmt_utf8, sqlite3_column_name},
|
||||
{ "sqlite3_column_text16", test_stmt_utf16, sqlite3_column_text16},
|
||||
{ "sqlite3_column_decltype16", test_stmt_utf16,sqlite3_column_decltype16},
|
||||
{ "sqlite3_column_name16", test_stmt_utf16, sqlite3_column_name16},
|
||||
|
||||
};
|
||||
int i;
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this script testing the callback-free C/C++ API.
|
||||
#
|
||||
# $Id: capi3.test,v 1.5 2004/05/26 13:27:00 danielk1977 Exp $
|
||||
# $Id: capi3.test,v 1.6 2004/05/27 01:04:07 danielk1977 Exp $
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
@ -162,16 +162,21 @@ do_test capi3-4.4 {
|
||||
# columns (before the statement is executed).
|
||||
# capi3-5.1: Check we can retrieve column names (before statement execution)
|
||||
# capi3-5.2: Check we can retrieve column names in UTF-16
|
||||
# capi3-5.3: Step the statement.
|
||||
# capi3-5.4: Check the types of the values.
|
||||
# capi3-5.5: Check the values can be retrieved as integers.
|
||||
# capi3-5.6: Check the values can be retrieved as UTF-8 text.
|
||||
# capi3-5.7: Check the values can be retrieved as UTF-16 text.
|
||||
# capi3-5.8: Check that the types of the values have not been altered by
|
||||
# retrieving the values as text.
|
||||
#
|
||||
# Test cases capi3-5.9 - capi3-5.14 are a repeat of 3-8, with a different
|
||||
# row of data.
|
||||
# capi3-5.1.3: Step the statement.
|
||||
# capi3-5.1.4: Check the types of the values.
|
||||
# capi3-5.1.5: Check the values can be retrieved as integers.
|
||||
# capi3-5.1.6: Check the values can be retrieved as UTF-8 text.
|
||||
# capi3-5.1.7: Check the values can be retrieved as floats.
|
||||
# capi3-5.1.8: Check the values can be retrieved as UTF-16 text.
|
||||
# capi3-5.1.9: Check the values can be retrieved as integers.
|
||||
# capi3-5.1.10: Check the values can be retrieved as floats.
|
||||
# capi3-5.1.11: Check the values can still be retrieved as UTF-8 text.
|
||||
# capi3-5.1.12: Check that the types of the values have not been altered by
|
||||
# retrieving the values as text.
|
||||
#
|
||||
# Test cases capi3-5.2.3 - capi3-5.2.12 are a repeat of 1.3-1.12, with a
|
||||
# different row of data.
|
||||
#
|
||||
|
||||
do_test capi3-5.0 {
|
||||
@ -198,37 +203,68 @@ do_test capi3-5.2 {
|
||||
set cnamelist
|
||||
} {a b c}
|
||||
|
||||
do_test capi3-5.3 {
|
||||
do_test capi3-5.1.3 {
|
||||
sqlite3_step $STMT
|
||||
} SQLITE_ROW
|
||||
|
||||
do_test capi3-5.4 {
|
||||
# types
|
||||
do_test capi3-5.1.4 {
|
||||
set types [list]
|
||||
foreach i {0 1 2} {lappend types [sqlite3_column_type $STMT $i]}
|
||||
set types
|
||||
} {INTEGER INTEGER TEXT}
|
||||
|
||||
if 0 {
|
||||
do_test capi3-5.5 {
|
||||
# Integers
|
||||
do_test capi3-5.1.5 {
|
||||
set ints [list]
|
||||
foreach i {0 1 2} {lappend ints [sqlite3_column_int $STMT $i]}
|
||||
set ints
|
||||
} {1 2 3}
|
||||
|
||||
do_test capi3-5.6 {
|
||||
# UTF-8
|
||||
do_test capi3-5.1.6 {
|
||||
set utf8 [list]
|
||||
foreach i {0 1 2} {lappend utf8 [sqlite3_column_data $STMT $i]}
|
||||
set utf8
|
||||
} {1 2 3}
|
||||
}
|
||||
|
||||
do_test capi3-5.7 {
|
||||
# Floats
|
||||
do_test capi3-5.1.7 {
|
||||
set utf8 [list]
|
||||
foreach i {0 1 2} {lappend utf8 [sqlite3_column_double $STMT $i]}
|
||||
set utf8
|
||||
} {1 2 3}
|
||||
|
||||
# UTF-16
|
||||
do_test capi3-5.1.8 {
|
||||
set utf8 [list]
|
||||
foreach i {0 1 2} {lappend utf8 [utf8 [sqlite3_column_data16 $STMT $i]]}
|
||||
set utf8
|
||||
} {1 2 3}
|
||||
|
||||
do_test capi3-5.8 {
|
||||
# Integers
|
||||
do_test capi3-5.1.9 {
|
||||
set ints [list]
|
||||
foreach i {0 1 2} {lappend ints [sqlite3_column_int $STMT $i]}
|
||||
set ints
|
||||
} {1 2 3}
|
||||
|
||||
# Floats
|
||||
do_test capi3-5.1.10 {
|
||||
set utf8 [list]
|
||||
foreach i {0 1 2} {lappend utf8 [sqlite3_column_double $STMT $i]}
|
||||
set utf8
|
||||
} {1 2 3}
|
||||
|
||||
# UTF-8
|
||||
do_test capi3-5.1.11 {
|
||||
set utf8 [list]
|
||||
foreach i {0 1 2} {lappend utf8 [sqlite3_column_data $STMT $i]}
|
||||
set utf8
|
||||
} {1 2 3}
|
||||
|
||||
# Types
|
||||
do_test capi3-5.1.12 {
|
||||
set types [list]
|
||||
foreach i {0 1 2} {lappend types [sqlite3_column_type $STMT $i]}
|
||||
set types
|
||||
|
Reference in New Issue
Block a user