예제 #1
0
        private void ShouldInvokeOnFailureFunc()
        {
            Result <int> OnFailure(Error e)
            {
                return(new Failure <int>(new Error(e.Title, $"Ka-{e.Detail}")));
            }

            var failure = new Failure <int>(new Error("Error", "Boom!"));

            Result <int> result = failure.Catch(e => OnFailure(e));

            result.Should().BeEquivalentTo(new Failure <int>(new Error("Error", "Ka-Boom!")));
        }
예제 #2
0
        private async Task ShouldInvokeOnFailureFuncAsynchronously()
        {
            async Task <Result <int> > OnFailure(Error e)
            {
                await Task.Yield();

                return(new Failure <int>(new Error(e.Title, $"Ka-{e.Detail}")));
            }

            var failure = new Failure <int>(new Error("Error", "Boom!"));

            Result <int> result = await failure.Catch(async e => await OnFailure(e));

            result.Should().BeEquivalentTo(new Failure <int>(new Error("Error", "Ka-Boom!")));
        }
예제 #3
0
        public void FailureMapTest_ShouldFireCatch()
        {
            // Arrange
            const string message = "I am a value";
            const string value2  = "I am another value";
            var          failure = new Failure <string>(message);

            // Act
            var result = failure.Catch(m => {
                // Assert
                Assert.Same(message, m.Message);
                return(value2);
            });

            // Assert
            Assert.NotSame(message, result);
            Assert.Same(value2, result);
        }