public void MultiChain() { var identity = new Identity("identity"); var sma = new SimpleMovingAverage(2); var delay = new Delay(2); // create the SMA of the delay of the identity sma.Of(delay.Of(identity)); identity.Update(DateTime.UtcNow, 1m); Assert.IsTrue(identity.IsReady); Assert.IsFalse(delay.IsReady); Assert.IsFalse(sma.IsReady); identity.Update(DateTime.UtcNow, 2m); Assert.IsTrue(identity.IsReady); Assert.IsFalse(delay.IsReady); Assert.IsFalse(sma.IsReady); identity.Update(DateTime.UtcNow, 3m); Assert.IsTrue(identity.IsReady); Assert.IsTrue(delay.IsReady); Assert.IsFalse(sma.IsReady); identity.Update(DateTime.UtcNow, 4m); Assert.IsTrue(identity.IsReady); Assert.IsTrue(delay.IsReady); Assert.IsTrue(sma.IsReady); Assert.AreEqual(1.5m, sma); }