Author: senga
Date: 2006-06-30 06:10:49 -0400 (Fri, 30 Jun 2006)
New Revision: 62153
Modified:
trunk/mcs/class/System.Data/System.Data/ChangeLog
trunk/mcs/class/System.Data/System.Data/DataRow.cs
trunk/mcs/class/System.Data/Test/System.Data/ChangeLog
trunk/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
Log:
2006-06-30 Senganal T <[EMAIL PROTECTED]>
* Test/System.Data/DataRowTest2.cs : Added tests for new 2.0 methods in
DataRow
* System.Data/DataRow.cs :
- SetAdded, SetModified : new methods in 2.0
Modified: trunk/mcs/class/System.Data/System.Data/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data/System.Data/ChangeLog 2006-06-30 09:58:19 UTC
(rev 62152)
+++ trunk/mcs/class/System.Data/System.Data/ChangeLog 2006-06-30 10:10:49 UTC
(rev 62153)
@@ -1,4 +1,9 @@
2006-06-30 Senganal T <[EMAIL PROTECTED]>
+
+ * DataRow.cs :
+ - SetAdded, SetModified : new methods in 2.0
+
+2006-06-30 Senganal T <[EMAIL PROTECTED]>
* SerializationFormat.cs, DataSetDateTime.cs,
DataTableNewRowEventArgs.cs,
DataTableNewRowEventHandler.cs : Added
* SyntaxErrorException.cs EvaluateException.cs StrongTypingException.cs
Modified: trunk/mcs/class/System.Data/System.Data/DataRow.cs
===================================================================
--- trunk/mcs/class/System.Data/System.Data/DataRow.cs 2006-06-30 09:58:19 UTC
(rev 62152)
+++ trunk/mcs/class/System.Data/System.Data/DataRow.cs 2006-06-30 10:10:49 UTC
(rev 62153)
@@ -336,6 +336,23 @@
}
}
+#if NET_2_0
+ public void SetAdded ()
+ {
+ if (RowState != DataRowState.Unchanged)
+ throw new InvalidOperationException ("SetAdded
and SetModified can only be called on DataRows with Unchanged DataRowState.");
+ Original = -1;
+ }
+
+ public void SetModified ()
+ {
+ if (RowState != DataRowState.Unchanged)
+ throw new InvalidOperationException ("SetAdded
and SetModified can only be called on DataRows with Unchanged DataRowState.");
+ Current = _table.RecordCache.NewRecord ();
+ _table.RecordCache.CopyRecord (_table, Original,
Current);
+ }
+#endif
+
/// <summary>
/// Gets the DataTable for which this row has a schema.
/// </summary>
Modified: trunk/mcs/class/System.Data/Test/System.Data/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data/Test/System.Data/ChangeLog 2006-06-30
09:58:19 UTC (rev 62152)
+++ trunk/mcs/class/System.Data/Test/System.Data/ChangeLog 2006-06-30
10:10:49 UTC (rev 62153)
@@ -1,3 +1,7 @@
+2006-06-30 Senganal T <[EMAIL PROTECTED]>
+
+ * DataRowTest2.cs : Added tests for new 2.0 methods in DataRow
+
2006-06-28 Senganal T <[EMAIL PROTECTED]>
* DataSetTest2.cs : Removed ReadXml_Strm, ReadXml_Strg
Modified: trunk/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
===================================================================
--- trunk/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
2006-06-30 09:58:19 UTC (rev 62152)
+++ trunk/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
2006-06-30 10:10:49 UTC (rev 62153)
@@ -1616,5 +1616,123 @@
Assert.Fail("DRW147: Wrong exception type.
Got:" + exc);
}
}
+
+#if NET_2_0
+ string SetAddedModified_ErrMsg = "SetAdded and SetModified can
only be called on DataRows with Unchanged DataRowState.";
+ [Test]
+ public void SetAdded_test()
+ {
+ DataTable table = new DataTable();
+
+ DataRow row = table.NewRow();
+ try {
+ row.SetAdded();
+ Assert.Fail ("#1");
+ } catch (InvalidOperationException e) {
+ Assert.AreEqual (SetAddedModified_ErrMsg,
e.Message, "#2");
+ }
+
+ table.Columns.Add("col1", typeof(int));
+ table.Columns.Add("col2", typeof(int));
+ table.Columns.Add("col3", typeof(int));
+
+ row = table.Rows.Add(new object[] { 1, 2, 3 });
+ Assert.AreEqual(DataRowState.Added, row.RowState, "#1");
+ try {
+ row.SetAdded();
+ Assert.Fail ("#2");
+ } catch (InvalidOperationException e) {
+ Assert.AreEqual (SetAddedModified_ErrMsg,
e.Message, "#2");
+ }
+ Assert.AreEqual(DataRowState.Added, row.RowState, "#2");
+
+ row.AcceptChanges();
+ row[0] = 10;
+ Assert.AreEqual(DataRowState.Modified, row.RowState,
"#5");
+ try {
+ row.SetAdded();
+ Assert.Fail ("#3");
+ } catch (InvalidOperationException e) {
+ Assert.AreEqual (SetAddedModified_ErrMsg,
e.Message, "#2");
+ }
+
+ row.AcceptChanges();
+ Assert.AreEqual(DataRowState.Unchanged, row.RowState,
"#3");
+ row.SetAdded();
+ Assert.AreEqual(DataRowState.Added, row.RowState, "#4");
+ }
+
+ [Test]
+ public void setAdded_testRollback ()
+ {
+ DataTable table = new DataTable ();
+ table.Columns.Add ("col1", typeof (int));
+ table.Columns.Add ("col2", typeof (int));
+
+ table.Rows.Add (new object[] {1,1});
+ table.AcceptChanges ();
+
+ table.Rows [0].SetAdded ();
+ table.RejectChanges ();
+ Assert.AreEqual (0, table.Rows.Count, "#1");
+ }
+
+ [Test]
+ public void SetModified_test()
+ {
+ DataTable table = new DataTable();
+
+ DataRow row = table.NewRow();
+ try {
+ row.SetModified ();
+ } catch (InvalidOperationException) {}
+
+ table.Columns.Add("col1", typeof(int));
+ table.Columns.Add("col2", typeof(int));
+ table.Columns.Add("col3", typeof(int));
+
+ row = table.Rows.Add(new object[] { 1, 2, 3 });
+ Assert.AreEqual(DataRowState.Added, row.RowState, "#1");
+ try {
+ row.SetModified();
+ Assert.Fail ("#1");
+ } catch (InvalidOperationException e) {
+ Assert.AreEqual (SetAddedModified_ErrMsg,
e.Message, "#2");
+ }
+
+ row.AcceptChanges();
+ row[0] = 10;
+ Assert.AreEqual(DataRowState.Modified, row.RowState,
"#5");
+ try {
+ row.SetModified ();
+ Assert.Fail ("#2");
+ } catch (InvalidOperationException e) {
+ Assert.AreEqual (SetAddedModified_ErrMsg,
e.Message, "#2");
+ }
+
+ row.AcceptChanges();
+ Assert.AreEqual(DataRowState.Unchanged, row.RowState,
"#3");
+ row.SetModified ();
+ Assert.AreEqual(DataRowState.Modified, row.RowState,
"#4");
+ }
+
+ [Test]
+ public void setModified_testRollback()
+ {
+ DataTable table = new DataTable();
+ table.Columns.Add("col1", typeof(int));
+ table.Columns.Add("col2", typeof(int));
+
+ DataRow row = table.Rows.Add(new object[] { 1, 1 });
+ table.AcceptChanges();
+
+ row.SetModified ();
+ Assert.AreEqual(row.RowState, DataRowState.Modified,
"#0");
+ Assert.AreEqual(1, row [0, DataRowVersion.Current],
"#1");
+ Assert.AreEqual(1, row [0, DataRowVersion.Original],
"#2");
+ table.RejectChanges ();
+ Assert.AreEqual(row.RowState, DataRowState.Unchanged,
"#3");
+ }
+#endif
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches