public void MapError_unit_result_returns_success()
        {
            UnitResult <E> result      = UnitResult.Success <E>();
            var            invocations = 0;

            Result actual = result.MapError(error =>
            {
                invocations++;
                return($"{error} {error}");
            });

            actual.IsSuccess.Should().BeTrue();
            invocations.Should().Be(0);
        }
        public async Task MapError_E_unit_result_returns_success()
        {
            UnitResult <E> result      = UnitResult.Success <E>();
            var            invocations = 0;

            UnitResult <E2> actual = await result.MapError(error =>
            {
                invocations++;
                return(Task.FromResult(E2.Value));
            });

            actual.IsSuccess.Should().BeTrue();
            invocations.Should().Be(0);
        }
        public void MapError_unit_result_returns_new_failure()
        {
            UnitResult <E> result      = UnitResult.Failure(E.Value);
            var            invocations = 0;

            Result actual = result.MapError(error =>
            {
                error.Should().Be(E.Value);

                invocations++;
                return("error");
            });

            actual.IsSuccess.Should().BeFalse();
            actual.Error.Should().Be("error");
            invocations.Should().Be(1);
        }
        public async Task MapError_E_unit_result_returns_new_failure()
        {
            UnitResult <E> result      = UnitResult.Failure(E.Value);
            var            invocations = 0;

            UnitResult <E2> actual = await result.MapError(error =>
            {
                error.Should().Be(E.Value);

                invocations++;
                return(Task.FromResult(E2.Value));
            });

            actual.IsSuccess.Should().BeFalse();
            actual.Error.Should().Be(E2.Value);
            invocations.Should().Be(1);
        }