public void AddPatternArg_ShouldAddToArgs()
        {
            //Arrange
            FakeDelayedFormat      fakeDelayedFormatReg   = new FakeDelayedFormat.Builder().Add().Build();
            FakeDelayedArrayFormat fakeDelayedArrayFormat = new FakeDelayedArrayFormat.Builder().Build();
            FakeValidInputResponseAction <string> fakeValidInputResponseAction = new FakeValidInputResponseAction <string> .Builder().Build();

            FormattedValidInput <string> subject = new FormattedValidInput <string>(fakeDelayedFormatReg, fakeDelayedArrayFormat, fakeValidInputResponseAction);

            //Act
            subject.AddPatternArg("val_here");

            //Assert
            fakeDelayedFormatReg.AssertAddInvokedWith("val_here");
        }
        public void ValidInput_ShouldReturnFormattedValidInput()
        {
            //Arrange

            FakeDelayedFormat      fakeDelayedFormatReg   = new FakeDelayedFormat.Builder().Value("regex").Build();
            FakeDelayedArrayFormat fakeDelayedArrayFormat = new FakeDelayedArrayFormat.Builder().Value(new[] { "sample", "blort" }).Build();
            FakeValidInputResponseAction <string> fakeValidInputResponseAction = new FakeValidInputResponseAction <string> .Builder().Build();

            FormattedValidInput <string> subject = new FormattedValidInput <string>(fakeDelayedFormatReg, fakeDelayedArrayFormat, fakeValidInputResponseAction);

            //Act
            IValidResponse <string> actual = subject.ValidInput();

            //Assert
            fakeDelayedArrayFormat.AssertValueInvoked();
            fakeDelayedFormatReg.AssertValueInvoked();
        }
        public void ShouldRunFirstValidInput()
        {
            //Arrange
            FakeRegexBookEnd fakeRegexBookEnd = new FakeRegexBookEnd.Builder().IsMatch(Bool.True).Build();
            FakeWriter       fakeWriter       = new FakeWriter();
            FakeReader       fakeReader       = new FakeReader("A", "B", "C");
            FakeValidInputResponseAction <string> fakeValidInputResponseAction = new FakeValidInputResponseAction <string> .Builder().Response("A").Build();

            ValidResponse <string> subject = new ValidResponse <string>(fakeRegexBookEnd, new[] { "", "", "" }, fakeValidInputResponseAction, fakeWriter, fakeReader);

            //Act
            string input = subject.Response();

            //Assert
            fakeRegexBookEnd.AssertIsMatchInvokedCountMatches(1);
            fakeValidInputResponseAction.AssertResponseInvokedWith("A");
        }