Esempio n. 1
0
        public void Matches_ResultSetService_CallToExecuteOnce()
        {
            var resultSet = new ResultSet();

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

            var serviceMock = new Mock <IResultSetService>();

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

            var alias = Mock.Of <IColumnAlias>(v => v.Column == 2 && v.Name == "Value");


            var predicate = new Mock <ReferencePredicateArgs>();

            predicate.SetupGet(p => p.ColumnType).Returns(ColumnType.Numeric);
            predicate.SetupGet(p => p.ComparerType).Returns(ComparerType.Equal);
            predicate.SetupGet(p => p.Reference).Returns(new LiteralScalarResolver <decimal>(1));

            var predication = new Mock <PredicationArgs>();

            predication.SetupGet(p => p.Identifier).Returns(new ColumnNameIdentifier("Value"));
            predication.SetupGet(p => p.Predicate).Returns(predicate.Object);

            var factory = new ResultSetFilterFactory(null);
            var filter  = factory.Instantiate
                          (
                predication.Object
                , new Context(null, new List <IColumnAlias>()
            {
                alias
            }, Array.Empty <IColumnExpression>())
                          );

            var singleRowCtr = new SingleRowConstraint(filter);

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

            //Test conclusion
            serviceMock.Verify(s => s.Execute(), Times.Once());
        }
Esempio n. 2
0
        public void Matches_ResultSetService_CallToExecuteOnce()
        {
            var resultSet = new ResultSet();

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

            var serviceMock = new Mock <IResultSetService>();

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

            var alias = Mock.Of <IColumnAlias>(v => v.Column == 2 && v.Name == "Value");

            var predicate = new Mock <IPredicateInfo>();

            predicate.SetupGet(p => p.ColumnType).Returns(ColumnType.Numeric);
            predicate.SetupGet(p => p.ComparerType).Returns(ComparerType.Equal);
            predicate.SetupGet(p => p.Operand).Returns(new ColumnNameIdentifier("Value"));
            predicate.As <IReferencePredicateInfo>().SetupGet(p => p.Reference).Returns((object)1);

            var factory = new ResultSetFilterFactory(null);
            var filter  = factory.Instantiate
                          (
                new List <IColumnAlias>()
            {
                alias
            }
                , new List <IColumnExpression>()
            {
            }
                , predicate.Object
                          );

            var rowCount = new NoRowsConstraint(filter);

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

            //Test conclusion
            serviceMock.Verify(s => s.Execute(), Times.Once());
        }
Esempio n. 3
0
        public void Apply_UnexistingColumnName_CorrectResult()
        {
            var service = new ObjectsResultSetResolver(
                new ObjectsResultSetResolverArgs(
                    new object[]
            {
                new List <object>()
                {
                    "(null)", 10, 100
                },
                new List <object>()
                {
                    "(empty)", 2, 75
                },
                new List <object>()
                {
                    "C", 5, 50
                }
            }));
            var rs = service.Execute();

            rs.Table.Columns[0].ColumnName = "first";
            rs.Table.Columns[1].ColumnName = "second";
            rs.Table.Columns[2].ColumnName = "third";

            var predicate = new Mock <IPredicateInfo>();

            predicate.SetupGet(p => p.ColumnType).Returns(ColumnType.Text);
            predicate.SetupGet(p => p.ComparerType).Returns(ComparerType.NullOrEmpty);
            predicate.SetupGet(p => p.Operand).Returns(new ColumnNameIdentifier("Unexisting"));

            var factory = new ResultSetFilterFactory(null);
            var filter  = factory.Instantiate(new IColumnAlias[0], new IColumnExpression[0], predicate.Object);
            var ex      = Assert.Throws <ArgumentException>(() => filter.Apply(rs));

            Assert.That(ex.Message, Is.StringContaining("first"));
            Assert.That(ex.Message, Is.StringContaining("second"));
            Assert.That(ex.Message, Is.StringContaining("third"));
        }
Esempio n. 4
0
        public void Apply_Variable_CorrectResult()
        {
            var service = new ObjectsResultSetResolver(
                new ObjectsResultSetResolverArgs(
                    new object[]
            {
                new List <object>()
                {
                    "(null)", 10, 100
                },
                new List <object>()
                {
                    "(empty)", 2, 75
                },
                new List <object>()
                {
                    "C", 5, 50
                }
            }));

            var rs = service.Execute();

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

            var predicate = new Mock <IPredicateInfo>();

            predicate.SetupGet(p => p.ColumnType).Returns(ColumnType.Text);
            predicate.SetupGet(p => p.ComparerType).Returns(ComparerType.NullOrEmpty);
            predicate.SetupGet(p => p.Operand).Returns(new ColumnNameIdentifier("a"));

            var factory = new ResultSetFilterFactory(null);
            var filter  = factory.Instantiate(aliases, new IColumnExpression[0], predicate.Object);
            var result  = filter.Apply(rs);

            Assert.That(result.Rows, Has.Count.EqualTo(2));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        public IEnumerable <Alter> InstantiateAlterations(ResultSetSystemXml resultSetXml)
        {
            if (resultSetXml.Alteration == null)
            {
                yield break;
            }

            if (resultSetXml.Alteration.Filters != null)
            {
                var factory = new ResultSetFilterFactory(variables);
                foreach (var filterXml in resultSetXml.Alteration.Filters)
                {
                    if (filterXml.Ranking == null)
                    {
                        var expressions = new List <IColumnExpression>();
                        if (filterXml.Expression != null)
                        {
                            expressions.Add(filterXml.Expression);
                        }

                        if (filterXml.Predication != null)
                        {
                            yield return(factory.Instantiate
                                         (
                                             filterXml.Aliases
                                             , expressions
                                             , filterXml.Predication
                                         ).Apply);
                        }
                        if (filterXml.Combination != null)
                        {
                            yield return(factory.Instantiate
                                         (
                                             filterXml.Aliases
                                             , expressions
                                             , filterXml.Combination.Operator
                                             , filterXml.Combination.Predicates
                                         ).Apply);
                        }
                    }
                    else
                    {
                        yield return(factory.Instantiate(
                                         filterXml.Ranking,
                                         filterXml.Ranking?.GroupBy?.Columns
                                         ).Apply);
                    }
                }
            }

            if (resultSetXml.Alteration.Conversions != null)
            {
                foreach (var conversionXml in resultSetXml.Alteration.Conversions)
                {
                    var factory   = new ConverterFactory();
                    var converter = factory.Instantiate(conversionXml.Converter.From, conversionXml.Converter.To, conversionXml.Converter.DefaultValue, conversionXml.Converter.Culture);
                    var engine    = new ConverterEngine(conversionXml.Column, converter);
                    yield return(engine.Execute);
                }
            }

            if (resultSetXml.Alteration.Transformations != null)
            {
                var identifierFactory = new ColumnIdentifierFactory();

                var provider = new TransformationProvider();
                foreach (var transformationXml in resultSetXml.Alteration.Transformations)
                {
                    provider.Add(transformationXml.Identifier, transformationXml);
                }
                yield return(provider.Transform);
            }
        }