public void CancelEditAndEvents()
{
string reference = " =====ItemAdded:3 ------4 =====ItemAdded:3 =====ItemAdded:4 ------5 =====ItemAdded:4 =====ItemAdded:5 ------6 =====ItemDeleted:5 ------5 =====ItemAdded:5";
_eventWriter = new StringWriter();
DataTable dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
dt.Rows.Add(new object[] { 1, 2, 3 });
dt.Rows.Add(new object[] { 1, 2, 3 });
dt.Rows.Add(new object[] { 1, 2, 3 });
DataView dv = new DataView(dt);
dv.ListChanged += new ListChangedEventHandler(ListChanged);
DataRowView a1 = dv.AddNew();
_eventWriter.Write(" ------" + dv.Count);
// I wonder why but MS fires another event here.
a1 = dv.AddNew();
_eventWriter.Write(" ------" + dv.Count);
// I wonder why but MS fires another event here.
DataRowView a2 = dv.AddNew();
_eventWriter.Write(" ------" + dv.Count);
a2.CancelEdit();
_eventWriter.Write(" ------" + dv.Count);
DataRowView a3 = dv.AddNew();
Assert.Equal(reference, _eventWriter.ToString());
GC.KeepAlive(dv);
}