public void SortTests()
{
DataTable dataTable = new DataTable("itemTable");
DataColumn dc1 = new DataColumn("itemId", typeof(int));
DataColumn dc2 = new DataColumn("itemName", typeof(string));
dataTable.Columns.Add(dc1);
dataTable.Columns.Add(dc2);
dataTable.Rows.Add(new object[2] { 1, "First entry" });
dataTable.Rows.Add(new object[2] { 0, "Second entry" });
dataTable.Rows.Add(new object[2] { 3, "Third entry" });
dataTable.Rows.Add(new object[2] { 2, "Fourth entry" });
DataView dataView = dataTable.DefaultView;
string s = "Default sorting: ";
Assert.Equal(1, dataView[0][0]);
Assert.Equal(0, dataView[1][0]);
Assert.Equal(3, dataView[2][0]);
Assert.Equal(2, dataView[3][0]);
s = "Ascending sorting 1: ";
dataView.Sort = "itemId ASC";
Assert.Equal(0, dataView[0][0]);
Assert.Equal(1, dataView[1][0]);
Assert.Equal(2, dataView[2][0]);
Assert.Equal(3, dataView[3][0]);
s = "Ascending sorting 2: ";
dataView.Sort = "itemId ASC";
Assert.Equal(0, dataView[0][0]);
Assert.Equal(1, dataView[1][0]);
Assert.Equal(2, dataView[2][0]);
Assert.Equal(3, dataView[3][0]);
s = "Ascending sorting 3: ";
dataView.Sort = "[itemId] ASC";
Assert.Equal(0, dataView[0][0]);
Assert.Equal(1, dataView[1][0]);
Assert.Equal(2, dataView[2][0]);
Assert.Equal(3, dataView[3][0]);
s = "Ascending sorting 4: ";
dataView.Sort = "[itemId] ASC";
Assert.Equal(0, dataView[0][0]);
Assert.Equal(1, dataView[1][0]);
Assert.Equal(2, dataView[2][0]);
Assert.Equal(3, dataView[3][0]);
s = "Ascending sorting 5: ";
try
{
dataView.Sort = "itemId \tASC";
Assert.Equal(true, false);
}
catch (IndexOutOfRangeException e)
{
}
s = "Descending sorting : ";
dataView.Sort = "itemId DESC";
Assert.Equal(3, dataView[0][0]);
Assert.Equal(2, dataView[1][0]);
Assert.Equal(1, dataView[2][0]);
Assert.Equal(0, dataView[3][0]);
s = "Reverted to default sorting: ";
dataView.Sort = null;
Assert.Equal(1, dataView[0][0]);
Assert.Equal(0, dataView[1][0]);
Assert.Equal(3, dataView[2][0]);
Assert.Equal(2, dataView[3][0]);
}