public void StageIsInvalidatedWhenCurrentlySelectedInputChanges()
        {
            var select = AssignablePipelineStage.Create("Select", 0);
            var input  = AssignablePipelineStage.Create("Input", 0);
            var inputs = CreateInputs(input);

            var sut  = new MultiplexingPipelineStage <int, int>("Name", select, inputs);
            var test = sut.AttachTestStage();

            input.SetValue(1);
            test.AssertInvalidations(1);
        }
        public void StageIsInvalidatedWhenSelectSignalChanges()
        {
            var select = AssignablePipelineStage.Create("Select", 0);
            var inputs = CreateInputs(2.AsPipelineConstant(), 4.AsPipelineConstant());

            var sut  = new MultiplexingPipelineStage <int, int>("Name", select, inputs);
            var test = sut.AttachTestStage();

            select.SetValue(1);
            select.SetValue(0);

            test.AssertInvalidations(2);
        }
        public void SettingANewInputForAnUnselectedInputCausesNoInvalidation()
        {
            var select    = AssignablePipelineStage.Create("Select", 1);
            var input0    = AssignablePipelineStage.Create("Input 0", 0);
            var input1    = AssignablePipelineStage.Create("Input 1", 0);
            var newInput0 = AssignablePipelineStage.Create("Input 0 (new)", 100);
            var inputs    = CreateInputs(input0, input1);

            var sut  = new MultiplexingPipelineStage <int, int>("Name", select, inputs);
            var test = sut.AttachTestStage();

            sut.SetInput(0, newInput0);

            test.AssertInvalidations(0);
        }
        public void SettingANewInputForTheCurrentlySelectedInputCausesInvalidationAndGetsTheNewValue()
        {
            var select    = AssignablePipelineStage.Create("Select", 0);
            var input0    = AssignablePipelineStage.Create("Input 0", 0);
            var input1    = AssignablePipelineStage.Create("Input 1", 0);
            var newInput0 = AssignablePipelineStage.Create("Input 0 (new)", 100);
            var inputs    = CreateInputs(input0, input1);

            var sut  = new MultiplexingPipelineStage <int, int>("Name", select, inputs);
            var test = sut.AttachTestStage();

            sut.SetInput(0, newInput0);

            test.AssertInvalidations(1);
            PipelineAssert.Value(sut, 100);
        }