//static sqlite3 *getDbPointer(Tcl_Interp *pInterp, Tcl_Obj *pObj){ //sqlite3 *db; //Tcl_CmdInfo info; //char *zCmd = TCL.Tcl_GetString(pObj); //if( TCL.Tcl_GetCommandInfo(pInterp, zCmd, &info) ){ // db = *((sqlite3 **)info.objClientData); //}else{ // db = (sqlite3*)sqlite3TestTextToPtr(zCmd); //} //assert( db ); //return db; //static int test_enter_db_mutex( // void * clientData, // Tcl_Interp *interp, // int objc, // Tcl_Obj *CONST objv[] //){ // sqlite3 *db; // if( objc!=2 ){ // TCL.Tcl_WrongNumArgs(interp, 1, objv, "DB"); // return TCL.TCL_ERROR; // } // db = getDbPointer(interp, objv[1]); // if( !db ){ // return TCL.TCL_ERROR; // } // sqlite3_mutex_enter(sqlite3_db_mutex(db)); // return TCL.TCL_OK; //} //static int test_leave_db_mutex( // void * clientData, // Tcl_Interp *interp, // int objc, // Tcl_Obj *CONST objv[] //){ // sqlite3 *db; // if( objc!=2 ){ // TCL.Tcl_WrongNumArgs(interp, 1, objv, "DB"); // return TCL.TCL_ERROR; // } // db = getDbPointer(interp, objv[1]); // if( !db ){ // return TCL.TCL_ERROR; // } // sqlite3_mutex_leave(sqlite3_db_mutex(db)); // return TCL.TCL_OK; //} static public int Sqlitetest_mutex_Init(Tcl_Interp interp) { //static struct { // char *zName; // Tcl_ObjCmdProc *xProc; //} _aObjCmd[] aCmd = new _aObjCmd[] { new _aObjCmd("sqlite3_shutdown", test_shutdown), new _aObjCmd("sqlite3_initialize", test_initialize), new _aObjCmd("sqlite3_config", test_config), //new _aCmd("enter_db_mutex", (Tcl_ObjCmdProc*)test_enter_db_mutex }, //new _aCmd( "leave_db_mutex", (Tcl_ObjCmdProc*)test_leave_db_mutex }, //new _aCmd( "alloc_dealloc_mutex", (Tcl_ObjCmdProc)test_alloc_mutex ), //new _aCmd( "install_mutex_counters", (Tcl_ObjCmdProc)test_install_mutex_counters ), //new _aCmd( "read_mutex_counters", (Tcl_ObjCmdProc)test_read_mutex_counters ), //new _aCmd( "clear_mutex_counters", (Tcl_ObjCmdProc)test_clear_mutex_counters ), }; int i; for (i = 0; i < aCmd.Length; i++) {//sizeof(aCmd)/sizeof(aCmd[0]); i++){ TCL.Tcl_CreateObjCommand(interp, aCmd[i].zName, aCmd[i].xProc, null, null); } //Tcl_LinkVar(interp, "disable_mutex_init", // g.disableInit, VarFlag.SQLITE3_LINK_INT ); //Tcl_LinkVar(interp, "disable_mutex_try", // g.disableTry, VarFlag.SQLITE3_LINK_INT ); return(SQLITE_OK); }
/* ** This procedure registers the TCL procs defined in this file. */ public static int Sqlitetest_autoext_Init(Tcl_Interp interp) { #if !SQLITE_OMIT_LOAD_EXTENSION TCL.Tcl_CreateObjCommand(interp, "sqlite3_auto_extension_sqr", autoExtSqrObjCmd, null, null); TCL.Tcl_CreateObjCommand(interp, "sqlite3_auto_extension_cube", autoExtCubeObjCmd, null, null); TCL.Tcl_CreateObjCommand(interp, "sqlite3_auto_extension_broken", autoExtBrokenObjCmd, null, null); #endif TCL.Tcl_CreateObjCommand(interp, "sqlite3_reset_auto_extension", resetAutoExtObjCmd, null, null); return(TCL.TCL_OK); }
//static class _aObjCmd { // public string zName; // public Tcl_ObjCmdProc xProc; // public object clientData; //} /* ** Register commands with the TCL interpreter. */ static public int Sqlitetestwholenumber_Init(Tcl_Interp interp) { _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("register_wholenumber_module", register_wholenumber_module, 0), }; int i; for (i = 0; i < aObjCmd.Length; i++) {//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){ TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, aObjCmd[i].clientData, null); } return(TCL.TCL_OK); }
/* ** Register commands with the TCL interpreter. */ static public int Sqlitetestschema_Init(Tcl_Interp interp) { //static struct { // char *zName; // Tcl_ObjCmdProc *xProc; // void *clientData; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("register_schema_module", register_schema_module, 0), }; int i; for (i = 0; i < aObjCmd.Length; i++)//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++) { TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, aObjCmd[i].clientData, null); } return(TCL.TCL_OK); }
/* ** Register commands with the TCL interpreter. */ static public int Sqlitetestintarray_Init(Tcl_Interp interp) { //static struct { // char *zName; // Tcl_ObjCmdProc *xProc; // void *clientData; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("sqlite3_intarray_create", test_intarray_create, 0), new _aObjCmd("sqlite3_intarray_bind", test_intarray_bind, 0), }; int i; for (i = 0; i < aObjCmd.Length; i++)//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++) { TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, aObjCmd[i].clientData, null); } return(TCL.TCL_OK); }
/* ** Register commands with the TCL interpreter. */ static public int Sqlitetesttclvar_Init(Tcl_Interp interp) { #if !SQLITE_OMIT_VIRTUALTABLE //static struct { // char *zName; // Tcl_ObjCmdProc *xProc; // void clientData; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("register_tclvar_module", register_tclvar_module, 0), }; int i; for (i = 0; i < aObjCmd.Length; i++)//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++) { TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, aObjCmd[i].clientData, null); } #endif return(TCL.TCL_OK); }
/* ** Register commands with the TCL interpreter. */ static public int Sqlitetest9_Init(Tcl_Interp interp) { //static struct { // string zName; // Tcl_ObjCmdProc *xProc; // void *object; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("c_misuse_test", c_misuse_test, 0), new _aObjCmd("c_realloc_test", c_realloc_test, 0), new _aObjCmd("c_collation_test", c_collation_test, 0), }; int i; for (i = 0; i < aObjCmd.Length; i++) {//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){ TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, aObjCmd[i].clientData, null); } return(TCL.TCL_OK); }
/* ** sqlite3_backup CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME ** */ static int backupTestInit( ClientData clientData, Tcl_Interp interp, int objc, Tcl_Obj[] objv ) { sqlite3_backup pBackup; sqlite3 pDestDb = null; sqlite3 pSrcDb = null; string zDestName; string zSrcName; string zCmd; if (objc != 6) { TCL.Tcl_WrongNumArgs( interp, 1, objv, "CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME" ); return(TCL.TCL_ERROR); } zCmd = TCL.Tcl_GetString(objv[1]); getDbPointer(interp, TCL.Tcl_GetString(objv[2]), ref pDestDb); zDestName = TCL.Tcl_GetString(objv[3]); getDbPointer(interp, TCL.Tcl_GetString(objv[4]), ref pSrcDb); zSrcName = TCL.Tcl_GetString(objv[5]); pBackup = sqlite3_backup_init(pDestDb, zDestName, pSrcDb, zSrcName); if (null == pBackup) { TCL.Tcl_AppendResult(interp, "sqlite3_backup_init() failed"); return(TCL.TCL_ERROR); } TCL.Tcl_CreateObjCommand(interp, zCmd, (Interp.dxObjCmdProc)backupTestCmd, pBackup, (Interp.dxCmdDeleteProc)backupTestFinish); TCL.Tcl_SetObjResult(interp, objv[1]); return(TCL.TCL_OK); }
/* ** USAGE: utf8_to_utf8 HEX ** ** The argument is a UTF8 string represented _in hexadecimal. ** The UTF8 might not be well-formed. Run this string through ** sqlite3Utf8to8() convert it back to hex and return the result. */ //static int utf8_to_utf8( // void * clientData, // Tcl_Interp *interp, // int objc, // Tcl_Obj *CONST objv[] //){ //#if SQLITE_DEBUG // int n; // int nOut; // const unsigned char *zOrig; // unsigned char *z; // if( objc!=2 ){ // TCL.Tcl_WrongNumArgs(interp, 1, objv, "HEX"); // return TCL.TCL_ERROR; // } // zOrig = (unsigned char *)Tcl_GetStringFromObj(objv[1], n); // z = sqlite3Malloc( n+3 ); // n = sqlite3TestHexToBin(zOrig, n, z); // z[n] = 0; // nOut = sqlite3Utf8To8(z); // sqlite3TestBinToHex(z,nOut); // TCL.Tcl_AppendResult(interp, (char*)z, 0); // //sqlite3DbFree(db,z); //#endif // return TCL.TCL_OK; //} /* ** Register commands with the TCL interpreter. */ static public int Sqlitetest_hexio_Init(Tcl_Interp interp) { //static struct { // string zName; // Tcl_ObjCmdProc *xProc; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("hexio_read", hexio_read), new _aObjCmd("hexio_write", hexio_write), new _aObjCmd("hexio_get_int", hexio_get_int), new _aObjCmd("hexio_render_int16", hexio_render_int16), new _aObjCmd("hexio_render_int32", hexio_render_int32), //new _aObjCmd( "utf8_to_utf8", utf8_to_utf8 }, }; int i; for (i = 0; i < aObjCmd.Length; i++) { TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, null, null); } return(TCL.TCL_OK); }
/* ** Register commands with the TCL interpreter. */ public static int Sqlitetest_func_Init(Tcl_Interp interp) { //static struct { // char *zName; // Tcl_ObjCmdProc *xProc; //} _aObjCmd[] aObjCmd = new _aObjCmd[] { new _aObjCmd("autoinstall_test_functions", autoinstall_test_funcs), new _aObjCmd("abuse_create_function", abuse_create_function), }; int i; //extern int Md5_Register(sqlite3*); for (i = 0; i < aObjCmd.Length; i++) {//sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){ TCL.Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, null, null); } sqlite3_initialize(); sqlite3_auto_extension((dxInit)registerTestFunctions); sqlite3_auto_extension((dxInit)Md5_Register); return(TCL.TCL_OK); }
/* ** 2009 July 17 ** ** 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 code to implement the "sqlite" test harness ** which runs TCL commands for testing the C#-SQLite port. ** ** Included in SQLite3 port to C#-SQLite; 2008 Noah B Hart ** C#-SQLite is an independent reimplementation of the SQLite software library ** ************************************************************************* */ public static void Main(string[] args) { // Array of command-line argument strings. { string fileName = null; // Create the interpreter. This will also create the built-in // Tcl commands. Interp interp = new Interp(); // Make command-line arguments available in the Tcl variables "argc" // and "argv". If the first argument doesn't start with a "-" then // strip it off and use it as the name of a script file to process. // We also set the argv0 and TCL.Tcl_interactive vars here. if ((args.Length > 0) && !(args[0].StartsWith("-"))) { fileName = args[0]; } TclObject argv = TclList.newInstance(); argv.preserve(); try { int i = 0; int argc = args.Length; if ((System.Object)fileName == null) { interp.setVar("argv0", "tcl.lang.Shell", TCL.VarFlag.GLOBAL_ONLY); interp.setVar("tcl_interactive", "1", TCL.VarFlag.GLOBAL_ONLY); } else { interp.setVar("argv0", fileName, TCL.VarFlag.GLOBAL_ONLY); interp.setVar("tcl_interactive", "0", TCL.VarFlag.GLOBAL_ONLY); i++; argc--; } for ( ; i < args.Length; i++) { TclList.append(interp, argv, TclString.newInstance(args[i])); } interp.setVar("argv", argv, TCL.VarFlag.GLOBAL_ONLY); interp.setVar("argc", System.Convert.ToString(argc), TCL.VarFlag.GLOBAL_ONLY); } catch (TclException e) { throw new TclRuntimeError("unexpected TclException: " + e.Message); } finally { argv.release(); } init_all(interp); TCL.Tcl_CreateObjCommand(interp, "load_testfixture_extensions", init_all_cmd, 0, null); // Normally we would do application specific initialization here. // However, that feature is not currently supported. // If a script file was specified then just source that file // and quit. Console.WriteLine(" C#-SQLite version " + Sqlite3.sqlite3_version); Console.WriteLine("An independent reimplementation of the SQLite software library"); Console.WriteLine("=============================================================="); Console.WriteLine(""); if ((System.Object)fileName != null) { try { interp.evalFile(fileName); } catch (TclException e) { TCL.CompletionCode code = e.getCompletionCode(); if (code == TCL.CompletionCode.RETURN) { code = interp.updateReturnInfo(); if (code != TCL.CompletionCode.OK) { System.Console.Error.WriteLine("command returned bad code: " + code); if (tcl.lang.ConsoleThread.debug) { System.Diagnostics.Debug.WriteLine("command returned bad code: " + code); } } } else if (code == TCL.CompletionCode.ERROR) { System.Console.Error.WriteLine(interp.getResult().ToString()); if (tcl.lang.ConsoleThread.debug) { System.Diagnostics.Debug.WriteLine(interp.getResult().ToString()); } System.Diagnostics.Debug.Assert(false, interp.getResult().ToString()); } else if (code != TCL.CompletionCode.EXIT) { System.Console.Error.WriteLine("command returned bad code: " + code); if (tcl.lang.ConsoleThread.debug) { System.Diagnostics.Debug.WriteLine("command returned bad code: " + code); } } } // Note that if the above interp.evalFile() returns the main // thread will exit. This may bring down the VM and stop // the execution of Tcl. // // If the script needs to handle events, it must call // vwait or do something similar. // // Note that the script can create AWT widgets. This will // start an AWT event handling thread and keep the VM up. However, // the interpreter thread (the same as the main thread) would // have exited and no Tcl scripts can be executed. interp.dispose(); Sqlite3.sqlite3_shutdown(); System.Environment.Exit(0); } if ((System.Object)fileName == null) { // We are running in interactive mode. Start the ConsoleThread // that loops, grabbing stdin and passing it to the interp. ConsoleThread consoleThread = new ConsoleThread(interp); consoleThread.IsBackground = true; consoleThread.Start(); // Loop forever to handle user input events in the command line. Notifier notifier = interp.getNotifier(); while (true) { // process events until "exit" is called. notifier.doOneEvent(TCL.ALL_EVENTS); } } } }
public static int Sqlitetestbackup_Init(Tcl_Interp interp) { TCL.Tcl_CreateObjCommand(interp, "sqlite3_backup", backupTestInit, 0, null); return(TCL.TCL_OK); }