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 ()
{
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);
}
-#if NET_2_0
private bool dvInitialized;
private void OnDataViewInitialized (object src, EventArgs args)
{
dv.Table = table;
AssertNull ("#1", dv.Table);
dv.EndInit ();
-
- dv.Initialized -= new EventHandler (OnDataViewInitialized);
- AssertEquals ("#2", table, dv.Table);
+ 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("DataViewInitialized #5", dvInitialized, true);
+ AssertEquals ("#6", table, dv.Table);
+ AssertEquals ("DataViewInitialized #5", true, dvInitialized);
}
-#endif
[Test]
[ExpectedException(typeof(ArgumentException))]
[Test]
[ExpectedException (typeof (ArgumentException))]
-#if TARGET_JVM
- [NUnit.Framework.Category ("NotWorking")] // defect 5446
-#endif
public void Find_3 ()
{
dataView.Sort = "itemID, itemName";
}
[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);
ds.Relations.Remove (dr);
eventWriter.WriteLine ("removed relation 2");
- AssertEquals (result, eventWriter.ToString ().Replace ("\r\n", "\n"));
+ AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
}
[Test]
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