示例#1
0
        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");
        }
示例#2
0
        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();
        }
示例#3
0
        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();
        }