public void OverDivdesLeftAndRightAfterBothUpdated() { var left = new Identity("left"); var right = new Identity("right"); var composite = left.Over(right); left.Update(DateTime.Today, 1m); right.Update(DateTime.Today, 1m); Assert.AreEqual(1m, composite.Current.Value); left.Update(DateTime.Today, 2m); Assert.AreEqual(1m, composite.Current.Value); left.Update(DateTime.Today, 3m); Assert.AreEqual(1m, composite.Current.Value); right.Update(DateTime.Today, 4m); Assert.AreEqual(3m / 4m, composite.Current.Value); }
public void OverHandlesDivideByZero() { var left = new Identity("left"); var right = new Identity("right"); var composite = left.Over(right); var updatedEventFired = false; composite.Updated += delegate { updatedEventFired = true; }; left.Update(DateTime.Today, 1m); Assert.IsFalse(updatedEventFired); right.Update(DateTime.Today, 0m); Assert.IsFalse(updatedEventFired); // submitting another update to right won't cause an update without corresponding update to left right.Update(DateTime.Today, 1m); Assert.IsFalse(updatedEventFired); left.Update(DateTime.Today, 1m); Assert.IsTrue(updatedEventFired); }