Beispiel #1
0
        public void Execute_FirstRowByOrdinal_CorrectEvaluation()
        {
            var rs = new NBi.Core.ResultSet.ResultSet();

            rs.Load(new[] { new object[] { "a", 1 }, new object[] { "b", 2 } });

            var context  = Context.None;
            var args     = new ContextScalarResolverArgs(context, new ColumnOrdinalIdentifier(0));
            var resolver = new ContextScalarResolver <string>(args);

            context.Switch(rs.Table.Rows[0]);
            Assert.That(resolver.Execute(), Is.EqualTo("a"));
        }
Beispiel #2
0
        public void Instantiate_ContextArgs_ContextResolver()
        {
            using (var dt = new DataTable())
            {
                var context = Context.None;
                context.Switch(dt.NewRow());
                var args = new ContextScalarResolverArgs(context, new ColumnOrdinalIdentifier(0));

                var factory  = new ScalarResolverFactory(null);
                var resolver = factory.Instantiate(args);

                Assert.That(resolver, Is.TypeOf <ContextScalarResolver <object> >());
            }
        }
Beispiel #3
0
        public void Execute_TwoColumnsWithContext_ThreeGroups()
        {
            var args     = new ObjectsResultSetResolverArgs(new[] { new object[] { "alpha", "1", "1" }, new object[] { "ALPHA", "1", "1" }, new object[] { "beta", "2", "2" }, new object[] { "ALPHA", "2", "4" } });
            var resolver = new ObjectsResultSetResolver(args);
            var rs       = resolver.Execute();

            var context     = new Context(null);
            var lowerCase   = new SinglePredication(new TextLowerCase(false), new ColumnOrdinalIdentifier(0));
            var contextArgs = new ContextScalarResolverArgs(context, new ColumnOrdinalIdentifier(2));
            var upperCase   = new AndCombinationPredication(new List <IPredication>()
            {
                new SinglePredication(new TextUpperCase(false), new ColumnOrdinalIdentifier(0)),
                new SinglePredication(new TextEqual(false, new ContextScalarResolver <string>(contextArgs)), new ColumnOrdinalIdentifier(1)),
            });

            var grouping = new CaseGrouping(new IPredication[] { lowerCase, upperCase }, context);

            var result = grouping.Execute(rs);

            Assert.That(result, Has.Count.EqualTo(3));
            Assert.That(result.ElementAt(0).Value.Rows, Has.Count.EqualTo(2));
            Assert.That(result.ElementAt(1).Value.Rows, Has.Count.EqualTo(1));
            Assert.That(result.ElementAt(2).Value.Rows, Has.Count.EqualTo(1));
        }