Added SqlClient automated tests for TARGET_JVM
authorBoris Kirzner <borisk@mono-cvs.ximian.com>
Thu, 16 Mar 2006 18:17:07 +0000 (18:17 -0000)
committerBoris Kirzner <borisk@mono-cvs.ximian.com>
Thu, 16 Mar 2006 18:17:07 +0000 (18:17 -0000)
svn path=/trunk/mcs/; revision=58074

16 files changed:
mcs/class/System.Data/ChangeLog
mcs/class/System.Data/Test/ProviderTests/ChangeLog
mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.Tests.J2EE.vmwcsproj
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteReader_.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteXmlReader_.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_Parameters.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommandBuilder/SqlCommandBuilder_DeriveParameters_S.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_BeginTransaction_S.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_InfoMessage.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_StateChange.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdated.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdating.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_Direction.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_ctor_SO.cs [new file with mode: 0644]
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_set_DbType_D.cs [new file with mode: 0644]
mcs/class/System.Data/run-tests.test.connected.bat

index 6800b0ed8e2e501d92187a6cf9b01d3d5c34bd28..a7e8e57aec6278823d1cd934a54e28094f07348d 100644 (file)
@@ -1,3 +1,6 @@
+2006-03-16     Boris Kirzner <borisk@mainsfot.com>
+       * run-tests.test.connected.bat - fix in TARGET_JVM test script.
+
 2006-03-16     Boris Kirzner <borisk@mainsfot.com>
        * run-tests.test.connected.bat - fix classpath in TARGET_JVM test script.
 
index 7b6e6f614bb551bc21cc68ce82bb3992bc3d71d8..1c429e160f0b60297bb0164d0df65321d5f67869 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-16     Boris Kirzner <borisk@mainsfot.com>
+       * System.Data.SqlClient.jvm: added SqlClient tests for TARGET_JVM
+       * System.Data.OleDb.Tests.J2EE.vmwcsproj: added SqlClient tests for TARGET_JVM
+
 2006-03-12     Boris Kirzner <borisk@mainsfot.com>
        * System.Data.OleDb.J2EE.sln, System.Data.OleDb.Tests.J2EE.vmwcsproj:
        changes for automated testing for TARGET_JVM.
