Beispiel #1
0
        public void Informational_Methods_Can_Be_Called_With_Non_Existant_Expression()
        {
            //Test that our informational methods can be called with a non-existant expression

            var engine = new CalculationEngine();

            Assert.IsFalse(engine.HasDependents("zz"));
            Assert.IsFalse(engine.HasPrecedents("zz"));
            Assert.AreEqual(0, engine.GetDependents("zz").Length);
            Assert.AreEqual(0, engine.GetPrecedents("zz").Length);
        }
        public void TestInfoMethodsWithMissing()
        {
            // Test that our informational methods can be called with a non-existant expression
            CalculationEngine engine = new CalculationEngine();

            Assert.IsFalse(engine.HasDependents("zz"));
            Assert.IsFalse(engine.HasPrecedents("zz"));
            Assert.AreEqual(0, engine.GetDependents("zz").Length);
            Assert.AreEqual(0, engine.GetPrecedents("zz").Length);
        }
        public void TestDependencyManagement()
        {
            // Test that we are keeping accurate stats on our dependencies

            CalculationEngine engine = new CalculationEngine();
            ExpressionContext context = new ExpressionContext();

            engine.Add("a", "100", context);
            engine.Add("b", "100", context);

            // Nothing should point to a and b
            Assert.IsFalse(engine.HasPrecedents("a"));
            Assert.IsFalse(engine.HasPrecedents("b"));
            Assert.IsFalse(engine.HasDependents("a"));
            Assert.IsFalse(engine.HasDependents("b"));

            engine.Add("c", "a + b", context);
            engine.Add("d", "a + c", context);

            // a and b still have nothing pointing to them
            Assert.IsFalse(engine.HasPrecedents("a"));
            Assert.IsFalse(engine.HasPrecedents("b"));
            // but they have dependents
            Assert.IsTrue(engine.HasDependents("a"));
            Assert.IsTrue(engine.HasDependents("b"));

            // c and d have precedents
            Assert.IsTrue(engine.HasPrecedents("d"));
            Assert.IsTrue(engine.HasPrecedents("c"));
            // and only c should have dependents
            Assert.IsTrue(engine.HasDependents("c"));
            Assert.IsFalse(engine.HasDependents("d"));

            // test our counts
            Assert.AreEqual(2, engine.GetDependents("a").Length);
            Assert.AreEqual(1, engine.GetDependents("b").Length);
            Assert.AreEqual(1, engine.GetDependents("c").Length);
            Assert.AreEqual(0, engine.GetDependents("d").Length);

            Assert.AreEqual(0, engine.GetPrecedents("a").Length);
            Assert.AreEqual(0, engine.GetPrecedents("b").Length);
            Assert.AreEqual(2, engine.GetPrecedents("c").Length);
            Assert.AreEqual(2, engine.GetPrecedents("d").Length);

            engine.Remove("d");

            Assert.IsFalse(engine.HasDependents("c"));
            Assert.IsFalse(engine.HasDependents("d"));
            Assert.IsFalse(engine.HasPrecedents("d"));
            Assert.IsTrue(engine.HasPrecedents("c"));

            Assert.AreEqual(1, engine.GetDependents("a").Length);
            Assert.AreEqual(1, engine.GetDependents("b").Length);
            Assert.AreEqual(0, engine.GetDependents("c").Length);

            engine.Remove("c");

            Assert.IsFalse(engine.HasPrecedents("c"));
            Assert.IsFalse(engine.HasDependents("c"));
            Assert.IsFalse(engine.HasDependents("a"));
            Assert.IsFalse(engine.HasDependents("b"));

            Assert.AreEqual(0, engine.GetDependents("a").Length);
            Assert.AreEqual(0, engine.GetDependents("b").Length);

            engine.Remove("a");
            engine.Remove("b");

            Assert.IsFalse(engine.HasDependents("a"));
            Assert.IsFalse(engine.HasPrecedents("a"));
            Assert.IsFalse(engine.HasDependents("b"));
            Assert.IsFalse(engine.HasPrecedents("b"));

            Assert.AreEqual(0, engine.GetDependents("a").Length);
            Assert.AreEqual(0, engine.GetDependents("b").Length);
            Assert.AreEqual(0, engine.GetPrecedents("a").Length);
            Assert.AreEqual(0, engine.GetPrecedents("b").Length);
        }
Beispiel #4
0
        public void Test_Dependency_Management_Is_Same_As_VB()
        {
            ce.Add("a", "100", context);
            ce.Add("b", "100", context);

            // Nothing should point to a and b
            Assert.IsFalse(ce.HasPrecedents("a"));
            Assert.IsFalse(ce.HasPrecedents("b"));
            Assert.IsFalse(ce.HasDependents("a"));
            Assert.IsFalse(ce.HasDependents("b"));

            ce.Add("c", "a + b", context);
            ce.Add("d", "a + c", context);

            // a and b still have nothing pointing to them
            Assert.IsFalse(ce.HasPrecedents("a"));
            Assert.IsFalse(ce.HasPrecedents("b"));

            // but they have dependents
            Assert.IsTrue(ce.HasDependents("a"));
            Assert.IsTrue(ce.HasDependents("b"));

            // c and d have precedents
            Assert.IsTrue(ce.HasPrecedents("d"));
            Assert.IsTrue(ce.HasPrecedents("c"));

            // and only c should have dependents
            Assert.IsTrue(ce.HasDependents("c"));
            Assert.IsFalse(ce.HasDependents("d"));

            // test our counts
            Assert.AreEqual(2, ce.GetDependents("a").Length);
            Assert.AreEqual(1, ce.GetDependents("b").Length);
            Assert.AreEqual(1, ce.GetDependents("c").Length);
            Assert.AreEqual(0, ce.GetDependents("d").Length);

            Assert.AreEqual(0, ce.GetPrecedents("a").Length);
            Assert.AreEqual(0, ce.GetPrecedents("b").Length);
            Assert.AreEqual(2, ce.GetPrecedents("c").Length);
            Assert.AreEqual(2, ce.GetPrecedents("d").Length);

            ce.Remove("d");

            Assert.IsFalse(ce.HasDependents("c"));
            Assert.IsFalse(ce.HasDependents("d"));
            Assert.IsFalse(ce.HasPrecedents("d"));
            Assert.IsTrue(ce.HasPrecedents("c"));

            Assert.AreEqual(1, ce.GetDependents("a").Length);
            Assert.AreEqual(1, ce.GetDependents("b").Length);
            Assert.AreEqual(0, ce.GetDependents("c").Length);

            ce.Remove("c");

            Assert.IsFalse(ce.HasPrecedents("c"));
            Assert.IsFalse(ce.HasDependents("c"));
            Assert.IsFalse(ce.HasDependents("a"));
            Assert.IsFalse(ce.HasDependents("b"));

            Assert.AreEqual(0, ce.GetDependents("a").Length);
            Assert.AreEqual(0, ce.GetDependents("b").Length);

            ce.Remove("a");
            ce.Remove("b");

            Assert.IsFalse(ce.HasDependents("a"));
            Assert.IsFalse(ce.HasPrecedents("a"));
            Assert.IsFalse(ce.HasDependents("b"));
            Assert.IsFalse(ce.HasPrecedents("b"));

            Assert.AreEqual(0, ce.GetDependents("a").Length);
            Assert.AreEqual(0, ce.GetDependents("b").Length);
            Assert.AreEqual(0, ce.GetPrecedents("a").Length);
            Assert.AreEqual(0, ce.GetPrecedents("b").Length);
        }