Exemple #1
0
        public void Cascading_perf_test()
        {
            var abcd = new Abcd();
            var abcdRules = new AbcdRules();

            var time0 = TimeInMilliseconds(i =>
            {
                abcdRules.SetProperty("A", abcd, abcd,  1);
                Assert.AreEqual(100, abcd.A);
            }, 100);

            Console.WriteLine("Cascade rules {0} ms", time0);

            Assert.Less(time0, 100);
        }
Exemple #2
0
        public void Check_cascading_by_rule_engine()
        {
            var bingo = new Bingo();
            var rules = new BingoRules();

            {
                // setting Message property does not trigger any rule
                var modified = rules.SetProperty("Message", bingo, bingo, "test");
                Assert.AreEqual(1, modified.Count);
                Assert.IsTrue(modified.Contains("Message"));
                Assert.AreEqual("test", bingo.Message);
            }

            {
                var modified = rules.SetProperty("X", bingo, bingo, 3);

                Assert.AreEqual(3, modified.Count);
                Assert.IsTrue(modified.Contains("X"));
                Assert.IsTrue(modified.Contains("Y"));
                Assert.IsTrue(modified.Contains("Message"));

                Assert.AreEqual("BINGO", bingo.Message);

                var x = bingo.X;

                // setting the same value should not trigger any rule
                modified = rules.SetProperty("X", bingo, bingo, x);
                Assert.AreEqual(0, modified.Count);
            }

            {
                var abcd = new Abcd();
                var abcdRules = new AbcdRules();

                var modified = abcdRules.SetProperty("A", abcd, abcd, 1);
                Assert.AreEqual(4, modified.Count);
                Assert.IsTrue(modified.Contains("A"));
                Assert.IsTrue(modified.Contains("B"));
                Assert.IsTrue(modified.Contains("C"));
                Assert.IsTrue(modified.Contains("D"));
                Assert.AreEqual(100, abcd.A);
            }
        }