ListChangedEventArgs listChangedArgs;
TextWriter eventWriter;
+ DataColumn dc1;
+ DataColumn dc2;
+ DataColumn dc3;
+ DataColumn dc4;
+
[SetUp]
public void GetReady ()
{
dataTable = new DataTable ("itemTable");
- DataColumn dc1 = new DataColumn ("itemId");
- DataColumn dc2 = new DataColumn ("itemName");
- DataColumn dc3 = new DataColumn ("itemPrice");
- DataColumn dc4 = new DataColumn ("itemCategory");
+ dc1 = new DataColumn ("itemId");
+ dc2 = new DataColumn ("itemName");
+ dc3 = new DataColumn ("itemPrice");
+ dc4 = new DataColumn ("itemCategory");
dataTable.Columns.Add (dc1);
dataTable.Columns.Add (dc2);
dataView = null;
}
+ [Test]
+ [ExpectedException (typeof (DataException))]
+ public void TestSortWithoutTable ()
+ {
+ DataView dv = new DataView ();
+ dv.Table = new DataTable ();
+ dv.Sort = "abc";
+ }
+
+ [Test]
+ public void TestSort ()
+ {
+ DataView dv = new DataView ();
+ dv.Table = new DataTable ("dummy");
+ dv.Table.Columns.Add ("abc");
+ dv.Sort = "abc";
+ dv.Sort = string.Empty;
+ dv.Sort = "abc";
+ AssertEquals ("test#01", "abc", dv.Sort);
+ }
+
[Test]
public void DataView ()
{
AssertEquals ("Deleted.Value", "1", v);
}
+ //xamarin bug #18898 # / novell bug #595899
+ [Test]
+ public void Bug18898 ()
+ {
+ var table = new DataTable();
+ table.Columns.Add("col1");
+ table.Columns.Add("col2");
+
+ table.Rows.Add("1", "2");
+ table.Rows.Add("4", "3");
+
+ table.AcceptChanges();
+
+ table.Rows.Add("5", "6");
+
+ DataView dv = new DataView(table, string.Empty, string.Empty, DataViewRowState.Added);
+ dv.AllowNew = true;
+ var new_row = dv.AddNew();
+ new_row[0] = "7";
+ new_row[1] = "8";
+
+ var another_new_row = dv.AddNew();
+ another_new_row[0] = "9";
+ another_new_row[1] = "10";
+
+ AssertEquals ("#1", dv[2][0], "9");
+
+ //This should not throw a System.Data.VersionNotFoundException: "There is no Proposed data to accces"
+ AssertEquals ("#1", dv[1][0], "7");
+
+ }
+
+ [Test]
+ public void NullTableGetItemPropertiesTest ()
+ {
+ DataView dataview = new DataView ();
+ PropertyDescriptorCollection col = ((ITypedList)dataview).GetItemProperties (null);
+ AssertEquals ("1", 0, col.Count);
+ }
#region Sort Tests
[Test]
dataView.AllowNew = true;
DataRowView drv = dataView.AddNew ();
AssertEquals ("test#01",ListChangedType.ItemAdded,listChangedArgs.ListChangedType);
- AssertEquals ("test#02",drv["itemName"],dataView [dataView.Count - 1]["itemName"]);
+ AssertEquals ("test#02",-1,listChangedArgs.OldIndex);
+ AssertEquals ("test#03",5,listChangedArgs.NewIndex);
+ AssertEquals ("test#04",drv["itemName"],dataView [dataView.Count - 1]["itemName"]);
listChangedArgs = null;
drv["itemId"] = "item " + 1001;
drv["itemName"] = "name " + rndm.Next();
drv["itemPrice"] = "Rs. " + (rndm.Next() % 1000);
drv["itemCategory"] = "Cat " + ((rndm.Next() % 10) + 1);
// Actually no events are arisen when items are set.
- AssertNull ("test#03", listChangedArgs);
+ AssertNull ("test#05", listChangedArgs);
+ drv.CancelEdit ();
+ AssertEquals ("test#06",ListChangedType.ItemDeleted,listChangedArgs.ListChangedType);
+ AssertEquals ("test#07",-1,listChangedArgs.OldIndex);
+ AssertEquals ("test#08",5,listChangedArgs.NewIndex);
}
[Test]
AssertNull ("#1", dv.Table);
dv.EndInit ();
- AssertEquals ("#2", table, dv.Table);
+ AssertNull ("#2", dv.Table); // still.
AssertEquals ("#3", 0, table.Columns.Count);
table.EndInit ();
+ AssertEquals ("#5", table, dv.Table);
AssertEquals ("#4", 2, table.Columns.Count);
}
+ private bool dvInitialized;
+ private void OnDataViewInitialized (object src, EventArgs args)
+ {
+ dvInitialized = true;
+ }
+ [Test]
+ public void BeginInit2 ()
+ {
+ DataTable table = new DataTable ("table");
+ DataView dv = new DataView ();
+ DataColumn col1 = new DataColumn ("col1");
+ DataColumn col2 = new DataColumn ("col2");
+
+ dvInitialized = false;
+
+ dv.Initialized += new EventHandler (OnDataViewInitialized);
+
+ dv.BeginInit ();
+ table.BeginInit ();
+ table.Columns.AddRange (new DataColumn[] {col1,col2});
+
+ dv.Table = table;
+ AssertNull ("#1", dv.Table);
+ dv.EndInit ();
+
+ AssertNull ("#2", dv.Table);
+ AssertEquals ("#3", 0, table.Columns.Count);
+
+ table.EndInit ();
+
+ dv.Initialized -= new EventHandler (OnDataViewInitialized); // this should not be unregistered before table.EndInit().
+
+ AssertEquals ("#4", 2, table.Columns.Count);
+ AssertEquals ("#6", table, dv.Table);
+ AssertEquals ("DataViewInitialized #5", true, dvInitialized);
+ }
+
[Test]
[ExpectedException(typeof(ArgumentException))]
public void Find_1 ()
[Test]
[ExpectedException (typeof (ArgumentException))]
-#if TARGET_JVM\r
- [NUnit.Framework.Category ("NotWorking")] // defect 5446
-#endif
public void Find_3 ()
{
dataView.Sort = "itemID, itemName";
DataView TestView = new DataView (dataTable);
TestView.Delete (0);
DataRow r = TestView.Table.Rows [0];
- Assertion.Assert ("Dv #1", !(r ["itemId"] == "item 1"));
+ Assertion.Assert ("Dv #1", !((string)r ["itemId"] == "item 1"));
}
[Test]
}
[Test]
- [ExpectedException (typeof (DataException))]
+ [ExpectedException (typeof (IndexOutOfRangeException))]
public void TestDeleteClosed ()
{
DataView TestView = new DataView (dataTable);
TestView.Dispose (); // Close the table
- TestView.Delete (0);
+ TestView.Delete (0); // cannot access to item at 0.
}
[Test] // based on bug #74631
AssertEquals (reference, eventWriter.ToString ());
}
+ [Test]
+ public void ColumnChangeName ()
+ {
+ string result = @"setting table...
+---- OnListChanged PropertyDescriptorChanged,0,0
+---- OnListChanged Reset,-1,-1
+table was set.
+---- OnListChanged PropertyDescriptorChanged,0,0
+";
+
+ eventWriter = new StringWriter ();
+
+ ComplexEventSequence1View dv =
+ new ComplexEventSequence1View (dataTable, eventWriter);
+
+ dc2.ColumnName = "new_column_name";
+
+ AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
+ }
+
private void ListChanged (object o, ListChangedEventArgs e)
{
eventWriter.Write (" =====" + e.ListChangedType + ":" + e.NewIndex);
}
+ [Test]
+ [NUnit.Framework.Category ("NotWorking")]
+ public void ComplexEventSequence2 ()
+ {
+ string result = @"setting table...
+---- OnListChanged PropertyDescriptorChanged,0,0
+----- UpdateIndex : True
+---- OnListChanged Reset,-1,-1
+table was set.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ col1 added.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ col2 added.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ col3 added.
+---- OnListChanged Reset,-1,-1
+added tables to dataset
+---- OnListChanged PropertyDescriptorAdded,0,0
+added relation 1
+---- OnListChanged PropertyDescriptorAdded,0,0
+added relation 2
+---- OnListChanged PropertyDescriptorDeleted,0,0
+removed relation 2
+";
+
+ eventWriter = new StringWriter ();
+
+ DataSet ds = new DataSet ();
+ DataTable dt = new DataTable ("table");
+ DataTable dt2 = new DataTable ("table2");
+ ComplexEventSequence1View dv =
+ new ComplexEventSequence1View (dt, eventWriter);
+ dt.Columns.Add ("col1");
+ eventWriter.WriteLine (" col1 added.");
+ dt.Columns.Add ("col2");
+ eventWriter.WriteLine (" col2 added.");
+ dt.Columns.Add ("col3");
+ eventWriter.WriteLine (" col3 added.");
+
+ dt2.Columns.Add ("col1");
+ dt2.Columns.Add ("col2");
+ dt2.Columns.Add ("col3");
+
+ ds.Tables.Add (dt);
+ ds.Tables.Add (dt2);
+
+ eventWriter.WriteLine ("added tables to dataset");
+ ds.Relations.Add ("Relation", dt.Columns ["col1"], dt2.Columns ["col1"]);
+ eventWriter.WriteLine ("added relation 1");
+
+ DataRelation dr = ds.Relations.Add ("Relation2", dt2.Columns ["col2"], dt.Columns ["col2"]);
+ eventWriter.WriteLine ("added relation 2");
+
+ ds.Relations.Remove (dr);
+ eventWriter.WriteLine ("removed relation 2");
+
+ AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
+ }
+
[Test]
[NUnit.Framework.Category ("NotWorking")]
public void ComplexEventSequence1 ()
dv.Table = new DataTable ("table2");
eventWriter.WriteLine ("table changed.");
- AssertEquals (result, eventWriter.ToString ().Replace ("\r\n", "\n"));
+ AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
+ }
+
+ [Test]
+ public void DefaultColumnNameAddListChangedTest ()
+ {
+ string result = @"setting table...
+---- OnListChanged PropertyDescriptorChanged,0,0
+---- OnListChanged Reset,-1,-1
+table was set.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ default named column added.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ non-default named column added.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ another default named column added (Column2).
+---- OnListChanged PropertyDescriptorAdded,0,0
+ add a column with the same name as the default columnnames.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ add a column with a null name.
+---- OnListChanged PropertyDescriptorAdded,0,0
+ add a column with an empty name.
+";
+ eventWriter = new StringWriter ();
+ DataTable dt = new DataTable ("table");
+ ComplexEventSequence1View dv =
+ new ComplexEventSequence1View (dt, eventWriter);
+ dt.Columns.Add ();
+ eventWriter.WriteLine (" default named column added.");
+ dt.Columns.Add ("non-defaultNamedColumn");
+ eventWriter.WriteLine (" non-default named column added.");
+ DataColumn c = dt.Columns.Add ();
+ eventWriter.WriteLine (" another default named column added ({0}).", c.ColumnName);
+ dt.Columns.Add ("Column3");
+ eventWriter.WriteLine (" add a column with the same name as the default columnnames.");
+ dt.Columns.Add ((string)null);
+ eventWriter.WriteLine (" add a column with a null name.");
+ dt.Columns.Add ("");
+ eventWriter.WriteLine (" add a column with an empty name.");
+
+ AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
+ GC.KeepAlive (dv);
}
public class ComplexEventSequence1View : DataView