예제 #1
0
        public void Apply_ColumnName_CorrectResult()
        {
            var builder = new ResultSetBuilder();
            var rs      = builder.Build(new object[]
            {
                new List <object>()
                {
                    "(null)", 10, 100
                },
                new List <object>()
                {
                    "(empty)", 2, 75
                },
                new List <object>()
                {
                    "C", 5, 50
                }
            });

            rs.Table.Columns[0].ColumnName = "first";

            var info = Mock.Of <IPredicateInfo>
                       (
                p => p.ComparerType == ComparerType.NullOrEmpty &&
                p.ColumnType == ColumnType.Text &&
                p.Name == "first"
                       );

            var factory = new PredicateFilterFactory();
            var filter  = factory.Instantiate(new IColumnAlias[0], new IColumnExpression[0], info);
            var result  = filter.Apply(rs);

            Assert.That(result.Rows, Has.Count.EqualTo(2));
        }
예제 #2
0
        public void Apply_ColumnIndex_CorrectResult()
        {
            var builder = new ResultSetBuilder();
            var rs      = builder.Build(new object[]
            {
                new List <object>()
                {
                    "(null)", 10, 100
                },
                new List <object>()
                {
                    "(empty)", 2, 75
                },
                new List <object>()
                {
                    "C", 5, 50
                }
            });

            var info = Mock.Of <IPredicateInfo>
                       (
                p => p.ComparerType == ComparerType.NullOrEmpty &&
                p.ColumnType == ColumnType.Text &&
                p.Name == "#0"
                       );

            var factory = new PredicateFilterFactory();
            var filter  = factory.Instantiate(new IColumnAlias[0], new IColumnExpression[0], info);
            var result  = filter.Apply(rs);

            Assert.That(result.Rows, Has.Count.EqualTo(2));
            Assert.That(filter.Describe(), Is.StringContaining("null").And.StringContaining("or empty"));
        }
예제 #3
0
파일: XPathEngine.cs 프로젝트: kalyon/NBi
        public NBi.Core.ResultSet.ResultSet Execute(XDocument items)
        {
            var result = from item in items.XPathSelectElements(@from)
                         select GetObj(item);

            var builder   = new ResultSetBuilder();
            var rows      = result.ToArray();
            var resultSet = builder.Build(rows);

            return(resultSet);
        }
        protected IEnumerable <string> GetMembersFromResultSet(Object obj)
        {
            var rs = ResultSetBuilder.Build(obj);

            var members = new List <string>();

            foreach (DataRow row in rs.Rows)
            {
                members.Add(row.ItemArray[0].ToString());
            }

            return(members);
        }
예제 #5
0
        public void Apply_MixedExpression_CorrectResult()
        {
            var builder = new ResultSetBuilder();
            var rs      = builder.Build(new object[]
            {
                new List <object>()
                {
                    1, 10, 100
                },
                new List <object>()
                {
                    2, 2, 75
                },
                new List <object>()
                {
                    3, 5, 50
                }
            });

            rs.Table.Columns[2].ColumnName = "c1";

            var aliases = new List <IColumnAlias>()
            {
                Mock.Of <IColumnAlias>(v => v.Column == 0 && v.Name == "a"),
            };

            var expressions = new List <IColumnExpression>()
            {
                Mock.Of <IColumnExpression>(e => e.Value == "Abs([a])+[e]" && e.Name == "d"),
                Mock.Of <IColumnExpression>(e => e.Value == "[#1]*[c1]" && e.Name == "e")
            };

            var info = Mock.Of <IPredicateInfo>
                       (
                p => p.ComparerType == ComparerType.MoreThanOrEqual &&
                p.ColumnType == ColumnType.Numeric &&
                p.Name == "d" &&
                p.Reference == (object)200
                       );

            var factory = new PredicateFilterFactory();
            var filter  = factory.Instantiate(aliases, expressions, info);
            var result  = filter.Apply(rs);

            Assert.That(result.Rows, Has.Count.EqualTo(2));
        }
예제 #6
0
        public void Apply_Resultset_CorrectResult()
        {
            var builder = new ResultSetBuilder();
            var row1    = new List <object>()
            {
                "A", 10, 100
            };
            var row2 = new List <object>()
            {
                "B", 2, 75
            };
            var row3 = new List <object>()
            {
                "C", 5, 50
            };
            var rs = builder.Build(new object[] { row1, row2, row3 });

            var v1        = Mock.Of <IColumnVariable>(v => v.Column == 1 && v.Name == "a");
            var v2        = Mock.Of <IColumnVariable>(v => v.Column == 2 && v.Name == "b");
            var variables = new List <IColumnVariable>()
            {
                v1, v2
            };

            var exp         = Mock.Of <IColumnExpression>(e => e.Value == "a*b" && e.Name == "c");
            var expressions = new List <IColumnExpression>()
            {
                exp
            };

            var info = Mock.Of <IPredicateInfo>
                       (
                p => p.ComparerType == ComparerType.MoreThanOrEqual &&
                p.ColumnType == ColumnType.Numeric &&
                p.Name == "c" &&
                p.Reference == (object)200
                       );

            var filter = new PredicateFilter(variables, expressions, info);
            var result = filter.Apply(rs);

            Assert.That(result.Rows, Has.Count.EqualTo(2));
        }
예제 #7
0
 protected ResultSet GetResultSet(Object obj)
 {
     return(ResultSetBuilder.Build(obj));
 }