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"]);
        }
Beispiel #2
0
        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);
        }