[Test]
public void ClearReset () //To test Clear and Reset methods
{
- DataTable table = new DataTable ();
- DataTable table1 = new DataTable ();
+ DataTable table = new DataTable ("table");
+ DataTable table1 = new DataTable ("table1");
DataSet set = new DataSet ();
set.Tables.Add (table);
set.Tables.Add (table1);
-
- DataColumn col = new DataColumn ();
- col.ColumnName = "Id";
- col.DataType = Type.GetType ("System.Int32");
- table.Columns.Add (col);
- UniqueConstraint uc = new UniqueConstraint ("UK1", table.Columns[0] );
- table.Constraints.Add (uc);
- table.CaseSensitive = false;
-
- col = new DataColumn ();
- col.ColumnName = "Name";
- col.DataType = Type.GetType ("System.String");
- table.Columns.Add (col);
-
- col = new DataColumn ();
- col.ColumnName = "Id";
- col.DataType = Type.GetType ("System.Int32");
- table1.Columns.Add (col);
-
- col = new DataColumn ();
- col.ColumnName = "Name";
- col.DataType = Type.GetType ("System.String");
- table1.Columns.Add (col);
- DataRelation dr = new DataRelation ("DR", table.Columns[0], table1.Columns[0]);
+ table.Columns.Add ("Id", typeof (int));
+ table.Columns.Add ("Name", typeof (string));
+ table.Constraints.Add (new UniqueConstraint ("UK1", table.Columns [0]));
+ table.CaseSensitive = false;
+
+ table1.Columns.Add ("Id", typeof (int));
+ table1.Columns.Add ("Name", typeof (string));
+
+ DataRelation dr = new DataRelation ("DR", table.Columns[0], table1.Columns[0]);
set.Relations.Add (dr);
DataRow row = table.NewRow ();
AssertEquals (1, table.ChildRelations.Count);
try {
table.Reset ();
- Fail ("#A01");
+ Fail ("#A01, should have thrown ArgumentException");
}
catch (ArgumentException) {
}
- AssertEquals (0, table.Rows.Count);
- AssertEquals (0, table.ChildRelations.Count);
- AssertEquals (0, table.ParentRelations.Count);
- AssertEquals (0, table.Constraints.Count);
- table.Clear ();
+ AssertEquals ("#CT01", 0, table.Rows.Count);
+ AssertEquals ("#CT02", 0, table.ChildRelations.Count);
+ AssertEquals ("#CT03", 0, table.ParentRelations.Count);
+ AssertEquals ("#CT04", 0, table.Constraints.Count);
table1.Reset ();
AssertEquals ("#A05", 0, table1.Rows.Count);
AssertEquals ("#A06", 0, table1.Constraints.Count);
AssertEquals ("#A07", 0, table1.ParentRelations.Count);
+ // clear test
table.Clear ();
AssertEquals ("#A08", 0, table.Rows.Count);
#if NET_1_1
AssertEquals ("#A09", 1, table.Constraints.Count);
#endif
AssertEquals ("#A10", 0, table.ChildRelations.Count);
+
}
+ [Test]
+ public void ClearTest ()
+ {
+ DataTable table = new DataTable ("test");
+ table.Columns.Add ("id", typeof (int));
+ table.Columns.Add ("name", typeof (string));
+
+ table.PrimaryKey = new DataColumn [] { table.Columns [0] } ;
+
+ table.Rows.Add (new object [] { 1, "mono 1" });
+ table.Rows.Add (new object [] { 2, "mono 2" });
+ table.Rows.Add (new object [] { 3, "mono 3" });
+ table.Rows.Add (new object [] { 4, "mono 4" });
+
+ table.AcceptChanges ();
+#if NET_2_0
+ _tableClearedEventFired = false;
+ table.TableCleared += new DataTableClearEventHandler (OnTableCleared);
+#endif // NET_2_0
+
+ table.Clear ();
+#if NET_2_0
+ AssertEquals ("#0 should have fired cleared event", true, _tableClearedEventFired);
+#endif // NET_2_0
+
+ DataRow r = table.Rows.Find (1);
+ AssertEquals ("#1 should have cleared", true, r == null);
+
+ // try adding new row. indexes should have cleared
+ table.Rows.Add (new object [] { 2, "mono 2" });
+ AssertEquals ("#2 should add row", 1, table.Rows.Count);
+ }
+#if NET_2_0
+ private bool _tableClearedEventFired = false;
+ private void OnTableCleared (object src, DataTableClearEventArgs args)
+ {
+ _tableClearedEventFired = true;
+ }
+#endif // NET_2_0
+
+
[Test]
public void Serialize ()
{
MyDataTable dt = (MyDataTable)(dt1.Clone());
AssertEquals("A#01",2,MyDataTable.count);
}
+
+ DataRowAction rowActionChanging = DataRowAction.Nothing;
+ DataRowAction rowActionChanged = DataRowAction.Nothing;
+ [Test]
+ public void AcceptChangesTest ()
+ {
+ DataTable dt = new DataTable ("test");
+ dt.Columns.Add ("id", typeof (int));
+ dt.Columns.Add ("name", typeof (string));
+
+ dt.Rows.Add (new object [] { 1, "mono 1" });
+
+ dt.RowChanged += new DataRowChangeEventHandler (OnRowChanged);
+ dt.RowChanging += new DataRowChangeEventHandler (OnRowChanging);
+
+ try {
+ rowActionChanged = rowActionChanging = DataRowAction.Nothing;
+ dt.AcceptChanges ();
+
+ AssertEquals ("#1 should have fired event and set action to commit",
+ DataRowAction.Commit, rowActionChanging);
+ AssertEquals ("#2 should have fired event and set action to commit",
+ DataRowAction.Commit, rowActionChanged);
+
+ } finally {
+ dt.RowChanged -= new DataRowChangeEventHandler (OnRowChanged);
+ dt.RowChanging -= new DataRowChangeEventHandler (OnRowChanging);
+
+ }
+ }
+
+ public void OnRowChanging (object src, DataRowChangeEventArgs args)
+ {
+ rowActionChanging = args.Action;
+ }
+
+ public void OnRowChanged (object src, DataRowChangeEventArgs args)
+ {
+ rowActionChanged = args.Action;
+ }
+
}