public async void SuccessMatchAsyncTest()
        {
            var testValue    = 2;
            var successBound = new Mock <IOperationResult <float> >().Object;
            var errorBound   = new Mock <IOperationResult <float> >().Object;
            var failureBound = new Mock <IOperationResult <float> >().Object;
            Func <int, Task <IOperationResult <float> > >          bindSuccess = _ => Task.FromResult(successBound);
            Func <int?, string, Task <IOperationResult <float> > > bindError   = (_, str) => Task.FromResult(errorBound);
            Func <Exception, Task <IOperationResult <float> > >    bindFailure = _ => Task.FromResult(failureBound);

            var sut = new OperationResult.SuccessResult <int>(testValue);

            var matchResult = await sut.MatchAsync(bindSuccess, bindError, bindFailure);

            Assert.Equal(successBound, matchResult);
        }
        public void SuccessMatchTest()
        {
            var testValue    = 2;
            var successBound = new Mock <IOperationResult <float> >().Object;
            var errorBound   = new Mock <IOperationResult <float> >().Object;
            var failureBound = new Mock <IOperationResult <float> >().Object;
            Func <int, IOperationResult <float> >          bindSuccess = _ => successBound;
            Func <int?, string, IOperationResult <float> > bindError   = (_, str) => errorBound;
            Func <Exception, IOperationResult <float> >    bindFailure = _ => failureBound;

            var sut = new OperationResult.SuccessResult <int>(testValue);

            var matchResult = sut.Match(bindSuccess, bindError, bindFailure);

            Assert.Equal(successBound, matchResult);
        }