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); }
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); } }