private void TestThread(ManualResetEvent exitEvent, Object userData) { try { ISQL builder; ISQLExecuter executer; IConnectionInfo connInfo; switch ((int)userData) { // VistaDB case 0: { String path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); path = Path.Combine(path, "VistaDB"); if (Directory.Exists(path)) { Directory.Delete(path, true); } builder = new VistaDB_SQL(); executer = new VistaDB_SQLExecuter((VistaDB_SQL)builder, path); connInfo = new VistaDB_ConnectionInfo(true); break; } // DB2 case 1: { builder = new DB2_SQL(); executer = new DB2_SQLExecuter((DB2_SQL)builder); connInfo = new DB2_ConnectionInfo("sei-backend", "testdb", "eisst", "EISSTEISST"); break; } default: return; } // Create and start the runner DBRunner runner = new DBRunner(); try { // Show provider IProvider prov = executer.Provider; Output("Provider: " + prov.Name + " - Version: " + prov.Version); Output(""); // Create the database and test tables DBDatabase db = new DBDatabase("DBTest.MyTest"); DBTable table1 = db.AddTable("Table1"); table1.AddColumn("uiNoegle", ColumnType.Guid, ColumnFlag.PrimaryKey | ColumnFlag.NotNull); table1.AddColumn("txTekst", ColumnType.String, 20, ColumnFlag.None); table1.AddColumn("iTal", ColumnType.Int, ColumnFlag.PrimaryKey | ColumnFlag.NotNull); table1.AddColumn("dtDato", ColumnType.DateTime, ColumnFlag.IndexAsc); table1.AddColumn("sLilleTal", ColumnType.Small, ColumnFlag.None); table1.AddColumn("lStortTal", ColumnType.Long, ColumnFlag.NotNull); table1.AddColumn("txStorTekst", ColumnType.Clob, 32 * 1024, ColumnFlag.None); table1.AddColumn("bValg", ColumnType.Boolean, ColumnFlag.NotNull); table1.AddColumn("biBillede", ColumnType.Blob, 10 * 1024 * 1024, ColumnFlag.Compressed); table1.AddColumn("iAutoTaeller", ColumnType.Int, ColumnFlag.NotNull | ColumnFlag.Identity); DBTable table2 = db.AddTable("Table2"); table2.AddColumn("uiNoegle", ColumnType.Guid, ColumnFlag.PrimaryKey | ColumnFlag.NotNull); table2.AddColumn("txTekst", ColumnType.String, 20, ColumnFlag.None); table2.AddColumn("iTal", ColumnType.Int, ColumnFlag.PrimaryKey | ColumnFlag.NotNull); table2.AddColumn("dtDato", ColumnType.DateTime, ColumnFlag.IndexAsc); table2.AddColumn("sLilleTal", ColumnType.Small, ColumnFlag.None); table2.AddColumn("lStortTal", ColumnType.Long, ColumnFlag.NotNull); table2.AddColumn("txStorTekst", ColumnType.Clob, 32 * 1024, ColumnFlag.None); table2.AddColumn("bValg", ColumnType.Boolean, ColumnFlag.NotNull); table2.AddColumn("biBillede", ColumnType.Blob, 10 * 1024 * 1024, ColumnFlag.Compressed); TestDatabase(runner, executer, db); TestConnection(runner, executer, db, connInfo); TestTable(runner, executer, builder, db, table2, connInfo); { Output("Create table again for other tests"); DBConnection conn = runner.OpenConnection(executer, db, connInfo); try { Stmt_CreateTable stmtCreate = new Stmt_CreateTable(table1); runner.CreateTable(executer, conn, stmtCreate); stmtCreate = new Stmt_CreateTable(table2); runner.CreateTable(executer, conn, stmtCreate); } finally { conn.Close(); Output(""); } } TestTable2(runner, executer, db, "Table1", connInfo); TestSmallInsert(runner, executer, builder, db, table1, connInfo); TestSmallSelect(runner, executer, builder, db, table1, connInfo); TestSmallDelete(runner, executer, builder, db, table1, connInfo); TestTransactions(runner, executer, db, table2, connInfo); TestUpdate(runner, executer, builder, db, table2, connInfo); TestFunctions(runner, executer, builder, db, table2, connInfo); TestUnion(runner, executer, builder, db, table1, table2, connInfo); TestSQLBuild(builder, db, table1); { Output("Dropping testing tables"); DBConnection conn = runner.OpenConnection(executer, db, connInfo); try { Stmt_DropTable stmtDrop = new Stmt_DropTable(table1); runner.DropTable(executer, conn, stmtDrop); stmtDrop = new Stmt_DropTable(table2); runner.DropTable(executer, conn, stmtDrop); } finally { conn.Close(); Output("Done"); } } } finally { runner.Close(); } } catch (Exception ex) { Output("Whole test failed with an exception:"); Output(ex); } }