public void InletIsOnlyChangedIfOutletChanged() { NumberEveryOddTime num = new NumberEveryOddTime(99); HolderPatch hold = new HolderPatch(); Engine engine = new Engine(); engine.Add(num); engine.Add(hold); engine.Connect(num, "value", hold, "inlet"); Assert.IsFalse(hold.input.HasChanged, "#1"); //first execution should not set inlet engine.StepFrame(); Assert.IsFalse(hold.input.HasChanged, "#2"); //second execution should set inlet engine.StepFrame(); Assert.IsTrue(hold.inletChanged, "#3"); Assert.AreEqual(99, hold.input.Value, "#4"); //last execution should not set inlet engine.StepFrame(); Assert.IsFalse(hold.input.HasChanged, "#5"); }
public void OutletConnectedToMultiplePatchesPropagateAllValues() { NumberPatch num = new NumberPatch(99); HolderPatch hold0 = new HolderPatch(); HolderPatch hold1 = new HolderPatch(); Engine engine = new Engine(); engine.Add(num); engine.Add(hold0); engine.Add(hold1); engine.Connect(num, "value", hold0, "inlet"); engine.Connect(num, "value", hold1, "inlet"); Assert.IsFalse(hold0.input.HasChanged, "#1"); Assert.IsFalse(hold0.inletChanged, "#2"); Assert.IsFalse(hold1.input.HasChanged, "#3"); Assert.IsFalse(hold1.inletChanged, "#4"); engine.StepFrame(); Assert.IsTrue(hold0.inletChanged, "#5"); Assert.AreEqual(99, hold0.input.Value, "#6"); Assert.IsTrue(hold1.inletChanged, "#7"); Assert.AreEqual(99, hold1.input.Value, "#8"); }
public void ValuePropagateBetweenConnectedPatches() { NumberPatch num = new NumberPatch(99); HolderPatch hold = new HolderPatch(); Engine engine = new Engine(); engine.Add(num); engine.Add(hold); engine.Connect(num, "value", hold, "inlet"); Assert.IsFalse(hold.input.HasChanged, "#1"); Assert.IsFalse(hold.inletChanged, "#2"); engine.StepFrame(); Assert.IsTrue(hold.inletChanged, "#3"); Assert.AreEqual(99, hold.input.Value, "#4"); }