Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        /*
        ** 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);
        }
Esempio n. 3
0
        //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);
        }
Esempio n. 4
0
        /*
        ** 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);
        }
Esempio n. 5
0
        /*
        ** 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);
        }
Esempio n. 6
0
/*
** 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);
        }
Esempio n. 7
0
        /*
        ** 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);
        }
Esempio n. 10
0
        /*
        ** 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);
        }
Esempio n. 11
0
    /*
    ** 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);
 }