public void RefreshCurrentPageDataTable() { using (ComReleaser comreleaser = new ComReleaser()) { IFeatureCursor cursor = TargetFeatureClass.Search(null, false); comreleaser.ManageLifetime(cursor); IFeature tempFt = cursor.NextFeature(); comreleaser.ManageLifetime(tempFt); ISet <int> IngoreFieldIndex = ConvertIngoreColName2FieldIndex(); for (int index = 0; index < FeatureCount; index++) { if (index < CurrentPage * PageContains) { tempFt = cursor.NextFeature(); } else if (index > (CurrentPage + 1) * PageContains) { break; } else { int colIndex = 0; DataRow tempRow = ResultTable.NewRow(); for (int i = 0; i < TargetFeatureClass.Fields.FieldCount; i++) { if (IngoreFieldIndex.Contains(i)) { continue; } tempRow[colIndex++] = tempFt.get_Value(index); } } } } }
public void TestTableToReader() { var table = new ResultTable(); table.Columns.Add(new ColumnRef("a"), aColDef); table.Columns.Add(new ColumnRef("b"), bColDef); table.Columns.Add(new ColumnRef("c"), cColDef); for (var i = 0; i < 5; i++) { var row = table.NewRow(); row.Add(new object[] { (i + 1) * 1, (i + 1) * 2, (i + 1) * 3 }); table.Rows.Add(row); } var results = new List <int[]>(); using (var reader = new ResultReader(table)) { while (reader.Read()) { var row = new int[3]; row[0] = (int)reader[new ColumnRef("a")]; row[1] = (int)reader[bColDef]; row[2] = (int)reader["c"]; results.Add(row); } } Assert.Equal(3, results[2][0]); Assert.Equal(6, results[2][1]); Assert.Equal(9, results[2][2]); Assert.Equal(5, results.Count); }
public void TestResultTableSerialization() { var table = new ResultTable(); table.Columns.Add(new ResultColumnHeader("a", typeof(int))); table.Columns.Add(new ResultColumnHeader("b", typeof(string))); table.Columns.Add(new ResultColumnHeader("c", typeof(string))); var row1 = table.NewRow(); row1.Add(new object[] { 1, "abc", "DEF" }); table.Rows.Add(row1); var row2 = table.NewRow(); row2.Add(new object[] { 2, DBNull.Value, "xyz" }); table.Rows.Add(row2); string xmlRes; using (var memStm = new MemoryStream()) { var types = new List <Type> { typeof(DBNull) }; var serializer = new DataContractSerializer(typeof(ResultTable), types); var settings = new XmlWriterSettings { Indent = true }; using (var w = XmlWriter.Create(memStm, settings)) serializer.WriteObject(w, table); memStm.Seek(0, SeekOrigin.Begin); using (var streamReader = new StreamReader(memStm)) xmlRes = streamReader.ReadToEnd(); } var jsonRes = JsonConvert.SerializeObject(table, Newtonsoft.Json.Formatting.Indented); Assert.NotNull(xmlRes); Assert.NotNull(jsonRes); output.WriteLine(table.ToString()); output.WriteLine(xmlRes); output.WriteLine(jsonRes); }
public void TestBooleanExpressionLike() { //Initialize var table = new ResultTable(); var col = new ResultColumnHeader("TextColumn", typeof(string)); col.Expression = new ColumnRef("TextColumn"); table.Columns.Add(col); var like = new BooleanLike(); var row1 = table.NewRow(); row1.Add(new object[] { "%%ABCDEFG" }); //Escape character test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%%"), '!'); Assert.Equal(true, like.Eval(row1)); //Leading percent test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("%EFG")); Assert.Equal(true, like.Eval(row1)); //Trailing percent test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC%"), '!'); Assert.Equal(true, like.Eval(row1)); //Middle percent test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC%EFG"), '!'); Assert.Equal(true, like.Eval(row1)); //Leading underscore test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("_!%ABCDEFG"), '!'); Assert.Equal(true, like.Eval(row1)); //Trailing underscore test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABCDEF_"), '!'); Assert.Equal(true, like.Eval(row1)); //Middle underscore test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC_EFG"), '!'); Assert.Equal(true, like.Eval(row1)); //Mixed wild card test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("__ABCD%_")); Assert.Equal(true, like.Eval(row1)); //Case insensitive test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("___bcd%_")); Assert.Equal(true, like.Eval(row1)); //Invalid escape character test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%!ABCDEF!G!")); Assert.Equal(false, like.Eval(row1)); //Null escape character test like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("\\%\\%ABCDEFG"), null); Assert.Equal(true, like.Eval(row1)); }
public void TestResultTableSerialization() { var table = new ResultTable(); table.Columns.Add(new ResultColumnHeader("a", typeof(int))); table.Columns.Add(new ResultColumnHeader("b", typeof(string))); table.Columns.Add(new ResultColumnHeader("c", typeof(string))); var row1 = table.NewRow(); row1.Add(new object[] { 1, "abc", "DEF" }); table.Rows.Add(row1); var row2 = table.NewRow(); row2.Add(new object[] { 2, null, "xyz" }); table.Rows.Add(row2); Assert.Equal(3, table.Columns.Count); var jsonRes = JsonConvert.SerializeObject(table); Assert.NotNull(jsonRes); }
public void TestOperations() { var table = new ResultTable(); table.Columns.Add(new ColumnRef("a")); table.Columns.Add(new ColumnRef("b")); table.Columns.Add(new ColumnRef("c")); table.Columns.Add(new ColumnRef("d")); var row = table.NewRow(); row.Add(new object[] { 1, 432, 24.42d, 0.256m }); var computeAddInt = new Addition(new ColumnRef("a"), new ColumnRef("b")); Assert.Equal(433, computeAddInt.Eval(row)); var computeAddDouble = new Addition(new ColumnRef("c"), new ColumnRef("c")); Assert.Equal(48.84, computeAddDouble.Eval(row)); var computeAddDecimal = new Addition(new ColumnRef("d"), new ColumnRef("d")); Assert.Equal(0.512m, computeAddDecimal.Eval(row)); var computeAddMixed = new Addition(new ColumnRef("c"), new ColumnRef("d")); Assert.Equal(24.676m, computeAddMixed.Eval(row)); var computeSubInt = new Subtraction(new ColumnRef("a"), new ColumnRef("b")); Assert.Equal(-431, computeSubInt.Eval(row)); var computeSubDouble = new Subtraction(new ColumnRef("c"), new ColumnRef("c")); Assert.Equal(0d, computeSubDouble.Eval(row)); var computeSubDecimal = new Subtraction(new ColumnRef("d"), new ColumnRef("d")); Assert.Equal(0m, computeSubDecimal.Eval(row)); var computeSubMixed = new Subtraction(new ColumnRef("c"), new ColumnRef("d")); Assert.Equal(24.164m, computeSubMixed.Eval(row)); var computeMulInt = new Multiplication(new ColumnRef("a"), new ColumnRef("b")); Assert.Equal(432, computeMulInt.Eval(row)); var computeMulDouble = new Multiplication(new ColumnRef("c"), new ColumnRef("c")); Assert.Equal(24.42d * 24.42d, computeMulDouble.Eval(row)); var computeMulDecimal = new Multiplication(new ColumnRef("d"), new ColumnRef("d")); Assert.Equal(0.065536m, computeMulDecimal.Eval(row)); var computeMulMixed = new Multiplication(new ColumnRef("c"), new ColumnRef("d")); Assert.Equal(6.25152m, computeMulMixed.Eval(row)); var computeDivInt = new Division(new ColumnRef("a"), new ColumnRef("b")); Assert.Equal(0, computeDivInt.Eval(row)); var computeDivDouble = new Division(new ColumnRef("c"), new ColumnRef("c")); Assert.Equal(24.42d / 24.42d, computeDivDouble.Eval(row)); var computeDivDecimal = new Division(new ColumnRef("d"), new ColumnRef("d")); Assert.Equal(1m, computeDivDecimal.Eval(row)); var computeDivMixed = new Division(new ColumnRef("c"), new ColumnRef("d")); Assert.Equal(95.390625m, computeDivMixed.Eval(row)); }