public void SelectFunctions()
{
DataTable T = new DataTable("test");
DataColumn C = new DataColumn("name");
T.Columns.Add(C);
C = new DataColumn("age");
C.DataType = typeof(int);
T.Columns.Add(C);
C = new DataColumn("id");
T.Columns.Add(C);
DataRow Row = null;
for (int i = 0; i < 1000; i++)
{
Row = T.NewRow();
Row[0] = "human" + i;
Row[1] = i;
Row[2] = i;
T.Rows.Add(Row);
}
Row = T.NewRow();
Row[0] = "human" + "test";
Row[1] = DBNull.Value;
Row[2] = DBNull.Value;
T.Rows.Add(Row);
Assert.Equal(25, T.Select("age = 5*5")[0]["age"]);
Assert.Equal(901, T.Select("len(name) > 7").Length);
Assert.Equal(125, T.Select("age = 5*5*5 AND len(name)>7")[0]["age"]);
Assert.Equal(1, T.Select("isnull(id, 'test') = 'test'").Length);
Assert.Equal(1000, T.Select("iif(id = '56', 'test', 'false') = 'false'").Length);
Assert.Equal(1, T.Select("iif(id = '56', 'test', 'false') = 'test'").Length);
Assert.Equal(9, T.Select("substring(id, 2, 3) = '23'").Length);
Assert.Equal("123", T.Select("substring(id, 2, 3) = '23'")[0]["id"]);
Assert.Equal("423", T.Select("substring(id, 2, 3) = '23'")[3]["id"]);
Assert.Equal("923", T.Select("substring(id, 2, 3) = '23'")[8]["id"]);
}