public void Basic() { var keys = new[] { "Leaf0", "Leaf1", "Leaf2", "NonLeaf0", "NonLeaf1", "Root", }; m_RedDotModule.AddLeaves(new[] { "Leaf0", "Leaf1", "Leaf2" }); m_RedDotModule.AddNonLeaf("NonLeaf0", NonLeafOperation.Sum, new[] { "Leaf0", "Leaf1" }); m_RedDotModule.AddNonLeaf("NonLeaf1", NonLeafOperation.Sum, new[] { "Leaf1", "Leaf2" }); m_RedDotModule.AddNonLeaf("Root", NonLeafOperation.Or, new[] { "NonLeaf0", "NonLeaf1" }); m_RedDotModule.SetUp(); Assert.Multiple(() => { Assert.AreEqual(0, m_RedDotModule.GetValue("Leaf0")); Assert.AreEqual(0, m_RedDotModule.GetValue("Leaf1")); Assert.AreEqual(0, m_RedDotModule.GetValue("Leaf2")); Assert.AreEqual(0, m_RedDotModule.GetValue("NonLeaf0")); Assert.AreEqual(0, m_RedDotModule.GetValue("NonLeaf1")); Assert.AreEqual(0, m_RedDotModule.GetValue("Root")); }); var valuesGotInOnChange = new Dictionary <string, int>(); foreach (var key in keys) { valuesGotInOnChange[key] = 0; } var observer = new RedDotObserver((key, value) => valuesGotInOnChange[key] = value); foreach (var key in keys) { m_RedDotModule.AddObserver(key, observer); } m_RedDotModule.SetLeafValue("Leaf0", 1); m_RedDotModule.SetLeafValue("Leaf1", 2); Assert.Multiple(() => { Assert.AreEqual(0, m_RedDotModule.GetValue("NonLeaf0")); Assert.AreEqual(0, m_RedDotModule.GetValue("NonLeaf1")); Assert.AreEqual(0, m_RedDotModule.GetValue("Root")); }); m_RedDotModule.Update(default(TimeStruct)); Assert.Multiple(() => { Assert.AreEqual(3, m_RedDotModule.GetValue("NonLeaf0")); Assert.AreEqual(3, valuesGotInOnChange["NonLeaf0"]); Assert.AreEqual(2, m_RedDotModule.GetValue("NonLeaf1")); Assert.AreEqual(2, valuesGotInOnChange["NonLeaf1"]); Assert.AreEqual(1, m_RedDotModule.GetValue("Root")); Assert.AreEqual(1, valuesGotInOnChange["Root"]); }); m_RedDotModule.RemoveObserver("Leaf0", observer); m_RedDotModule.SetLeafValue("Leaf0", 4); m_RedDotModule.Update(default(TimeStruct)); Assert.AreEqual(1, valuesGotInOnChange["Leaf0"]); }
public void TestBasic() { var keys = new[] { "Leaf0", "Leaf1", "Leaf2", "NonLeaf0", "NonLeaf1", "Root", }; m_RedDotService.AddLeaves(new[] { "Leaf0", "Leaf1", "Leaf2" }); m_RedDotService.AddNonLeaf("NonLeaf0", NonLeafOperation.Sum, new[] { "Leaf0", "Leaf1" }); m_RedDotService.AddNonLeaf("NonLeaf1", NonLeafOperation.Sum, new[] { "Leaf1", "Leaf2" }); m_RedDotService.AddNonLeaf("Root", NonLeafOperation.Or, new[] { "NonLeaf0", "NonLeaf1" }); m_RedDotService.SetUp(); Assert.Multiple(() => { Assert.AreEqual(0, m_RedDotService.GetValue("Leaf0")); Assert.AreEqual(0, m_RedDotService.GetValue("Leaf1")); Assert.AreEqual(0, m_RedDotService.GetValue("Leaf2")); Assert.AreEqual(0, m_RedDotService.GetValue("NonLeaf0")); Assert.AreEqual(0, m_RedDotService.GetValue("NonLeaf1")); Assert.AreEqual(0, m_RedDotService.GetValue("Root")); }); var valuesGotInOnChange = new Dictionary <string, int>(); foreach (var key in keys) { valuesGotInOnChange[key] = 0; } var observer = new RedDotObserver((key, value) => valuesGotInOnChange[key] = value); foreach (var key in keys) { m_RedDotService.AddObserver(key, observer); } m_RedDotService.SetLeafValue("Leaf0", 1); m_RedDotService.SetLeafValue("Leaf1", 2); Assert.Multiple(() => { Assert.AreEqual(0, m_RedDotService.GetValue("NonLeaf0")); Assert.AreEqual(0, m_RedDotService.GetValue("NonLeaf1")); Assert.AreEqual(0, m_RedDotService.GetValue("Root")); }); ((MockTickService)m_TickService).ManualUpdate(default);
public void RemoveObserver() { const string LeafNodeName = "Leaf"; m_RedDotModule.AddLeaf(LeafNodeName); m_RedDotModule.SetUp(); int getValueInOnChange = 0; var observer = new RedDotObserver((key, value) => { getValueInOnChange = value; }); m_RedDotModule.AddObserver(LeafNodeName, observer); m_RedDotModule.SetLeafValue(LeafNodeName, 100); m_RedDotModule.Update(default(TimeStruct)); Assert.AreEqual(100, getValueInOnChange); m_RedDotModule.RemoveObserver(LeafNodeName, observer); m_RedDotModule.SetLeafValue(LeafNodeName, 90); m_RedDotModule.Update(default(TimeStruct)); Assert.AreEqual(100, getValueInOnChange); }