public void SortTest()
{
DataView dv = new DataView(_dt);
IBindingList ib = dv;
ib.ListChanged += new ListChangedEventHandler(OnListChanged);
try
{
_args = null;
dv.Sort = "[id] DESC";
Assert.Equal(ListChangedType.Reset, _args.ListChangedType);
Assert.Equal(-1, _args.NewIndex);
Assert.Equal(-1, _args.OldIndex);
Assert.True(ib.IsSorted);
Assert.NotNull(ib.SortProperty);
Assert.Equal(ListSortDirection.Descending, ib.SortDirection);
_args = null;
dv.Sort = null;
Assert.Equal(ListChangedType.Reset, _args.ListChangedType);
Assert.Equal(-1, _args.NewIndex);
Assert.Equal(-1, _args.OldIndex);
Assert.False(ib.IsSorted);
Assert.Null(ib.SortProperty);
PropertyDescriptorCollection pds = ((ITypedList)dv).GetItemProperties(null);
PropertyDescriptor pd = pds.Find("id", false);
_args = null;
ib.ApplySort(pd, ListSortDirection.Ascending);
Assert.Equal(ListChangedType.Reset, _args.ListChangedType);
Assert.Equal(-1, _args.NewIndex);
Assert.Equal(-1, _args.OldIndex);
Assert.True(ib.IsSorted);
Assert.NotNull(ib.SortProperty);
Assert.Equal("[id]", dv.Sort);
_args = null;
ib.RemoveSort();
Assert.Equal(ListChangedType.Reset, _args.ListChangedType);
Assert.Equal(-1, _args.NewIndex);
Assert.Equal(-1, _args.OldIndex);
Assert.False(ib.IsSorted);
Assert.Null(ib.SortProperty);
Assert.Equal(string.Empty, dv.Sort);
_args = null;
// descending
_args = null;
ib.ApplySort(pd, ListSortDirection.Descending);
Assert.Equal(20, dv[0][0]);
Assert.Equal("[id] DESC", dv.Sort);
_args = null;
}
finally
{
ib.ListChanged -= new ListChangedEventHandler(OnListChanged);
}
}