Author: anagappan Date: 2007-05-30 07:02:36 -0400 (Wed, 30 May 2007) New Revision: 78189
Modified:
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandTest.cs
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlDataReaderTest.cs
Log:
2007-05-30 Nagappan A <[EMAIL PROTECTED]>
* SqlCommandTest.cs (StoredProc_NoParameterTest)
(StoredProc_ParameterTest, rpc_helper_function): Added new methods
to test the implementation of TDS RPC.
Modified:
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog
===================================================================
---
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog
2007-05-30 10:59:08 UTC (rev 78188)
+++
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog
2007-05-30 11:02:36 UTC (rev 78189)
@@ -1,3 +1,9 @@
+2007-05-30 Nagappan A <[EMAIL PROTECTED]>
+
+ * SqlCommandTest.cs (StoredProc_NoParameterTest)
+ (StoredProc_ParameterTest, rpc_helper_function): Added new methods
+ to test the implementation of TDS RPC.
+
2007-04-03 Amit Biswas <[EMAIL PROTECTED]>
* SqlDataReaderTest.cs (GetSqlBytesTest): Test case for GetSqlBytes
Modified:
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandTest.cs
===================================================================
---
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandTest.cs
2007-05-30 10:59:08 UTC (rev 78188)
+++
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandTest.cs
2007-05-30 11:02:36 UTC (rev 78189)
@@ -410,12 +410,13 @@
// Test Connection cannot be modified when reader is
in use
// NOTE : msdotnet contradicts documented behavior
+ /*
cmd.CommandText = "select * from numeric_family where
id=1";
reader = cmd.ExecuteReader ();
reader.Read ();
conn.Close (); // valid operation
conn = new SqlConnection (connectionString);
-
+ */
/*
// NOTE msdotnet contradcits documented behavior
// If the above testcase fails, then this shud be
tested
@@ -910,7 +911,318 @@
Assert.AreEqual(2, cmd.Parameters.Count);
}
+ [Test]
+ public void StoredProc_NoParameterTest ()
+ {
+ string query = "create procedure #tmp_sp_proc as begin";
+ query += " select 'data' end";
+ SqlConnection conn = new SqlConnection
(connectionString);
+ SqlCommand cmd = conn.CreateCommand ();
+ cmd.CommandText = query ;
+ conn.Open ();
+ cmd.ExecuteNonQuery ();
+
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.CommandText = "#tmp_sp_proc";
+ using (SqlDataReader reader = cmd.ExecuteReader()) {
+ if (reader.Read ())
+ Assert.AreEqual ("data",
reader.GetString(0),"#1");
+ else
+ Assert.Fail ("#2 Select shud return
data");
+ }
+ conn.Close ();
+ }
+
+ [Test]
+ public void StoredProc_ParameterTest ()
+ {
+ string create_query = CREATE_TMP_SP_PARAM_TEST;
+ string drop_query = DROP_TMP_SP_PARAM_TEST;
+ SqlConnection conn = new SqlConnection
(connectionString);
+
+ conn.Open ();
+ SqlCommand cmd = conn.CreateCommand ();
+ int label = 0 ;
+ string error = "";
+ while (label != -1) {
+ try {
+ switch (label) {
+ case 0 :
+ // Test BigInt Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "bigint"));
+ rpc_helper_function
(cmd, SqlDbType.BigInt, 0, Int64.MaxValue);
+ rpc_helper_function
(cmd, SqlDbType.BigInt, 0, Int64.MinValue);
+ break;
+ case 1 :
+ // Test Binary Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "binary(5)"));
+ //rpc_helper_function
(cmd, SqlDbType.Binary, 0, new byte[] {});
+ rpc_helper_function
(cmd, SqlDbType.Binary, 5, new byte[] {1,2,3,4,5});
+ break;
+ case 2 :
+ // Test Bit Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "bit"));
+ rpc_helper_function
(cmd, SqlDbType.Bit, 0, true);
+ rpc_helper_function
(cmd, SqlDbType.Bit, 0, false);
+ break;
+ case 3 :
+ // Testing Char
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "char(10)"));
+ rpc_helper_function
(cmd, SqlDbType.Char, 10, "characters");
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Char, 10, "");
+ rpc_helper_function
(cmd, SqlDbType.Char, 10, null);
+ */
+ break;
+ case 4 :
+ // Testing DateTime
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "datetime"));
+ rpc_helper_function
(cmd, SqlDbType.DateTime, 0, "2079-06-06 23:59:00");
+ /*
+ rpc_helper_function
(cmd, SqlDbType.DateTime, 10, "");
+ rpc_helper_function
(cmd, SqlDbType.DateTime, 10, null);
+ */
+ break;
+ case 5 :
+ // Test Decimal Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"decimal(10,2)"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Decimal, 0, 10.01);
+ rpc_helper_function
(cmd, SqlDbType.Decimal, 0, -10.01);
+ */
+ break;
+ case 6 :
+ // Test Float Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"float"));
+ rpc_helper_function
(cmd, SqlDbType.Float, 0, 10.0);
+ rpc_helper_function
(cmd, SqlDbType.Float, 0, 0);
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Float, 0, null);
+ */
+ break;
+ case 7 :
+ // Testing Image
+ /* NOT WORKING
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query, "image"));
+ rpc_helper_function
(cmd, SqlDbType.Image, 0, );
+ rpc_helper_function
(cmd, SqlDbType.Image, 0, );
+ rpc_helper_function
(cmd, SqlDbType.Image, 0, );
+ /* NOT WORKING*/
+ break;
+ case 8 :
+ // Test Integer Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"int"));
+ rpc_helper_function
(cmd, SqlDbType.Int, 0, 10);
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Int, 0, null);
+ */
+ break;
+ case 9 :
+ // Test Money Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"money"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Money, 0, 10.0);
+ rpc_helper_function
(cmd, SqlDbType.Money, 0, null);
+ */
+ break;
+ case 23 :
+ // Test NChar Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"nchar(10)"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.NChar, 10, "nchar");
+ rpc_helper_function
(cmd, SqlDbType.NChar, 10, "");
+ rpc_helper_function
(cmd, SqlDbType.NChar, 10, null);
+ */
+ break;
+ case 10 :
+ // Test NText Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"ntext"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.NText, 0, "ntext");
+ rpc_helper_function
(cmd, SqlDbType.NText, 0, "");
+ rpc_helper_function
(cmd, SqlDbType.NText, 0, null);
+ */
+ break;
+ case 11 :
+ // Test NVarChar Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"nvarchar(10)"));
+ rpc_helper_function
(cmd, SqlDbType.NVarChar, 10, "nvarchar");
+ rpc_helper_function
(cmd, SqlDbType.NVarChar, 10, "");
+ //rpc_helper_function
(cmd, SqlDbType.NVarChar, 10, null);
+ break;
+ case 12 :
+ // Test Real Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"real"));
+ rpc_helper_function
(cmd, SqlDbType.Real, 0, 10.0);
+ //rpc_helper_function
(cmd, SqlDbType.Real, 0, null);
+ break;
+ case 13 :
+ // Test SmallDateTime
Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"smalldatetime"));
+ rpc_helper_function
(cmd, SqlDbType.SmallDateTime, 0, "6/6/2079 11:59:00 PM");
+ /*
+ rpc_helper_function
(cmd, SqlDbType.SmallDateTime, 0, "");
+ rpc_helper_function
(cmd, SqlDbType.SmallDateTime, 0, null);
+ */
+ break;
+ case 14 :
+ // Test SmallInt Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"smallint"));
+ rpc_helper_function
(cmd, SqlDbType.SmallInt, 0, 10);
+ rpc_helper_function
(cmd, SqlDbType.SmallInt, 0, -10);
+ //rpc_helper_function
(cmd, SqlDbType.SmallInt, 0, null);
+ break;
+ case 15 :
+ // Test SmallMoney
Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"smallmoney"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.SmallMoney, 0, 10.0);
+ rpc_helper_function
(cmd, SqlDbType.SmallMoney, 0, -10.0);
+ rpc_helper_function
(cmd, SqlDbType.SmallMoney, 0, null);
+ */
+ break;
+ case 16 :
+ // Test Text Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"text"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.Text, 0, "text");
+ rpc_helper_function
(cmd, SqlDbType.Text, 0, "");
+ rpc_helper_function
(cmd, SqlDbType.Text, 0, null);
+ */
+ break;
+ case 17 :
+ // Test TimeStamp Param
+ /* NOT WORKING
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"timestamp"));
+ rpc_helper_function
(cmd, SqlDbType.TimeStamp, 0, "");
+ rpc_helper_function
(cmd, SqlDbType.TimeStamp, 0, "");
+ rpc_helper_function
(cmd, SqlDbType.TimeStamp, 0, null);
+ */
+ break;
+ case 18 :
+ // Test TinyInt Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"tinyint"));
+ /*
+ rpc_helper_function
(cmd, SqlDbType.TinyInt, 0, 10);
+ rpc_helper_function
(cmd, SqlDbType.TinyInt, 0, -10);
+ rpc_helper_function
(cmd, SqlDbType.TinyInt, 0, null);
+ */
+ break;
+ case 19 :
+ // Test
UniqueIdentifier Param
+ /*
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"uniqueidentifier"));
+ rpc_helper_function
(cmd, SqlDbType.UniqueIdentifier, 0, "0f159bf395b1d04f8c2ef5c02c3add96");
+ rpc_helper_function
(cmd, SqlDbType.UniqueIdentifier, 0, null);
+ */
+ break;
+ case 20 :
+ // Test VarBinary Param
+ /* NOT WORKING
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"varbinary (10)"));
+ rpc_helper_function
(cmd, SqlDbType.VarBinary, 0,);
+ rpc_helper_function
(cmd, SqlDbType.VarBinary, 0,);
+ rpc_helper_function
(cmd, SqlDbType.VarBinary, 0, null);
+ */
+ break;
+ case 21 :
+ // Test Varchar Param
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"varchar(10)"));
+ rpc_helper_function
(cmd, SqlDbType.VarChar, 10, "VarChar");
+ break;
+ case 22 :
+ // Test Variant Param
+ /* NOT WORKING
+
DBHelper.ExecuteNonQuery (conn,
+
String.Format(create_query,"variant"));
+ rpc_helper_function
(cmd, SqlDbType.Variant, 0, );
+ rpc_helper_function
(cmd, SqlDbType.Variant, 0, );
+ rpc_helper_function
(cmd, SqlDbType.Variant, 0, null);
+ */
+ break;
+ default :
+ label = -2;
+ break;
+ }
+ }catch (AssertionException e) {
+ error += String.Format (" Case {0}
INCORRECT VALUE : {1}\n",label, e.Message);
+ }catch (Exception e) {
+ error += String.Format (" Case {0} NOT
WORKING : {1}\n",label, e.Message);
+ }
+
+ label++;
+ if (label != -1)
+ DBHelper.ExecuteNonQuery (conn,
drop_query);
+ }
+ if (error != String.Empty)
+ Assert.Fail (error);
+ }
+
+ private void rpc_helper_function (SqlCommand cmd, SqlDbType
type, int size, object val)
+ {
+ cmd.Parameters.Clear ();
+ SqlParameter param1 ;
+ SqlParameter param2 ;
+ if (size != 0) {
+ param1 = new SqlParameter ("@param1",
type, size);
+ param2 = new SqlParameter ("@param2",
type, size);
+ }
+ else {
+ param1 = new SqlParameter ("@param1",
type);
+ param2 = new SqlParameter ("@param2",
type);
+ }
+
+ SqlParameter retval = new SqlParameter
("retval", SqlDbType.Int);
+ param1.Value = val;
+ param1.Direction = ParameterDirection.Input;
+ param2.Direction = ParameterDirection.Output;
+ retval.Direction =
ParameterDirection.ReturnValue;
+ cmd.Parameters.Add (param1);
+ cmd.Parameters.Add (param2);
+ cmd.Parameters.Add (retval);
+ cmd.CommandText = "#tmp_sp_param_test";
+ cmd.CommandType = CommandType.StoredProcedure;
+ using (SqlDataReader reader = cmd.ExecuteReader
()) {
+ while (reader.Read ()) {
+ if (param1.Value != null &&
param1.Value.GetType () == typeof (string))
+ Assert.AreEqual
(param1.Value,
+
reader.GetValue(0).ToString (),"#1");
+ else
+ Assert.AreEqual
(param1.Value,
+
reader.GetValue(0),"#1");
+ }
+ }
+ if (param1.Value != null &&
param1.Value.GetType () == typeof (string) && param2.Value != null)
+ Assert.AreEqual (param1.Value.ToString
(), param2.Value.ToString (), "#2");
+ else
+ Assert.AreEqual (param1.Value,
param2.Value, "#2");
+ Assert.AreEqual (5, retval.Value, "#3");
+ }
+
[Test]
[ExpectedException (typeof (InvalidOperationException))]
public void OutputParamSizeTest1 ()
@@ -1106,6 +1418,9 @@
Error = 3
}
+ private readonly string CREATE_TMP_SP_PARAM_TEST = "create
procedure #tmp_sp_param_test (@param1 {0}, @param2 {0} output) as begin select
@param1 set @[EMAIL PROTECTED] return 5 end";
+ private readonly string DROP_TMP_SP_PARAM_TEST = "drop
procedure #tmp_sp_param_test";
+
private readonly string CREATE_TMP_SP_TEMP_INSERT_PERSON =
("create procedure #sp_temp_insert_employee ( " + Environment.NewLine +
"@fname varchar (20)) " + Environment.NewLine +
"as
" + Environment.NewLine +
Modified:
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlDataReaderTest.cs
===================================================================
---
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlDataReaderTest.cs
2007-05-30 10:59:08 UTC (rev 78188)
+++
trunk/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlDataReaderTest.cs
2007-05-30 11:02:36 UTC (rev 78189)
@@ -977,9 +977,10 @@
reader = cmd.ExecuteReader ();
while (reader.Read ()){
- for (int j=1; j< noOfColumns ; ++j)
+ for (int j=1; j< noOfColumns ; ++j) {
Assert.AreEqual (table.Rows[i][j],
reader[j],
String.Format (fmt,
table.TableName, i+1, j));
+ }
i++;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches
