public void TestRaiseValueChanged() { bool raised = false; Order order = new Order(); Differing <string> computing = new Differing <string>(new Computing <string>(() => order.Num)); computing.PropertyChanged += (sender, args) => { if (args.PropertyName == "Value") { raised = true; } }; order.Num = "1"; Assert.IsTrue(raised); raised = false; order.Num = "1"; Assert.IsFalse(raised); order.Num = "2"; Assert.IsTrue(raised); }
public void TestRaiseValueChanged2() { bool raised = false; Order order = new Order(); Differing <string> computing = new Differing <string>(new Computing <string>(() => order.Num), EqualityComparer <string> .Default).For(consumer); computing.PropertyChanged += (sender, args) => { if (args.PropertyName == "Value") { raised = true; } }; order.Num = "1"; Assert.IsTrue(raised); raised = false; order.Num = "1"; Assert.IsFalse(raised); order.Num = "2"; Assert.IsTrue(raised); consumer.Dispose(); }
public void TestComputing() { Item item = new Item(0, "0"); OcConsumer consumer = new OcConsumer(); Expression <Func <int> > valueExpression = () => item.Id; Computing <int> computing = new Computing <int>(valueExpression); Assert.AreEqual(computing.GetValueExpression, valueExpression); Differing <int> differing = computing.Differing(); item.Computing = computing; bool activationInProgress = true; bool inActivationInProgress = false; computing.PropertyChanged += (sender, args) => { if (args.PropertyName == "ActivationInProgress" || args.PropertyName == "InactivationInProgress") { return; } Assert.AreEqual(computing.ActivationInProgress, activationInProgress); Assert.AreEqual(computing.InactivationInProgress, inActivationInProgress); }; differing.For(consumer); activationInProgress = false; Assert.IsTrue(computing.Consumers.Contains(consumer)); Assert.IsTrue(((IComputingInternal)differing).Consumers.Contains(consumer)); Assert.IsTrue(computing.UserCodeIsCalledFrom == null); Action <int> computingSetValueRequestHandler = i => { item.Id = i; }; computing.SetValueRequestHandler += computingSetValueRequestHandler; Assert.AreEqual(computing.SetValueRequestHandler, computingSetValueRequestHandler); bool disposing = false; int value = 1; computing.PreValueChanged += (sender, args) => { if (disposing) { return; } Assert.AreEqual(computing.NewValue, value); Assert.AreEqual(computing.NewValueObject, value); Assert.AreEqual(computing.HandledEventSender, item); Assert.AreEqual(computing.HandledEventArgs, item._lastPropertyChangedEventArgs); }; computing.PostValueChanged += (sender, args) => { if (disposing) { return; } Assert.AreEqual(computing.NewValue, value); Assert.AreEqual(computing.NewValueObject, value); Assert.AreEqual(computing.HandledEventSender, item); Assert.AreEqual(computing.HandledEventArgs, item._lastPropertyChangedEventArgs); }; computing.Value = 1; Assert.AreEqual(computing.Value, 1); Assert.AreEqual(computing.ValueObject, 1); value = 2; computing.ValueObject = 2; Assert.AreEqual(computing.Value, 2); Assert.AreEqual(computing.ValueObject, 2); Assert.AreEqual(computing.ValueType, typeof(int)); Assert.IsNotNull(computing.ToString()); computing.DebugTag = "DebugTag"; Assert.AreEqual(computing.DebugTag, "DebugTag"); computing.Tag = "Tag"; Assert.AreEqual(computing.Tag, "Tag"); Assert.IsTrue(computing.IsActive); Assert.IsTrue(computing.IsConsistent); Assert.IsNotNull(computing.ToString()); if (OcConfiguration.SaveInstantiationStackTrace) { Assert.IsNotNull(computing.InstantiationStackTrace); } disposing = true; inActivationInProgress = true; consumer.Dispose(); }