|
|
@@ -56,8 +56,13 @@ namespace MonoTests.System.Data
|
|
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
SqlCommand cmd = cb.GetInsertCommand ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("INSERT INTO [employee] ([id], [fname]) VALUES (@p1, @p2)",
|
|
|
+ cmd.CommandText, "#2");
|
|
|
+#else
|
|
|
Assert.AreEqual ("INSERT INTO employee (id, fname) VALUES (@p1, @p2)",
|
|
|
cmd.CommandText, "#2");
|
|
|
+#endif
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|
|
|
}
|
|
|
@@ -77,8 +82,13 @@ namespace MonoTests.System.Data
|
|
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
SqlCommand cmd = cb.GetInsertCommand ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("INSERT INTO [employee] ([id], [fname]) VALUES (@p1, @p2)",
|
|
|
+ cmd.CommandText, "#2");
|
|
|
+#else
|
|
|
Assert.AreEqual ("INSERT INTO employee (id, fname) VALUES (@p1, @p2)",
|
|
|
cmd.CommandText, "#2");
|
|
|
+#endif
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|
|
|
}
|
|
|
@@ -97,15 +107,44 @@ namespace MonoTests.System.Data
|
|
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
SqlCommand cmd = cb.GetUpdateCommand ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("UPDATE [employee] SET [id] = @p1, [fname] = @p2, [lname] = @p3 WHERE (([id] = @p4)" +
|
|
|
+ " AND ([fname] = @p5) AND ((@p6 = 1 AND [lname] IS NULL) OR ([lname] = @p7)))",
|
|
|
+ cmd.CommandText, "#2");
|
|
|
+#else
|
|
|
Assert.AreEqual ("UPDATE employee SET id = @p1, fname = @p2, lname = @p3 WHERE ((id = @p4)" +
|
|
|
" AND (fname = @p5) AND ((@p6 = 1 AND lname IS NULL) OR (lname = @p7)))",
|
|
|
cmd.CommandText, "#2");
|
|
|
+#endif
|
|
|
Assert.AreEqual (7, cmd.Parameters.Count, "#3");
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+#if NET_2_0
|
|
|
+ [Test]
|
|
|
+ public void GetUpdateCommandBoolTest ()
|
|
|
+ {
|
|
|
+ IDbConnection conn = ConnectionManager.Singleton.Connection;
|
|
|
+ try {
|
|
|
+ string selectQuery = "select id, fname, lname, id+1 as next_id from employee where id = 1";
|
|
|
+ SqlDataAdapter da = new SqlDataAdapter (selectQuery, (SqlConnection) conn);
|
|
|
+ DataSet ds = new DataSet ();
|
|
|
+ da.Fill (ds, "IntTest");
|
|
|
+ Assert.AreEqual (1, ds.Tables.Count, "#1 atleast one table should be filled");
|
|
|
+
|
|
|
+ SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
+ SqlCommand cmd = cb.GetUpdateCommand (true);
|
|
|
+ Assert.AreEqual ("UPDATE [employee] SET [id] = @id, [fname] = @fname, [lname] = @lname WHERE (([id] = @id)" +
|
|
|
+ " AND ([fname] = @fname) AND ((@lname = 1 AND [lname] IS NULL) OR ([lname] = @lname)))",
|
|
|
+ cmd.CommandText, "#2");
|
|
|
+ Assert.AreEqual (7, cmd.Parameters.Count, "#3");
|
|
|
+ } finally {
|
|
|
+ ConnectionManager.Singleton.CloseConnection ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
[Test]
|
|
|
public void GetUpdateCommandTest_CheckNonUpdatableColumns ()
|
|
|
{
|
|
|
@@ -125,14 +164,25 @@ namespace MonoTests.System.Data
|
|
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
SqlCommand updateCmd = cb.GetUpdateCommand ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @p1, [value] = @p2 WHERE (([id] = @p3) AND (" +
|
|
|
+ "[counter] = @p4) AND ((@p5 = 1 AND [value] IS NULL) OR ([value] = @p6)))",
|
|
|
+ updateCmd.CommandText, "#3");
|
|
|
+#else
|
|
|
Assert.AreEqual ("UPDATE #tmp_table SET id = @p1, value = @p2 WHERE ((id = @p3) AND (" +
|
|
|
"counter = @p4) AND ((@p5 = 1 AND value IS NULL) OR (value = @p6)))",
|
|
|
updateCmd.CommandText, "#3");
|
|
|
+#endif
|
|
|
Assert.AreEqual (6, updateCmd.Parameters.Count, "#4");
|
|
|
|
|
|
SqlCommand delCmd = cb.GetDeleteCommand ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE (([id] = @p1) AND ([counter] = @p2) AND " +
|
|
|
+ "((@p3 = 1 AND [value] IS NULL) OR ([value] = @p4)))", delCmd.CommandText, "#5");
|
|
|
+#else
|
|
|
Assert.AreEqual ("DELETE FROM #tmp_table WHERE ((id = @p1) AND (counter = @p2) AND " +
|
|
|
"((@p3 = 1 AND value IS NULL) OR (value = @p4)))", delCmd.CommandText, "#5");
|
|
|
+#endif
|
|
|
Assert.AreEqual (4, delCmd.Parameters.Count, "#6");
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|
|
|
@@ -163,6 +213,65 @@ namespace MonoTests.System.Data
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+#if NET_2_0
|
|
|
+ [Test]
|
|
|
+ public void GetUpdateCommandBoolTest_CheckNonUpdatableColumns ()
|
|
|
+ {
|
|
|
+ IDbConnection conn = ConnectionManager.Singleton.Connection;
|
|
|
+ try {
|
|
|
+ ConnectionManager.Singleton.OpenConnection ();
|
|
|
+ IDbCommand cmd = conn.CreateCommand ();
|
|
|
+ cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
|
|
|
+ cmd.ExecuteNonQuery ();
|
|
|
+
|
|
|
+ string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
|
|
|
+ SqlDataAdapter da = new SqlDataAdapter (selectQuery, (SqlConnection) conn);
|
|
|
+ DataSet ds = new DataSet ();
|
|
|
+ da.Fill (ds);
|
|
|
+ Assert.AreEqual (1, ds.Tables.Count, "#1");
|
|
|
+ Assert.AreEqual (4, ds.Tables [0].Columns.Count, "#2");
|
|
|
+
|
|
|
+ SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
+ SqlCommand updateCmd = cb.GetUpdateCommand (true);
|
|
|
+ Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, [value] = @value WHERE (([id] = @id) AND (" +
|
|
|
+ "[counter] = @counter) AND ((@value = 1 AND [value] IS NULL) OR ([value] = @value)))",
|
|
|
+ updateCmd.CommandText, "#3");
|
|
|
+ Assert.AreEqual (6, updateCmd.Parameters.Count, "#4");
|
|
|
+
|
|
|
+ SqlCommand delCmd = cb.GetDeleteCommand (true);
|
|
|
+ Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE (([id] = @id) AND ([counter] = @counter) AND " +
|
|
|
+ "((@value = 1 AND [value] IS NULL) OR ([value] = @value)))", delCmd.CommandText, "#5");
|
|
|
+ Assert.AreEqual (4, delCmd.Parameters.Count, "#6");
|
|
|
+ } finally {
|
|
|
+ ConnectionManager.Singleton.CloseConnection ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void GetUpdateDeleteCommandBoolTest_CheckParameters ()
|
|
|
+ {
|
|
|
+ IDbConnection conn = ConnectionManager.Singleton.Connection;
|
|
|
+ try {
|
|
|
+ ConnectionManager.Singleton.OpenConnection ();
|
|
|
+ SqlDataAdapter adapter = new SqlDataAdapter ("select id, type_varchar from string_family",
|
|
|
+ (SqlConnection)conn);
|
|
|
+ SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
|
|
|
+
|
|
|
+ SqlCommand updateCommand = cb.GetUpdateCommand (true);
|
|
|
+ Assert.AreEqual (5, updateCommand.Parameters.Count, "#1");
|
|
|
+ Assert.AreEqual (SqlDbType.VarChar, updateCommand.Parameters ["@type_varchar"].SqlDbType, "#2");
|
|
|
+ // FIXME: NotWorking
|
|
|
+ //Assert.AreEqual (1, updateCommand.Parameters ["@type_char"].Value, "#3");
|
|
|
+
|
|
|
+ SqlCommand delCommand = cb.GetDeleteCommand (true);
|
|
|
+ Assert.AreEqual (3, delCommand.Parameters.Count, "#4");
|
|
|
+ Assert.AreEqual (SqlDbType.Int, delCommand.Parameters ["@type_varchar"].SqlDbType, "#5");
|
|
|
+ Assert.AreEqual (1, delCommand.Parameters ["@type_varchar"].Value, "#6");
|
|
|
+ } finally {
|
|
|
+ ConnectionManager.Singleton.CloseConnection ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
[Test]
|
|
|
[ExpectedException (typeof (DBConcurrencyException))]
|
|
|
public void GetUpdateCommandDBConcurrencyExceptionTest ()
|
|
|
@@ -225,8 +334,13 @@ namespace MonoTests.System.Data
|
|
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder (da);
|
|
|
SqlCommand cmd = cb.GetDeleteCommand ();
|
|
|
- Assert.AreEqual ("DELETE FROM employee WHERE ((id = @p1) AND (fname = @p2) AND ((@p3 = 1 AND lname IS NULL) OR (lname = @p4)))",
|
|
|
- cmd.CommandText, "#2");
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("DELETE FROM [employee] WHERE (([id] = @p1) AND ([fname] = @p2) AND " +
|
|
|
+ "((@p3 = 1 AND [lname] IS NULL) OR ([lname] = @p4)))", cmd.CommandText, "#2");
|
|
|
+#else
|
|
|
+ Assert.AreEqual ("DELETE FROM employee WHERE ((id = @p1) AND (fname = @p2) AND " +
|
|
|
+ "((@p3 = 1 AND lname IS NULL) OR (lname = @p4)))", cmd.CommandText, "#2");
|
|
|
+#endif
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|
|
|
}
|
|
|
@@ -238,10 +352,12 @@ namespace MonoTests.System.Data
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder ();
|
|
|
#if NET_1_0
|
|
|
Assert.AreEqual (ConflictOption.CompareAllSearchableValues, cb.ConflictDetection);
|
|
|
-#endif
|
|
|
Assert.AreEqual ("", cb.QuotePrefix, "#5");
|
|
|
Assert.AreEqual ("", cb.QuoteSuffix, "#6");
|
|
|
+#endif
|
|
|
#if NET_2_0
|
|
|
+ Assert.AreEqual ("[", cb.QuotePrefix, "#5");
|
|
|
+ Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
|
|
|
Assert.AreEqual (".", cb.CatalogSeparator, "#2");
|
|
|
//Assert.AreEqual ("", cb.DecimalSeparator, "#3");
|
|
|
Assert.AreEqual (".", cb.SchemaSeparator, "#4");
|
|
|
@@ -250,8 +366,13 @@ namespace MonoTests.System.Data
|
|
|
try {
|
|
|
conn.Open ();
|
|
|
cb = new SqlCommandBuilder ();
|
|
|
+#if NET_2_0
|
|
|
+ Assert.AreEqual ("[monotest]", cb.QuoteIdentifier ("monotest"), "#7");
|
|
|
+ Assert.AreEqual ("\"monotest\"", cb.UnquoteIdentifier ("\"monotest\""), "#8");
|
|
|
+#else
|
|
|
Assert.AreEqual ("\"monotest\"", cb.QuoteIdentifier ("monotest"), "#7");
|
|
|
Assert.AreEqual ("monotest", cb.UnquoteIdentifier ("\"monotest\""), "#8");
|
|
|
+#endif
|
|
|
conn.Close ();
|
|
|
} finally {
|
|
|
ConnectionManager.Singleton.CloseConnection ();
|