public void TestBatchLoad()
        {
            // Test that we can add expressions in any order
            CalculationEngine engine = new CalculationEngine();
            ExpressionContext context = new ExpressionContext();

            int interest = 2;
            context.Variables.Add("interest", interest);

            BatchLoader loader = engine.CreateBatchLoader();

            loader.Add("c", "a + b", context);
            loader.Add("a", "100 + interest", context);
            loader.Add("b", "a + 1 + a", context);
            // Test an expression with a reference in a string
            loader.Add("d", "\"str \\\" str\" + a + \"b\"", context);

            engine.BatchLoad(loader);

            int result = engine.GetResult<int>("b");
            Assert.AreEqual((100 + interest) + 1 + (100 + interest), result);

            interest = 300;
            context.Variables["interest"] = interest;
            engine.Recalculate("a");

            result = engine.GetResult<int>("b");
            Assert.AreEqual((100 + interest) + 1 + (100 + interest), result);

            result = engine.GetResult<int>("c");
            Assert.AreEqual((100 + interest) + 1 + (100 + interest) + (100 + interest), result);

            Assert.AreEqual("str \" str400b", engine.GetResult<string>("d"));
        }
Beispiel #2
0
        public void Batch_Load_Tests_Are_The_Same_As_VB()
        {
            int interest = 2;

            this.variables.Add("interest", interest);
            var loader = ce.CreateBatchLoader();

            loader.Add("c", "a + b", context);
            loader.Add("a", "100 + interest", context);
            loader.Add("b", "a + 1 + a", context);

            // Test an expression with a reference in a string

            var refString = "\"str \\\" str\" + a + \"b\"";



            loader.Add("d", refString, context);
            ce.BatchLoad(loader);
            var result = ce.GetResult("b");

            Assert.AreEqual((100 + interest) + 1 + (100 + interest), result);

            interest = 300;
            this.variables["interest"] = interest;
            ce.Recalculate("a");
            result = ce.GetResult("b");
            Assert.AreEqual((100 + interest) + 1 + (100 + interest), result);
            result = ce.GetResult("c");
            Assert.AreEqual((100 + interest) + 1 + (100 + interest) + (100 + interest), result);
            Assert.AreEqual("str \" str400b", ce.GetResult("d"));
        }