2
0
Эх сурвалжийг харах

Test case to verify Bug#382635

svn path=/trunk/mcs/; revision=104443
Veerapuram Varadhan 17 жил өмнө
parent
commit
ffeabbcd92

+ 5 - 0
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog

@@ -1,3 +1,8 @@
+2008-05-29  Veerapuram Varadhan  <[email protected]>
+
+	* SqlParameterTest.cs (ParameterSize_compatibility_Test) : New
+	test case for Bug#382635 - truncate parameter values accordingly.
+	
 2007-10-19  Nagappan A  <[email protected]>
 
 	* SqlCommandBuilderTest.cs: Fixed compilation warnings.

+ 54 - 0
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs

@@ -386,5 +386,59 @@ namespace MonoTests.System.Data.SqlClient
 		}
 #endif
 
+		[Test]
+		// Test for Bug#382635
+		public void ParameterSize_compatibility_Test ()
+		{
+			SqlConnection conn = new SqlConnection (ConnectionManager.Singleton.ConnectionString);
+			conn.Open ();
+			string longstring = new String('x', 256);
+
+			SqlCommand cmd, cmd1;
+			try {
+				cmd = new SqlCommand ("create table #bug382635 (description varchar(50))", conn);
+			    	cmd.ExecuteNonQuery ();
+			} catch (SqlException e) {
+			  	Assert.Fail ("#PSCT1 - Exception thrown while creating the temp table");
+				throw e;
+			}
+
+			cmd.CommandText = 
+					"CREATE PROCEDURE #sp_bug382635 (@Desc varchar(50)) "
+					+ "AS " + Environment.NewLine 
+					+ "BEGIN" + Environment.NewLine 
+					+ "UPDATE #bug382635 SET description = @Desc" + Environment.NewLine
+					+ "END";
+			cmd.CommandType = CommandType.Text;
+			try {
+				cmd.ExecuteNonQuery ();
+			} catch (SqlException e) {
+			  	Assert.Fail ("#PSCT1 - Exception thrown while creating the temp procedure");
+				throw e;
+			}
+
+			cmd.CommandText = "INSERT INTO #bug382635 " +
+					  "(description) VALUES ('This is a test to verify Bug 382635')";
+			cmd.ExecuteNonQuery ();
+
+			cmd.CommandText = "#sp_bug382635";
+			cmd.CommandType = CommandType.StoredProcedure;
+
+			SqlParameter p1 = new SqlParameter ("@Desc", SqlDbType.NVarChar, 50);
+			p1.Value = longstring;
+			cmd.Parameters.Add (p1);
+			cmd.ExecuteNonQuery ();
+
+			// Test for truncation
+			cmd1 = new SqlCommand ("SELECT DATALENGTH(description) from #bug382635", conn);
+			Assert.AreEqual (50, cmd1.ExecuteScalar (), "#PSCT1");
+
+			// Test for regular scenarios
+			p1.Value = longstring.Substring (0, 20);
+			cmd.ExecuteNonQuery ();
+			Assert.AreEqual (20, cmd1.ExecuteScalar (), "#PSCT1");
+			cmd.Dispose ();			
+			cmd1.Dispose ();
+		}
 	}
 }