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 ExecutedPatchSetOutlet() { NumberPatch patch = new NumberPatch(99); Engine engine = new Engine(); engine.Add(patch); Assert.IsFalse(patch.res.HasChanged, "#1"); engine.StepFrame(); Assert.IsTrue(patch.res.HasChanged, "#2"); Assert.AreEqual(99, patch.res.Value, "#3"); }
public void PassiveInletDontCauseExecution() { NumberPatch number = new NumberPatch(99); InletModes patch = new InletModes(); Engine engine = new Engine(); engine.Add(patch); engine.Add(number); engine.Connect(number, "value", patch, "passive"); Assert.IsFalse(patch.executed, "#1"); engine.StepFrame(); Assert.IsFalse(patch.executed, "#2"); }
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"); }
public void ActiveOnChangeInletCauseExecutionOnlyIfValueChanges() { NumberPatch number = new NumberPatch(99); InletModes patch = new InletModes(); Engine engine = new Engine(); engine.Add(patch); engine.Add(number); engine.Connect(number, "value", patch, "onchange"); Assert.IsFalse(patch.executed, "#1"); engine.StepFrame(); Assert.IsTrue(patch.executed, "#2"); patch.executed = false; engine.StepFrame(); Assert.IsFalse(patch.executed, "#3"); number.value = 11; engine.StepFrame(); Assert.IsTrue(patch.executed, "#4"); }