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

Reply via email to