public void CombineAMiddlewareAndAFuncShouldReturnAFuncThatCombinesThem() { // Given var calls = new List <string>(); SyncMiddlewareFunc <string, int> func = str => { calls.Add("Func"); return(str.Length); }; SyncMiddleware <string, int> middleware = (str, next) => { calls.Add("Before"); var result = next(str); calls.Add("After"); return(result); }; var context = "Hello world!"; // When var result = middleware.Combine(func)(context); // Then result.Should().Be(context.Length); calls.Should().Equal("Before", "Func", "After"); }
public void ConstantShouldAlwaysReturnTheSameGivenAnyInputAndNext() { Prop .ForAll <int, NonEmptyString, string>((input, result, otherResult) => { // Given var middleware = SyncMiddleware.Constant <int, string>(result.Get); // When var actualResult = middleware(input, _ => otherResult); // Then actualResult.Should().Be(result.Get); }) .QuickCheckThrowOnFailure(); }
public void ConstantFuncWithAResultShouldAlwaysReturnTheSameGivenAnyInput() { Prop .ForAll <int, NonEmptyString>((input, result) => { // Given var middlewareFunc = SyncMiddleware.ConstantFunc <int, string>(result.Get); // When var actualResult = middlewareFunc(input); // Then actualResult.Should().Be(result.Get); }) .QuickCheckThrowOnFailure(); }