public void Then_WithInferenceParameter_ShouldReturnCorrectValue(
            Mock <IActionBuilder> source,
            IAction <string> action,
            IActionBuilder <IAction <string>, string> expected
            )
        {
            //arrange
            source.Setup(s => s.Then <IAction <string>, string>(action)).Returns(expected);
            //act
            var actual = ActionBuilderExtensions.Then(source.Object, action, default(string));

            //assert
            actual.Should().Be(expected);
        }
        public void Then_WithActionUnit_ShouldReturnCorrectValue(
            Mock <IActionBuilder> source,
            IAction <Unit> action,
            IActionBuilder <IAction <Unit>, Unit> expected
            )
        {
            //arrange
            source.Setup(s => s.Then <IAction <Unit>, Unit>(action)).Returns(expected);
            //act
            var actual = ActionBuilderExtensions.Then(source.Object, action);

            //assert
            actual.Should().Be(expected);
        }
        public void Then_OnActionBuilderWithCurrentAction_WithInferenceParameter_ShouldReturnCorrectValue(
            Mock <IActionBuilderWithCurrentAction <IAction <object>, object> > source,
            IAction <object> currentAction,
            IAction <string> action,
            IActionBuilderWithPreviousResult <IAction <string>, string, IAction <object>, object> expected
            )
        {
            //arrange
            source.Setup(s => s.Then <IAction <string>, string>(It.Is((Func <ActionResult <IAction <object>, object>, IAction <string> > f) => f(new ActionResult <IAction <object>, object>(currentAction, null)) == action)))
            .Returns(expected);
            //act
            var actual = ActionBuilderExtensions.Then(source.Object, _ => action, default(string));

            //assert
            actual.Should().Be(expected);
        }
 public static object Then(
     IActionBuilderWithCurrentAction <IAction <object>, object> source,
     Func <ActionResult <IAction <object>, object>, IAction <int> > nextAction) => ActionBuilderExtensions.Then(source, nextAction, 0);
 public static object Then(IActionBuilder source, IAction <int> nextAction) => ActionBuilderExtensions.Then(source, nextAction, 0);