Esempio n. 1
0
        public void TestTimeZoneOffsetNonDST()
        {
            TimeZoneInfo tzInfo       = TimeZoneInfo.Local;
            var          testDate     = new DateTime(2021, 6, 1);
            var          tzOffsetDays = tzInfo.GetUtcOffset(testDate).TotalDays * -1;
            var          numberValue  = engine.Eval("TimeZoneOffset(Date(2021, 6, 1))") as NumberValue;

            Assert.NotNull(numberValue);
            Assert.Equal(numberValue.Value, tzOffsetDays);
        }
Esempio n. 2
0
        public void BasicEval()
        {
            var engine = new RecalcEngine();

            engine.UpdateVariable("M", 10.0);
            engine.UpdateVariable("M2", -4);
            var result = engine.Eval("M + Abs(M2)");

            Assert.Equal(14.0, ((NumberValue)result).Value);
        }
Esempio n. 3
0
        public void EvalWithGlobals()
        {
            var engine = new RecalcEngine();

            var context = FormulaValue.NewRecord(new
            {
                x = 15
            });
            var result = engine.Eval("With({y:2}, x+y)", context);

            Assert.Equal(17.0, ((NumberValue)result).Value);
        }
Esempio n. 4
0
        public void CustomFunction()
        {
            var engine = new RecalcEngine();

            engine.AddFunction(new TestCustomFunction());

            // Shows up in enuemeration
            var func = engine.GetAllFunctionNames().First(name => name == "TestCustom");

            Assert.NotNull(func);

            // Can be invoked.
            var result = engine.Eval("TestCustom(2,3)");

            Assert.Equal(6.0, result.ToObject());
        }
            public override Task <FormulaValue> RunAsync(string expr)
            {
                var result = _engine.Eval(expr);

                return(Task.FromResult(result));
            }