⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test9.c

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 C
字号:
/*** 2007 March 29**** 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 contains obscure tests of the C-interface required** for completeness. Test code is written in C for these cases** as there is not much point in binding to Tcl.**** $Id: test9.c,v 1.3 2007/04/23 23:56:32 drh Exp $*/#include "sqliteInt.h"#include "tcl.h"#include "os.h"#include <stdlib.h>#include <string.h>/*** c_collation_test*/static int c_collation_test(  ClientData clientData, /* Pointer to sqlite3_enable_XXX function */  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int objc,              /* Number of arguments */  Tcl_Obj *CONST objv[]  /* Command arguments */){  const char *zErrFunction = "N/A";  sqlite3 *db;  int rc;  if( objc!=1 ){    Tcl_WrongNumArgs(interp, 1, objv, "");    return TCL_ERROR;  }  /* Open a database. */  rc = sqlite3_open(":memory:", &db);  if( rc!=SQLITE_OK ){    zErrFunction = "sqlite3_open";    goto error_out;  }  rc = sqlite3_create_collation(db, "collate", 456, 0, 0);  if( rc!=SQLITE_ERROR ){    sqlite3_close(db);    zErrFunction = "sqlite3_create_collation";    goto error_out;  }  sqlite3_close(db);  return TCL_OK;error_out:  Tcl_ResetResult(interp);  Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);  return TCL_ERROR;}/*** c_realloc_test*/static int c_realloc_test(  ClientData clientData, /* Pointer to sqlite3_enable_XXX function */  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int objc,              /* Number of arguments */  Tcl_Obj *CONST objv[]  /* Command arguments */){  void *p;  const char *zErrFunction = "N/A";  if( objc!=1 ){    Tcl_WrongNumArgs(interp, 1, objv, "");    return TCL_ERROR;  }  p = sqlite3_malloc(5);  if( !p ){    zErrFunction = "sqlite3_malloc";    goto error_out;  }  /* Test that realloc()ing a block of memory to a negative size is  ** the same as free()ing that memory.  */  p = sqlite3_realloc(p, -1);  if( p ){    zErrFunction = "sqlite3_realloc";    goto error_out;  }  return TCL_OK;error_out:  Tcl_ResetResult(interp);  Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);  return TCL_ERROR;}/*** c_misuse_test*/static int c_misuse_test(  ClientData clientData, /* Pointer to sqlite3_enable_XXX function */  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int objc,              /* Number of arguments */  Tcl_Obj *CONST objv[]  /* Command arguments */){  const char *zErrFunction = "N/A";  sqlite3 *db = 0;  int rc;  if( objc!=1 ){    Tcl_WrongNumArgs(interp, 1, objv, "");    return TCL_ERROR;  }  /* Open a database. Then close it again. We need to do this so that  ** we have a "closed database handle" to pass to various API functions.  */  rc = sqlite3_open(":memory:", &db);  if( rc!=SQLITE_OK ){    zErrFunction = "sqlite3_open";    goto error_out;  }  sqlite3_close(db);#ifndef SQLITE_OMIT_UTF16  rc = sqlite3_collation_needed16(db, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_collation_needed16";    goto error_out;  }#endif  rc = sqlite3_collation_needed(db, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_collation_needed";    goto error_out;  }  rc = sqlite3_create_collation(db, 0, 0, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_create_collation";    goto error_out;  }  rc = sqlite3_create_function(db, 0, 0, 0, 0, 0, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_create_function";    goto error_out;  }  rc = sqlite3_busy_handler(db, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_busy_handler";    goto error_out;  }  rc = sqlite3_errcode(db);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_busy_handler";    goto error_out;  }#ifndef SQLITE_OMIT_UTF16  rc = sqlite3_prepare16(db, 0, 0, 0, 0);  if( rc!=SQLITE_MISUSE ){    zErrFunction = "sqlite3_prepare16";    goto error_out;  }#endif  return TCL_OK;error_out:  Tcl_ResetResult(interp);  Tcl_AppendResult(interp, "Error testing function: ", zErrFunction, 0);  return TCL_ERROR;}/*** Register commands with the TCL interpreter.*/int Sqlitetest9_Init(Tcl_Interp *interp){  static struct {     char *zName;     Tcl_ObjCmdProc *xProc;     void *clientData;  } aObjCmd[] = {     { "c_misuse_test",    c_misuse_test, 0 },     { "c_realloc_test",   c_realloc_test, 0 },     { "c_collation_test", c_collation_test, 0 },  };  int i;  for(i=0; i<sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){    Tcl_CreateObjCommand(interp, aObjCmd[i].zName,         aObjCmd[i].xProc, aObjCmd[i].clientData, 0);  }  return TCL_OK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -