コード例 #1
0
        protected NBiConstraint InstantiateConstraint()
        {
            var childConstraint = BuildChildConstraint(ConstraintXml.Comparer);
            var ctr             = new RowCountConstraint(childConstraint);

            return(ctr);
        }
コード例 #2
0
        public void Matches_SqlCommand_CallToResultSetBuilderOnce()
        {
            var resultSet = new ResultSet();

            resultSet.Load("a;b;c");
            var cmd = new SqlCommand();

            var rsbMock = new Mock <ResultSetBuilder>();

            rsbMock.Setup(engine => engine.Build(It.IsAny <object>()))
            .Returns(resultSet);
            var rsb = rsbMock.Object;

            var child = new NUnitCtr.GreaterThanConstraint(0);

            var rowCount = new RowCountConstraint(child)
            {
                ResultSetBuilder = rsb
            };

            rowCount.ResultSetBuilder = rsb;

            //Method under test
            rowCount.Matches(cmd);

            //Test conclusion
            rsbMock.Verify(engine => engine.Build(It.IsAny <object>()), Times.Once());
        }
コード例 #3
0
        protected NBiConstraint InstantiateConstraint()
        {
            RowCountConstraint ctr;
            var childConstraint = BuildChildConstraint(ConstraintXml.Comparer);

            IResultSetFilter filter = null;

            if (ConstraintXml.Filter != null)
            {
                var filterXml   = ConstraintXml.Filter;
                var expressions = new List <IColumnExpression>();
                if (filterXml.Expression != null)
                {
                    expressions.Add(filterXml.Expression);
                }

                var value = EvaluatePotentialVariable(ConstraintXml.Comparer.Value.Replace(" ", ""));

                var factory = new ResultSetFilterFactory(Variables);
                if (filterXml.Predication != null)
                {
                    filter = factory.Instantiate
                             (
                        filterXml.Aliases
                        , expressions
                        , filterXml.Predication
                             );
                }
                else if (filterXml.Combination != null)
                {
                    filter = factory.Instantiate
                             (
                        filterXml.Aliases
                        , expressions
                        , filterXml.Combination.Operator
                        , filterXml.Combination.Predicates
                             );
                }
                if ((value is string& (value as string).EndsWith("%")))
                {
                    ctr = new RowCountFilterPercentageConstraint(childConstraint, filter);
                }
                else
                {
                    ctr = new RowCountFilterConstraint(childConstraint, filter);
                }
            }
            else
            {
                ctr = new RowCountConstraint(childConstraint);
            }

            return(ctr);
        }
コード例 #4
0
ファイル: RowCountConstraintTest.cs プロジェクト: ywscr/NBi
        public void Matches_SqlCommand_CallToResultSetBuilderOnce()
        {
            var resultSet = new ResultSet();

            resultSet.Load("a;b;c");

            var serviceMock = new Mock <IResultSetService>();

            serviceMock.Setup(s => s.Execute())
            .Returns(resultSet);
            var service = serviceMock.Object;

            var differed = new DifferedConstraint(typeof(GreaterThanConstraint), new LiteralScalarResolver <decimal>(new LiteralScalarResolverArgs(0)));

            var rowCount = new RowCountConstraint(differed);

            //Method under test
            rowCount.Matches(service);

            //Test conclusion
            serviceMock.Verify(s => s.Execute(), Times.Once());
        }
コード例 #5
0
        protected NBiConstraint InstantiateConstraint()
        {
            RowCountConstraint ctr;
            var childConstraint = BuildChildConstraint(ConstraintXml.Comparer);

            IResultSetFilter filter = null;

            if (ConstraintXml.Filter != null)
            {
                var filterXml   = ConstraintXml.Filter;
                var expressions = new List <IColumnExpression>();
                if (filterXml.Expression != null)
                {
                    expressions.Add(filterXml.Expression);
                }

                var factory = new PredicateFilterFactory();
                filter = factory.Instantiate
                         (
                    filterXml.Aliases
                    , expressions
                    , filterXml.Predicate
                         );
                if (ConstraintXml.Comparer.Value.Replace(" ", "").EndsWith("%"))
                {
                    ctr = new RowCountFilterPercentageConstraint(childConstraint, filter);
                }
                else
                {
                    ctr = new RowCountFilterConstraint(childConstraint, filter);
                }
            }
            else
            {
                ctr = new RowCountConstraint(childConstraint);
            }

            return(ctr);
        }
コード例 #6
0
ファイル: ResultSetRowCountBuilder.cs プロジェクト: ywscr/NBi
        protected NBiConstraint InstantiateConstraint()
        {
            RowCountConstraint ctr;
            var comparer        = ConstraintXml.Comparer as ScalarReferencePredicateXml;
            var childConstraint = BuildChildConstraint(comparer);

            IResultSetFilter filter = null;

            if (ConstraintXml.Filter != null)
            {
                var filterXml   = ConstraintXml.Filter;
                var expressions = new List <IColumnExpression>();
                if (filterXml.Expression != null)
                {
                    expressions.Add(filterXml.Expression);
                }

                var value = EvaluatePotentialVariable(comparer.Reference.ToString().Replace(" ", ""));

                var context = new Context(Variables, filterXml.Aliases, expressions);
                var factory = new ResultSetFilterFactory(ServiceLocator);
                if (filterXml.Predication != null)
                {
                    var helper = new PredicateArgsBuilder(ServiceLocator, context);
                    var args   = helper.Execute(filterXml.Predication.ColumnType, filterXml.Predication.Predicate);

                    filter = factory.Instantiate
                             (
                        new PredicationArgs(filterXml.Predication.Operand, args)
                        , context
                             );
                }

                else if (filterXml.Combination != null)
                {
                    var helper          = new PredicateArgsBuilder(ServiceLocator, context);
                    var predicationArgs = new List <PredicationArgs>();
                    foreach (var predication in filterXml.Combination.Predications)
                    {
                        var args = helper.Execute(predication.ColumnType, predication.Predicate);
                        predicationArgs.Add(new PredicationArgs(predication.Operand, args));
                    }

                    filter = factory.Instantiate
                             (
                        filterXml.Combination.Operator
                        , predicationArgs
                        , context
                             );
                }
                if ((value is string& (value as string).EndsWith("%")))
                {
                    ctr = new RowCountFilterPercentageConstraint(childConstraint, filter);
                }
                else
                {
                    ctr = new RowCountFilterConstraint(childConstraint, filter);
                }
            }
            else
            {
                ctr = new RowCountConstraint(childConstraint);
            }

            return(ctr);
        }