Example #1
0
        public void PropertyAspectTest()
        {
            MathIdentifier propertyId = new MathIdentifier("T0_PA", "FundamentTest");
            NodeProperty   property   = NodeProperty.Register(propertyId, typeof(string), typeof(FundamentTest));

            NodeObject n = new NodeObject();

            _counter = 0;
            n.AddHandler(property.PropertyChangedEvent, new EventHandler <NodePropertyChangedEventArgs>(OnPropertyChanged));

            Assert.AreEqual(0, _counter, "X1");
            Assert.IsFalse(n.IsPropertySet(property, false), "A01");
            Assert.IsFalse(n.IsPropertySet(property, true), "A02");
            Assert.IsFalse(n.IsPropertyDirty(property), "A03");
            Assert.AreEqual("nothing", n.GetProperty(property, "nothing", false), "A04");
            Assert.AreEqual("nothing", n.GetProperty(property, "nothing", true), "A05");

            n.SetProperty(property, "myvalue");
            Assert.AreEqual(1, _counter, "X2");
            Assert.AreEqual(null, _lastPropertyChangedEventArgs.OldValue, "X2a");
            Assert.AreEqual("myvalue", _lastPropertyChangedEventArgs.NewValue, "X2b");
            Assert.IsTrue(n.IsPropertySet(property, false), "B01");
            Assert.IsTrue(n.IsPropertySet(property, true), "B02");
            Assert.IsFalse(n.IsPropertyDirty(property), "B03");
            Assert.AreEqual("myvalue", n.GetProperty(property, "nothing", false), "B04");
            Assert.AreEqual("myvalue", n.GetProperty(property, "nothing", true), "B05");

            n.DirtyPropertyIfSet(property);
            Assert.AreEqual(1, _counter, "X3");
            Assert.IsFalse(n.IsPropertySet(property, false), "C01");
            Assert.IsTrue(n.IsPropertySet(property, true), "C02");
            Assert.IsTrue(n.IsPropertyDirty(property), "C03");
            Assert.AreEqual("nothing", n.GetProperty(property, "nothing", false), "C04");
            Assert.AreEqual("myvalue", n.GetProperty(property, "nothing", true), "C05");

            n.SetProperty(property, "newvalue");
            Assert.AreEqual(2, _counter, "X4");
            Assert.AreEqual("myvalue", _lastPropertyChangedEventArgs.OldValue, "X4a");
            Assert.AreEqual("newvalue", _lastPropertyChangedEventArgs.NewValue, "X4b");
            Assert.IsTrue(n.IsPropertySet(property, false), "D01");
            Assert.IsTrue(n.IsPropertySet(property, true), "D02");
            Assert.IsFalse(n.IsPropertyDirty(property), "D03");
            Assert.AreEqual("newvalue", n.GetProperty(property, "nothing", false), "D04");
            Assert.AreEqual("newvalue", n.GetProperty(property, "nothing", true), "D05");

            n.ClearProperty(property);
            Assert.AreEqual(3, _counter, "X5");
            Assert.AreEqual("newvalue", _lastPropertyChangedEventArgs.OldValue, "X5a");
            Assert.AreEqual(null, _lastPropertyChangedEventArgs.NewValue, "X5b");
            Assert.IsFalse(n.IsPropertySet(property, false), "E01");
            Assert.IsFalse(n.IsPropertySet(property, true), "E02");
            Assert.IsFalse(n.IsPropertyDirty(property), "E03");
            Assert.AreEqual("nothing", n.GetProperty(property, "nothing", false), "E04");
            Assert.AreEqual("nothing", n.GetProperty(property, "nothing", true), "E05");
        }
Example #2
0
        public void PropertyTriggerTest()
        {
            MathIdentifier propertyId = new MathIdentifier("T2_PT", "FundamentTest");

            NodeEvent clearEvent      = NodeEvent.Register(propertyId.DerivePostfix("ClearTrigger"), typeof(EventHandler), typeof(FundamentTest));
            NodeEvent clear2Event     = NodeEvent.Register(propertyId.DerivePostfix("Clear2Trigger"), typeof(EventHandler), typeof(FundamentTest));
            NodeEvent clear3Event     = NodeEvent.Register(propertyId.DerivePostfix("Clear3Trigger"), typeof(EventHandler), typeof(FundamentTest));
            NodeEvent reevaluateEvent = NodeEvent.Register(propertyId.DerivePostfix("ReevaluateTrigger"), typeof(EventHandler), typeof(FundamentTest));

            NodeProperty property = NodeProperty.Register(propertyId, typeof(string), typeof(FundamentTest),
                                                          new NodeEventTrigger(EventTriggerAction.Clear, clearEvent, clear2Event),
                                                          new NodeEventTrigger(EventTriggerAction.Clear, clear3Event),
                                                          new NodeEventTrigger(EventTriggerAction.Reevaluate, reevaluateEvent));

            NodeObject n = new NodeObject();

            Assert.IsFalse(n.IsPropertySet(property), "A01");

            n.SetProperty(property, "test");
            Assert.IsTrue(n.IsPropertySet(property), "B01");

            n.RaiseEvent(clearEvent, EventArgs.Empty);
            Assert.IsFalse(n.IsPropertySet(property), "C01");

            n.SetProperty(property, "test2");
            Assert.IsTrue(n.IsPropertySet(property), "D01");
            Assert.AreEqual("test2", n.GetProperty(property), "D02");

            n.RaiseEvent(reevaluateEvent, EventArgs.Empty);
            Assert.IsTrue(n.IsPropertySet(property), "E01");
            Assert.AreEqual("test2", n.GetProperty(property), "E02");

            n.RaiseEvent(clear2Event, EventArgs.Empty);
            Assert.IsFalse(n.IsPropertySet(property), "F01");

            n.SetProperty(property, "test3");
            Assert.IsTrue(n.IsPropertySet(property), "G01");

            n.RaiseEvent(clear3Event, EventArgs.Empty);
            Assert.IsFalse(n.IsPropertySet(property), "H01");
        }