Пример #1
0
        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");
        }
Пример #2
0
        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");
        }
Пример #3
0
        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");
        }
Пример #4
0
        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");
        }
Пример #5
0
        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");
        }