index 4eab6e9dcd6282a2d41e3be0dcf581031aa93bc2..ce9d515cb9f59d7dcbf250517b4ab2d0912a72ea 100755 (executable)
                                <File RelPath="System.Data.OleDb.jvm\OleDbTransaction\OleDbTransaction_Rollback.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Data.OleDb.jvm\OleDbType\OleDbType.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Data.OleDb.jvm\OleDbType\OleDbType_Date.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlCommand\SqlCommand_ExecuteReader_.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlCommand\SqlCommand_ExecuteXmlReader_.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlCommand\SqlCommand_Parameters.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlCommandBuilder\SqlCommandBuilder_DeriveParameters_S.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlConnection\SqlConnection_BeginTransaction_S.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlConnection\SqlConnection_InfoMessage.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlConnection\SqlConnection_StateChange.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlDataAdapter\SqlDataAdapter_RowUpdated.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlDataAdapter\SqlDataAdapter_RowUpdating.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlParameter\SqlParameter_ctor_SO.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlParameter\SqlParameter_Direction.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Data.SqlClient.jvm\SqlParameter\SqlParameter_set_DbType_D.cs" SubType="Code" BuildAction="Compile"/>\r
                        </Include>\r
                </Files>\r
                <UserProperties jarserver="ipa" project.JDKType="1.5.0_05" REFS.JarPath.rt="..\..\..\..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE\jre5\lib\rt.jar" REFS.JarPath.system.xml="..\..\..\..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE\jgac\vmw4j2ee_110\System.Xml.jar" REFS.JarPath.system.data="..\..\..\..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE\jgac\vmw4j2ee_110\System.Data.jar" REFS.JarPath.system="..\..\..\..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE\jgac\vmw4j2ee_110\System.jar"/>\r
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteReader_.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteReader_.cs
new file mode 100644 (file)
index 0000000..6758def
--- /dev/null
@@ -0,0 +1,86 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlCommand_ExecuteReader_ : ADONetTesterClass\r
+       {\r
+               private Exception exp;\r
+               public static void Main()\r
+               {\r
+                       SqlCommand_ExecuteReader_ tc = new SqlCommand_ExecuteReader_();\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("SqlCommand_ExecuteReader");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               tc.exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(tc.exp);\r
+                       }\r
+               }\r
+\r
+\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       // testing only SQLServerr\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               Log("This test is relevant only for MSSQLServer!");\r
+                               return;\r
+                       }\r
+\r
+                       TestCheckSqlStatementThatDeclaresLocalVariableAndUsesIt();\r
+               }\r
+\r
+               public void TestCheckSqlStatementThatDeclaresLocalVariableAndUsesIt()\r
+               {\r
+                       SqlConnection conn = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                       SqlDataReader rdr=null;\r
+                       try\r
+                       {\r
+                               BeginCase("Check sql statement that declares a local variable and uses it.");\r
+                               SqlCommand cmd = new SqlCommand();\r
+                               conn.Open();\r
+                               cmd.Connection = conn;\r
+\r
+                               cmd.CommandText = "declare @var int; select @var=1;";\r
+                               cmd.CommandType = CommandType.Text;\r
+                               \r
+                               rdr = cmd.ExecuteReader();\r
+                               Compare(rdr.Read(), false);\r
+                       }\r
+                       catch (Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                               if (conn != null && conn.State != ConnectionState.Closed)\r
+                               {\r
+                                       conn.Close();\r
+                               }\r
+                               if (rdr != null && !rdr.IsClosed)\r
+                               {\r
+                                       rdr.Close();\r
+                               }\r
+                       }\r
+               }\r
+\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteXmlReader_.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_ExecuteXmlReader_.cs
new file mode 100644 (file)
index 0000000..8039521
--- /dev/null
@@ -0,0 +1,90 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using System.Xml;\r
+using System.Text;\r
+using System.IO;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlCommand_ExecuteXmlReader_ : ADONetTesterClass\r
+       {\r
+               public static void Main()\r
+               {\r
+                       SqlCommand_ExecuteXmlReader_ tc = new SqlCommand_ExecuteXmlReader_();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("SqlCommand_ExecuteXmlReader");\r
+\r
+                               //testing only on SQLServer\r
+                               if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer) return ; \r
+\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(exp);\r
+                       }\r
+               }\r
+\r
+               [Test]\r
+               [Category("NotWorking")]\r
+               public void run()\r
+               {\r
+                       Exception exp = null;\r
+\r
+                       // Start Sub Test\r
+                       try\r
+                       {\r
+                               // Every Sub Test must begin with BeginCase\r
+                               BeginCase("ExecuteXmlReader 1");\r
+\r
+                               SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+\r
+                               con.Open();\r
+                               string selectStr =      "SELECT * FROM Products WHERE PRODUCTID=1 FOR XML AUTO, XMLDATA;" + \r
+                                       "SELECT * FROM Orders WHERE ORDERID=1 FOR XML AUTO, XMLDATA;" + \r
+                                       "SELECT * FROM Customers WHERE CustomerID like 'A%' FOR XML AUTO, XMLDATA";\r
+                       \r
+                               SqlCommand comm = new SqlCommand(selectStr,con);\r
+                               // ExecuteXmlReader is not supported yet\r
+                               XmlReader xr = null; // = comm.ExecuteXmlReader();\r
+\r
+                               StringBuilder sb = new StringBuilder();\r
+                               while(xr.Read()) \r
+                               {\r
+                                       sb.Append(xr.ReadOuterXml());\r
+                               }\r
+                               // Every Sub Test must have a Compare\r
+                               string strXml = null;\r
+                               Compare(sb.ToString().Length,4391);\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Sub Test must end with EndCase\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+                       // End Sub Test\r
+               }\r
+\r
+\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_Parameters.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommand/SqlCommand_Parameters.cs
new file mode 100644 (file)
index 0000000..ae6a87f
--- /dev/null
@@ -0,0 +1,140 @@
+using System;\r
+using System.Data;\r
+using System.Data.OleDb;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlCommand_Parameters : ADONetTesterClass\r
+       {\r
+               Exception exp;\r
+\r
+               public static void Main()\r
+               {\r
+                       SqlCommand_Parameters tc = new SqlCommand_Parameters();\r
+                       tc.exp = null;\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlCommand_Parameters");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               tc.exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               tc.EndTest(tc.exp);\r
+                       }\r
+               }\r
+\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       // testing only SQLServerr\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               Log("This test is relevant only for MSSQLServer!");\r
+                               return;\r
+                       }\r
+\r
+                       CommandParameterTreatBitAsBoolean();\r
+                       TestparametersBindByNameOnMSSQLServer();\r
+               \r
+               }\r
+\r
+               //Bug 2814 - MSSQL - Command.Parameters treat bit as Boolean ---- \r
+               public void CommandParameterTreatBitAsBoolean()\r
+               {\r
+                       exp=null;\r
+                       SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                       try\r
+                       {\r
+                               BeginCase("Bug 2814 - MSSQL - Command.Parameters treat bit as Boolean");\r
+                               SqlCommand cmd = new SqlCommand("SELECT * FROM Products where ProductID = @ProductID AND Discontinued = @Discontinued",con);\r
+                               cmd.Connection = con;\r
+                               con.Open();\r
+                               cmd.CommandType = CommandType.Text;\r
+                                               \r
+                               cmd.Parameters.Add( new SqlParameter("@ProductID", SqlDbType.Int, 4));\r
+                               cmd.Parameters.Add( new SqlParameter("@Discontinued", SqlDbType.Int, 4));\r
+                               \r
+                               cmd.Parameters["@ProductID"].Value = 5;\r
+                               cmd.Parameters["@Discontinued"].Value = 1;\r
+               \r
+                               SqlDataReader dr = cmd.ExecuteReader(); \r
+                               if (dr.HasRows)\r
+                               {\r
+                                       dr.Read();\r
+                                       Compare(dr.GetValue(0).ToString(),"5");\r
+                               }\r
+                               else\r
+                               {\r
+                                       Fail("HasRows is not 0.");\r
+                               }                                       \r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               if (con.State == ConnectionState.Open) \r
+                               {\r
+                                       con.Close();\r
+                               }\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+               }\r
+               /// <summary>\r
+               /// Binding parameters in MSSQLServer should be done by parameter name, regardless of their order.\r
+               /// </summary>\r
+               public void TestparametersBindByNameOnMSSQLServer()\r
+               {\r
+                       SqlConnection conn = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                       SqlDataReader rdr;\r
+                       try\r
+                       {\r
+                               BeginCase("Insert parameters of the same types in different order.");\r
+                               SqlCommand cmd = new SqlCommand();\r
+                               conn.Open();\r
+                               cmd.Connection = conn;\r
+\r
+                               cmd.CommandText = "SalesByCategory";\r
+                               cmd.CommandType = CommandType.StoredProcedure;\r
+                               \r
+                               //Stored procedure is declared as "SalesByCategory @CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'"\r
+                               //The test declares them in reverse order.\r
+                               cmd.Parameters.Add("@OrdYear", "1996");\r
+                               cmd.Parameters.Add("@CategoryName", "Beverages");\r
+\r
+                               rdr = cmd.ExecuteReader();\r
+                               int actualAffectedRows = 0;\r
+                               while (rdr.Read())\r
+                               {\r
+                                       actualAffectedRows++;\r
+                               }\r
+                               Compare(actualAffectedRows, 12);\r
+                       }\r
+                       catch (Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                               if (conn.State != ConnectionState.Closed)\r
+                               {\r
+                                       conn.Close();\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommandBuilder/SqlCommandBuilder_DeriveParameters_S.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlCommandBuilder/SqlCommandBuilder_DeriveParameters_S.cs
new file mode 100644 (file)
index 0000000..26edce3
--- /dev/null
@@ -0,0 +1,122 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlCommandBuilder_DeriveParameters_S : GHTBase\r
+       {\r
+               SqlConnection con;\r
+               SqlCommand cmd;\r
+               public static void Main()\r
+               {\r
+                       SqlCommandBuilder_DeriveParameters_S tc = new SqlCommandBuilder_DeriveParameters_S();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("DeriveParameters");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp=ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(exp);\r
+                       }\r
+                       \r
+                       \r
+               }\r
+\r
+               [SetUp]\r
+               public void setUp()\r
+               {\r
+                       if (con == null)\r
+                       {\r
+                               con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                               con.Open();\r
+                       }\r
+               }\r
+\r
+               [TearDown]\r
+               public void tearDown()\r
+               {\r
+                       if (con.State == ConnectionState.Open)\r
+                       {\r
+                               con.Close();\r
+                       }\r
+\r
+               }\r
+\r
+               public void run()\r
+               {\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               //All tests in this class are only for MSSQLServer.\r
+                               Log(string.Format("All tests in this class are only for MSSQLServer and cannot be tested on {0}", ConnectedDataProvider.GetDbType()));\r
+                               return;\r
+                       }\r
+\r
+                       setUp();\r
+                       test();\r
+                       tearDown();\r
+\r
+                       \r
+               }\r
+\r
+               [Test]\r
+               public void test()\r
+               {\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               //All tests in this class are only for MSSQLServer.\r
+                               Log(string.Format("All tests in this class are only for MSSQLServer and cannot be tested on {0}", ConnectedDataProvider.GetDbType()));\r
+                               return;\r
+                       }\r
+\r
+                       Exception exp = null;\r
+                       BeginCase("Checking with sp that doesn't exsits ");\r
+                       try\r
+                       {\r
+                               cmd = new SqlCommand("NotExists",con);\r
+                               cmd.CommandType = CommandType.StoredProcedure;\r
+                               SqlCommandBuilder.DeriveParameters(cmd);\r
+                       } \r
+                       catch(InvalidOperationException ex)\r
+                       {\r
+                               ExpectedExceptionCaught(ex);\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               if (exp == null)\r
+                               {\r
+                                       ExpectedExceptionNotCaught("InvalidOperationException");\r
+                               }\r
+                               EndCase(null);\r
+                               exp = null;\r
+                       }\r
+\r
+               }\r
+\r
+               //Activate This Construntor to log All To Standard output\r
+               //public TestClass():base(true){}\r
+\r
+               //Activate this constructor to log Failures to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, false){}\r
+\r
+               //Activate this constructor to log All to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, true){}\r
+\r
+               //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES\r
+\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_BeginTransaction_S.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_BeginTransaction_S.cs
new file mode 100644 (file)
index 0000000..4f77528
--- /dev/null
@@ -0,0 +1,104 @@
+using System;\r
+using System.Data;\r
+using System.Data.OleDb;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlConnection_BeginTransaction_S : ADONetTesterClass\r
+       {\r
+               SqlConnection con;\r
+\r
+               [SetUp]\r
+               public void SetUp()\r
+               {\r
+                       Exception exp = null;\r
+                       BeginCase("Setup");\r
+                       try\r
+                       {\r
+                               con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                               con.Open();\r
+                               Compare("Setup", "Setup");\r
+                       }\r
+                       catch(Exception ex)     {exp = ex;}\r
+                       finally {EndCase(exp); exp = null;}\r
+               }\r
+\r
+               [TearDown]\r
+               public void TearDown()\r
+               {\r
+                       if (con != null)\r
+                       {\r
+                               if (con.State == ConnectionState.Open) con.Close();\r
+                       }\r
+               }\r
+\r
+               public static void Main()\r
+               {\r
+                       SqlConnection_BeginTransaction_S tc = new SqlConnection_BeginTransaction_S();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlConnection_BeginTransaction_S");\r
+\r
+                               //testing only on SQLServer\r
+                               if (ConnectedDataProvider.GetDbType(ConnectedDataProvider.ConnectionStringSQLClient) != DataBaseServer.SQLServer) return ; \r
+\r
+                               tc.SetUp();\r
+                               tc.run();\r
+                               tc.TearDown();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               tc.EndTest(exp);\r
+                       }\r
+               }\r
+\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       Exception exp = null;\r
+\r
+                       #region         ---- Bug 2716 - MSSQL - SqlCommand.Transaction ---- \r
+                       // testing only SQLServerr\r
+                       if (ConnectedDataProvider.GetDbType(con.ConnectionString) != DataBaseServer.SQLServer)\r
+                       {\r
+                               try\r
+                               {\r
+                                       BeginCase("Bug 2716 - MSSQL - SqlCommand.Transaction");\r
+                                       SqlCommand comm = new SqlCommand("SELECT * FROM Customers",con);\r
+\r
+                                       SqlTransaction trans = con.BeginTransaction("transaction");\r
+                                       comm.Transaction = trans;\r
+\r
+                                       con.Close();\r
+                                       Compare(con.State,ConnectionState.Closed);\r
+                               } \r
+                               catch(Exception ex)\r
+                               {\r
+                                       exp = ex;\r
+                               }\r
+                               finally\r
+                               {\r
+                                       if (con != null)\r
+                                       {if (con.State == ConnectionState.Open) con.Close();}\r
+\r
+                                       EndCase(exp);\r
+                                       exp = null;\r
+                               }\r
+\r
+                       }\r
+                       #endregion\r
+\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_InfoMessage.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_InfoMessage.cs
new file mode 100644 (file)
index 0000000..6079e5d
--- /dev/null
@@ -0,0 +1,110 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+using System.Threading;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlConnection_InfoMessage : GHTBase\r
+       {\r
+               private int errorCounter=0;\r
+\r
+               public static void Main()\r
+               {\r
+                       SqlConnection_InfoMessage tc = new SqlConnection_InfoMessage();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("NoName");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(exp);\r
+                       }\r
+                       // After test is ready, remove this line\r
+               \r
+               }\r
+\r
+               [Test] \r
+               [Category("NotWorking")]\r
+               public void run()\r
+               {\r
+                       Exception exp = null;\r
+\r
+                       // Start Sub Test\r
+                       try\r
+                       {\r
+                               BeginCase("InfoMessage testing");\r
+                               SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                               con.Open();\r
+                               con.InfoMessage+=new SqlInfoMessageEventHandler(con_InfoMessage);\r
+                               generateError(con);\r
+                               con.Close();\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Sub Test must end with EndCase\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+                       // End Sub Test\r
+               }\r
+\r
+\r
+               private void generateError(SqlConnection con)\r
+               {\r
+                       string errorString = string.Empty;\r
+                       SqlCommand cmd = new SqlCommand (string.Empty,con); \r
+                       cmd.CommandText  = "Raiserror ('A sample SQL informational message',10,1)";\r
+\r
+                       \r
+                       cmd.ExecuteNonQuery();\r
+               \r
+               \r
+               \r
+                       //                              cmd.CommandText = "TestInfoMessage";\r
+                       //                              cmd.CommandType = CommandType.StoredProcedure;\r
+\r
+                       \r
+                       if (errorCounter == 0)\r
+                       {\r
+                               Thread.Sleep(5000);     \r
+                       }\r
+                       Compare(errorCounter,1);\r
+               }\r
+\r
+\r
+\r
+               //Activate This Construntor to log All To Standard output\r
+               //public TestClass():base(true){}\r
+\r
+               //Activate this constructor to log Failures to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, false){}\r
+\r
+               //Activate this constructor to log All to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, true){}\r
+\r
+               //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES\r
+\r
+               private void con_InfoMessage(object sender, SqlInfoMessageEventArgs e)\r
+               {\r
+                       errorCounter++;\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_StateChange.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlConnection/SqlConnection_StateChange.cs
new file mode 100644 (file)
index 0000000..cde4cdc
--- /dev/null
@@ -0,0 +1,128 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlConnection_StateChange : GHTBase\r
+       {\r
+\r
+               public static void Main()\r
+               {\r
+                       SqlConnection_StateChange tc = new SqlConnection_StateChange();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlConnection_StateChange");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex){exp = ex;}\r
+                       finally {tc.EndTest(exp);}\r
+               }\r
+\r
+\r
+               bool blnEventRaised = false;\r
+               ConnectionState OriginalState,CurrentState;\r
+\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       \r
+                       Exception exp = null;\r
+\r
+                       SqlConnection  con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+               \r
+                       // ----------- reserved for future versions of the product ---------------\r
+                       //Broken        The connection to the data source is broken. This can occur only after the connection has been opened. A connection in this state may be closed and then re-opened. (This value is reserved for future versions of the product).\r
+                       //Connecting  The connection object is connecting to the data source. (This value is reserved for future versions of the product.) 2 \r
+                       //Executing The connection object is executing a command. (This value is reserved for future versions of the product.) 4 \r
+                       //Fetching  The connection object is retrieving data. (This value is reserved for future versions of the product.) 8 \r
+\r
+                       //-------------- checking only the following: ----------------\r
+                       //Closed  The connection is closed.  \r
+                       //Open  The connection is open. \r
+\r
+\r
+                       //add event handler\r
+                       con.StateChange +=new StateChangeEventHandler(con_StateChange);\r
+\r
+                       con.Open();\r
+                       try\r
+                       {\r
+                               BeginCase("ConnectionState Closed");\r
+                               Compare(blnEventRaised,true);\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("OriginalState Closed");\r
+                               Compare(OriginalState,ConnectionState.Closed );\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("CurrentState Open");\r
+                               Compare(CurrentState,ConnectionState.Open );\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       blnEventRaised = false;\r
+                       con.Close();\r
+                       try\r
+                       {\r
+                               BeginCase("ConnectionState Open");\r
+                               Compare(blnEventRaised,true);\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("OriginalState Open");\r
+                               Compare(OriginalState,ConnectionState.Open );\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("CurrentState Close");\r
+                               Compare(CurrentState,ConnectionState.Closed  );\r
+                       } \r
+                       catch(Exception ex){exp = ex;}\r
+                       finally{EndCase(exp); exp = null;}\r
+\r
+                       if (con.State == ConnectionState.Open) con.Close();\r
+               }\r
+\r
+               void con_StateChange(Object sender, StateChangeEventArgs e)\r
+               {\r
+                       CurrentState = e.CurrentState ;\r
+                       OriginalState = e.OriginalState ;\r
+                       blnEventRaised = true;\r
+\r
+\r
+               }\r
+\r
+               //public TestClass():base(true){}\r
+\r
+               //Activate this constructor to log Failures to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, false){}\r
+\r
+               //Activate this constructor to log All to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, true){}\r
+\r
+               //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES\r
+\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdated.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdated.cs
new file mode 100644 (file)
index 0000000..717d0af
--- /dev/null
@@ -0,0 +1,132 @@
+using System;\r
+using System.Data;\r
+using System.Data.Common;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlDataAdapter_RowUpdated : ADONetTesterClass\r
+       {\r
+               public static void Main()\r
+               {\r
+                       SqlDataAdapter_RowUpdated tc = new SqlDataAdapter_RowUpdated();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlDataAdapter_RowUpdated");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               tc.EndTest(exp);\r
+                       }\r
+               }\r
+\r
+               int EventCounter = 0;\r
+               DataRow drInsert,drDelete,drUpdate;\r
+\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               Log("Test \"SqlDataAdapter_RowUpdated\" skipped: [Test applies only to sql server]");\r
+                               return;\r
+                       }\r
+                       Exception exp = null;\r
+\r
+                       SqlDataAdapter  sqlDa = new SqlDataAdapter();\r
+                       SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient); \r
+                       \r
+\r
+                       sqlDa.SelectCommand = new SqlCommand("",con);\r
+\r
+                       base.SqlDataAdapter_BuildUpdateCommands(ref sqlDa);             \r
+                       // --------- get data from DB -----------------\r
+\r
+                       DataSet ds = base.PrepareDBData_Update((DbDataAdapter)sqlDa,true);\r
+\r
+\r
+                       // add event handler\r
+                       sqlDa.RowUpdated+=new SqlRowUpdatedEventHandler(sqlDa_RowUpdated);\r
+                       \r
+               \r
+                               \r
+                       //insert ,delete, update\r
+                       drInsert = ds.Tables[0].NewRow();\r
+                       drInsert.ItemArray = new object[] {9991,"Ofer","Borshtein","Insert"};\r
+                       drDelete = ds.Tables[0].Rows.Find(9992);\r
+                       drUpdate = ds.Tables[0].Rows.Find(9993);\r
+                       \r
+                       ds.Tables[0].Rows.Add(drInsert);\r
+                       drDelete.Delete();\r
+                       drUpdate["Title"] = "Jack the ripper"; \r
+\r
+                       //execute update to db, will raise events\r
+                       sqlDa.Update(ds);\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("EventCounter ");\r
+                               Compare(EventCounter ,3);\r
+                       }\r
+                       catch(Exception ex)     {exp = ex;}\r
+                       finally {EndCase(exp); exp = null;}\r
+                       \r
+                       sqlDa.RowUpdated-= new SqlRowUpdatedEventHandler(sqlDa_RowUpdated);\r
+                       \r
+                       //close connection\r
+                       if (  ((IDbDataAdapter)sqlDa).SelectCommand.Connection.State != ConnectionState.Closed )\r
+                               ((IDbDataAdapter)sqlDa).SelectCommand.Connection.Close();\r
+               }\r
+\r
+\r
+               private void sqlDa_RowUpdated(object sender, SqlRowUpdatedEventArgs e)\r
+               {\r
+                       Exception exp = null;\r
+                       switch (e.StatementType)\r
+                       {\r
+                               case StatementType.Insert: \r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowInsert");\r
+                                               Compare(drInsert ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                               case StatementType.Delete:\r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowDelete");\r
+                                               Compare(drDelete ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                               case StatementType.Update:\r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowUpdate");\r
+                                               Compare(drUpdate ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                       }\r
+\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdating.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlDataAdapter/SqlDataAdapter_RowUpdating.cs
new file mode 100644 (file)
index 0000000..4e48b21
--- /dev/null
@@ -0,0 +1,145 @@
+using System;\r
+using System.Data;\r
+using System.Data.Common;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlDataAdapter_RowUpdating : ADONetTesterClass\r
+       {\r
+               public static void Main()\r
+               {\r
+                       SqlDataAdapter_RowUpdating tc = new SqlDataAdapter_RowUpdating();\r
+                       Exception exp = null;\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlDataAdapter_RowUpdating");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               tc.EndTest(exp);\r
+                       }\r
+               }\r
+\r
+\r
+               //public TestClass():base(true){}\r
+\r
+               //Activate this constructor to log Failures to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, false){}\r
+\r
+\r
+               //Activate this constructor to log All to a log file\r
+               //public TestClass(System.IO.TextWriter tw):base(tw, true){}\r
+\r
+               //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES\r
+\r
+               int EventCounter = 0;\r
+               DataRow drInsert,drDelete,drUpdate;\r
+               [Test] \r
+               public void run()\r
+               {\r
+                       if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
+                       {\r
+                               Log("Test \"SqlDataAdapter_RowUpdated\" skipped: [Test applies only to sql server]");\r
+                               return;\r
+                       }\r
+\r
+                       Exception exp = null;\r
+\r
+                       SqlDataAdapter  sqlDa = new SqlDataAdapter();\r
+                       SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient); \r
+\r
+                       sqlDa.SelectCommand = new SqlCommand("",con);\r
+\r
+                       base.SqlDataAdapter_BuildUpdateCommands(ref sqlDa);             \r
+                       // --------- get data from DB -----------------\r
+\r
+                       DataSet ds = base.PrepareDBData_Update((DbDataAdapter)sqlDa,true);\r
+\r
+\r
+                       // add event handler\r
+                       sqlDa.RowUpdating+=new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);\r
+                       \r
+                       \r
+                       \r
+               \r
+                               \r
+                       //insert ,delete, update\r
+                       drInsert = ds.Tables[0].NewRow();\r
+                       drInsert.ItemArray = new object[] {9991,"Ofer","Borshtein","Insert"};\r
+                       drDelete = ds.Tables[0].Rows.Find(9992);\r
+                       drUpdate = ds.Tables[0].Rows.Find(9993);\r
+                       \r
+                       ds.Tables[0].Rows.Add(drInsert);\r
+                       drDelete.Delete();\r
+                       drUpdate["Title"] = "Jack the ripper"; \r
+\r
+                       //execute update to db, will raise events\r
+                       sqlDa.Update(ds);\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("EventCounter ");\r
+                               Compare(EventCounter ,3);\r
+                       }\r
+                       catch(Exception ex)     {exp = ex;}\r
+                       finally {EndCase(exp); exp = null;}\r
+                       \r
+                       sqlDa.RowUpdating-= new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);\r
+                       \r
+                       //close connection\r
+                       if (  ((IDbDataAdapter)sqlDa).SelectCommand.Connection.State != ConnectionState.Closed )\r
+                               ((IDbDataAdapter)sqlDa).SelectCommand.Connection.Close();\r
+               }\r
+\r
+\r
+               private void sqlDa_RowUpdating(object sender, SqlRowUpdatingEventArgs e)\r
+               {\r
+                       Exception exp = null;\r
+                       switch (e.StatementType)\r
+                       {\r
+                               case StatementType.Insert: \r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowInsert");\r
+                                               Compare(drInsert ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                               case StatementType.Delete:\r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowDelete");\r
+                                               Compare(drDelete ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                               case StatementType.Update:\r
+                                       try\r
+                                       {\r
+                                               BeginCase("RowUpdate");\r
+                                               Compare(drUpdate ,e.Row );\r
+                                       }\r
+                                       catch(Exception ex)     {exp = ex;}\r
+                                       finally {EndCase(exp); exp = null;}\r
+                                       EventCounter++;\r
+                                       break;\r
+                       }\r
+\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_Direction.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_Direction.cs
new file mode 100644 (file)
index 0000000..9b5bd17
--- /dev/null
@@ -0,0 +1,145 @@
+using System;\r
+using System.Text;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlParameter_Direction : GHTBase\r
+       {\r
+               private Exception exp;\r
+               public static void Main()\r
+               {\r
+                       SqlParameter_Direction tc = new SqlParameter_Direction();\r
+                       tc.exp = null;\r
+                       tc.TestSetup();\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("SqlParameter_Direction");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               tc.exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               tc.EndTest(tc.exp);\r
+                               tc.TestTearDown();\r
+                       }\r
+               }\r
\r
+               public void run()\r
+               {\r
+                       TestBug4703();\r
+               }\r
+\r
+               [TestFixtureSetUp]\r
+               public void TestSetup()\r
+               {\r
+                       BeginCase("Test Setup");\r
+                       SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                       StringBuilder createTestSpBuilder = new StringBuilder();\r
+                       createTestSpBuilder.Append("CREATE PROCEDURE dbo.GHSP_DateTimeOutputTest");\r
+                       createTestSpBuilder.Append("(");\r
+                       createTestSpBuilder.Append("    @LastRefresh datetime OUTPUT");\r
+                       createTestSpBuilder.Append(")");\r
+                       createTestSpBuilder.Append("AS ");\r
+                       createTestSpBuilder.Append("SET @LastRefresh = GETDATE() ");\r
+                       createTestSpBuilder.Append("RETURN");\r
+                       SqlCommand createTestSpCmd = null;\r
+                       try\r
+                       {\r
+                               createTestSpCmd = new SqlCommand(createTestSpBuilder.ToString(), con);\r
+                               con.Open();\r
+                               createTestSpCmd.ExecuteNonQuery();\r
+                               Pass("Test setup completed successfuly.");\r
+                       }\r
+                       catch (Exception ex)\r
+                       {\r
+                               Fail("Test setup failed");\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               if (con != null && con.State != ConnectionState.Closed)\r
+                               {\r
+                                       con.Close();\r
+                               }\r
+                       }\r
+               }\r
+\r
+               [TestFixtureTearDown()]\r
+               public void TestTearDown()\r
+               {\r
+                       BeginCase("Test Teardown");\r
+                       SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);\r
+                       StringBuilder createTestSpBuilder = new StringBuilder();\r
+                       string dropTestSpSql = "DROP PROCEDURE dbo.GHSP_DateTimeOutputTest";\r
+                       SqlCommand dropTestSpCmd = null;\r
+                       try\r
+                       {\r
+                               dropTestSpCmd = new SqlCommand(dropTestSpSql, con);\r
+                               con.Open();\r
+                               dropTestSpCmd.ExecuteNonQuery();\r
+                               Pass("Test teardown completed successfuly.");\r
+                       }\r
+                       catch (Exception ex)\r
+                       {\r
+                               Fail("Test teardown failed");\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               if (con != null && con.State != ConnectionState.Closed)\r
+                               {\r
+                                       con.Close();\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               [Test]\r
+               public void TestBug4703()\r
+               {\r
+                       try\r
+                       {\r
+                               BeginCase("Test Bug 4703 - DateTime output parameter of stored procedure contains incorrect time ( always 12:00 AM )");\r
+                               string strConnection = ConnectedDataProvider.ConnectionStringSQLClient;\r
+                               SqlConnection conn = new SqlConnection(strConnection);\r
+                               conn.Open();\r
+                               SqlCommand command = conn.CreateCommand();\r
+                               SqlParameter param = null;\r
+\r
+                               command.CommandType = CommandType.StoredProcedure;\r
+                               command.CommandText = "GHSP_DateTimeOutputTest";\r
+\r
+                               param = command.CreateParameter();\r
+                               param.ParameterName="@LastRefresh";\r
+                               param.DbType = DbType.DateTime;\r
+                               param.Direction = ParameterDirection.InputOutput;\r
+                               DateTime testValue = DateTime.Now;\r
+                               param.Value = testValue;\r
+\r
+                               command.Parameters.Add( param );\r
+                               Compare(param.Value, testValue);\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_ctor_SO.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_ctor_SO.cs
new file mode 100644 (file)
index 0000000..51cb250
--- /dev/null
@@ -0,0 +1,89 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlParameter_ctor_SO : GHTBase\r
+       {\r
+               private Exception exp = null;\r
+\r
+               public static void Main()\r
+               {\r
+                       SqlParameter_ctor_SO tc = new SqlParameter_ctor_SO();\r
+                       try\r
+                       {\r
+                               tc.BeginTest("SqlParameter_ctor_SO");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               tc.exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(tc.exp);\r
+                       }\r
+               }\r
+\r
+               public void run()\r
+               {\r
+                       CreateParamWithTypeBoolTrue();\r
+                       CreateParamWithTypeBoolFalse();\r
+               }\r
+\r
+               [Test(Description="Create an SqlParameter with value of type bool (true)")]\r
+               public void CreateParamWithTypeBoolTrue()\r
+               {\r
+                       exp = null;\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("Create an SqlParameter with value of type bool (true)");\r
+                               SqlParameter p = new SqlParameter("name", true);\r
+                               Compare(p.Value.GetType(), typeof(bool));\r
+                               Compare(p.DbType, DbType.Boolean);\r
+                               Compare(p.SqlDbType, SqlDbType.Bit);\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+               }\r
+\r
+               [Test(Description="Create an SqlParameter with value of type bool (false)")]\r
+               public void CreateParamWithTypeBoolFalse()\r
+               {\r
+                       exp = null;\r
+\r
+                       try\r
+                       {\r
+                               BeginCase("Create an SqlParameter with value of type bool (false)");\r
+                               SqlParameter p = new SqlParameter("name", false);\r
+                               Compare(p.Value.GetType(), typeof(bool));\r
+                               Compare(p.DbType, DbType.Boolean);\r
+                               Compare(p.SqlDbType, SqlDbType.Bit);\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_set_DbType_D.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient.jvm/SqlParameter/SqlParameter_set_DbType_D.cs
new file mode 100644 (file)
index 0000000..834e48a
--- /dev/null
@@ -0,0 +1,69 @@
+using System;\r
+using System.Data;\r
+using System.Data.SqlClient;\r
+\r
+using MonoTests.System.Data.Utils;\r
+\r
+using NUnit.Framework;\r
+\r
+namespace MonoTests.System.Data.SqlClient\r
+{\r
+       [TestFixture]\r
+       public class SqlParameter_set_DbType_D : GHTBase\r
+       {\r
+               private Exception exp;\r
+               public static void Main()\r
+               {\r
+                       SqlParameter_set_DbType_D tc = new SqlParameter_set_DbType_D();\r
+                       tc.exp = null;\r
+                       try\r
+                       {\r
+                               // Every Test must begin with BeginTest\r
+                               tc.BeginTest("SqlParameter_set_DbType_D");\r
+                               tc.run();\r
+                       }\r
+                       catch(Exception ex)\r
+                       {\r
+                               tc.exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Test must End with EndTest\r
+                               tc.EndTest(tc.exp);\r
+                       }\r
+               }\r
\r
+               public void run()\r
+               {\r
+                       TestBug4689();\r
+               }\r
+\r
+               [Test]\r
+               public void TestBug4689()\r
+               {\r
+                       try\r
+                       {\r
+                               // Every Sub Test must begin with BeginCase\r
+                               BeginCase("Test Bug 4689 - Exception when adding System.Data.DbType.Date parameter");\r
+                               SqlCommand command = new SqlCommand();\r
+                               SqlParameter param = command.CreateParameter();\r
+                               param.ParameterName = "@EffectiveDate";\r
+                               param.DbType = DbType.Date;\r
+                               param.Value = DateTime.Now.Date;\r
+                               command.Parameters.Add(param);\r
+                               Pass("Addition of parameter didn't throw exception.");\r
+                       } \r
+                       catch(Exception ex)\r
+                       {\r
+                               exp = ex;\r
+                       }\r
+                       finally\r
+                       {\r
+                               // Every Sub Test must end with EndCase\r
+                               EndCase(exp);\r
+                               exp = null;\r
+                       }\r
+               }\r
+\r
+       }\r
+}
\ No newline at end of file
index 644a2d4ef91226568ba01f464c29d883aba9a666..6d27945212be6368261d6f21c6e2460618345497 100644 (file)
@@ -130,8 +130,6 @@ REM ********************************************************
 xmltool.exe --transform nunit_transform.xslt %GH_OUTPUT_XML%\r
 @echo off\r
 \r
-@echo\r
-\r
 :FINALLY\r
 GOTO END\r
 \r