Beispiel #1
0
        protected object EvaluateExpression(IColumnExpression expression, DataRow row)
        {
            if (expression.Language == LanguageType.NCalc)
            {
                var exp     = new NCalc.Expression(expression.Value);
                var factory = new ColumnIdentifierFactory();

                exp.EvaluateParameter += delegate(string name, NCalc.ParameterArgs args)
                {
                    args.Result = GetValueFromRow(row, factory.Instantiate(name));
                };

                return(exp.Evaluate());
            }
            else if (expression.Language == LanguageType.Native)
            {
                var parse    = expression.Value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                var variable = new ColumnIdentifierFactory().Instantiate(parse.ElementAt(0));
                var value    = GetValueFromRow(row, variable);

                foreach (var nativeFunction in parse.Skip(1))
                {
                    var factory     = new NativeTransformationFactory();
                    var transformer = factory.Instantiate(nativeFunction);
                    value = transformer.Evaluate(value);
                }

                return(value);
            }
            else
            {
                throw new ArgumentOutOfRangeException($"The language {expression.Language} is not supported during the evaluation of an expression.");
            }
        }
Beispiel #2
0
        public void Instantiate_ExistingNativeTransformation_CorrectlyBuilt(string value)
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate(value);

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
        }
Beispiel #3
0
        public void Instantiate_ExistingWithoutParameterAndWhitespaces_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("\t\tdateTime-to-date\r\n");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <DateTimeToDate>());
        }
Beispiel #4
0
        public void Instantiate_ExistingWithoutParameter_CorrectType()
        {
            var factory = new NativeTransformationFactory();
            var result  = factory.Instantiate("dateTime-to-date");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <DateTimeToDate>());
        }
Beispiel #5
0
        public void Instantiate_ExistingWithParameterAndWhitespaces_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("\r\n\t\t\tutc-to-local(Brussels) \t\r\n");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <UtcToLocal>());
            Assert.That((result as UtcToLocal).TimeZoneLabel.Execute(), Is.EqualTo("Brussels"));
        }
Beispiel #6
0
        public void Instantiate_ExistingWithParameterIncludingSpaces_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("utc-to-local( Romance Standard Time )");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <UtcToLocal>());
            Assert.That((result as UtcToLocal).TimeZoneLabel.Execute(), Is.EqualTo("Romance Standard Time"));
        }
Beispiel #7
0
        public void Instantiate_ExistingWithParameter_CorrectType()
        {
            var factory = new NativeTransformationFactory();
            var result  = factory.Instantiate("utc-to-local(Brussels)");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <UtcToLocal>());
            Assert.That((result as UtcToLocal).TimeZoneLabel, Is.EqualTo("Brussels"));
        }
Beispiel #8
0
        public void Instantiate_ExistingWithParametersAndWhitespaces_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("\r\n\t\t\tnumeric-to-clip(  10,   2000   )\t\t\t\r\n");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <NumericToClip>());
            Assert.That((result as NumericToClip).Min.Execute(), Is.EqualTo(10));
            Assert.That((result as NumericToClip).Max.Execute(), Is.EqualTo(2000));
        }
Beispiel #9
0
        public void Instantiate_ExistingWithParameter2_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("text-to-pad-right(6, *)");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <TextToPadRight>());
            Assert.That((result as TextToPadRight).Length.Execute(), Is.EqualTo(6));
            Assert.That((result as TextToPadRight).Character.Execute(), Is.EqualTo('*'));
        }
Beispiel #10
0
        public void Instantiate_ExistingWithParametersAndSpaces_CorrectType()
        {
            var factory = new NativeTransformationFactory();
            var result  = factory.Instantiate("numeric-to-clip (10,   2000)");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <NumericToClip>());
            Assert.That((result as NumericToClip).Min, Is.EqualTo(10));
            Assert.That((result as NumericToClip).Max, Is.EqualTo(2000));
        }
Beispiel #11
0
        public void Instantiate_ExistingWithParameter_CorrectType()
        {
            var factory = new NativeTransformationFactory(new ServiceLocator(), null);;
            var result  = factory.Instantiate("utc-to-local(Brussels)");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <UtcToLocal>());
            Assert.That((result as UtcToLocal).TimeZoneLabel, Is.AssignableTo <IScalarResolver>());
            Assert.That((result as UtcToLocal).TimeZoneLabel, Is.AssignableTo <IScalarResolver <string> >());
            Assert.That((result as UtcToLocal).TimeZoneLabel, Is.TypeOf <LiteralScalarResolver <string> >());
            Assert.That((result as UtcToLocal).TimeZoneLabel.Execute(), Is.EqualTo("Brussels"));
        }
Beispiel #12
0
        public void Instantiate_ExistingWithParametersAndVariables_CorrectType()
        {
            var variables = new Dictionary <string, ITestVariable>()
            {
                { "avg", new GlobalVariable(new LiteralScalarResolver <decimal>(50)) },
                { "min", new GlobalVariable(new LiteralScalarResolver <decimal>(10)) },
                { "max", new GlobalVariable(new LiteralScalarResolver <decimal>(2000)) },
            };

            var factory = new NativeTransformationFactory(new ServiceLocator(), new Context(variables));
            var result  = factory.Instantiate("numeric-to-clip(@min, @max)");

            Assert.That(result, Is.AssignableTo <INativeTransformation>());
            Assert.That(result, Is.TypeOf <NumericToClip>());
            Assert.That((result as NumericToClip).Min.Execute(), Is.EqualTo(10));
            Assert.That((result as NumericToClip).Max.Execute(), Is.EqualTo(2000));
        }