diff --git a/sample/ConsoleApp/Pipelines/CreateUserPipeline.cs b/sample/ConsoleApp/Pipelines/CreateUserPipeline.cs index 0ea80e3..c373c24 100644 --- a/sample/ConsoleApp/Pipelines/CreateUserPipeline.cs +++ b/sample/ConsoleApp/Pipelines/CreateUserPipeline.cs @@ -41,7 +41,9 @@ private static Maybe LookupUser(Username username) private static Result CreateUser(User user) { +#pragma warning disable CS0162 // Unreachable code detected if (false) return Result.Failure("Error creating user"); +#pragma warning restore CS0162 // Unreachable code detected return new(user); } private static void NotifyCreation(User user) diff --git a/src/Monads/Result/Result.cs b/src/Monads/Result/Result.cs index 3c687e7..040bff2 100644 --- a/src/Monads/Result/Result.cs +++ b/src/Monads/Result/Result.cs @@ -150,8 +150,15 @@ public static async Task> Execute(Func> func /// public readonly struct Result : IResult, IEquatable>, IEnumerable { - internal readonly TValue? Value; - internal readonly Error? Error; + /// + /// The value of the if the is true. + /// + public TValue? Value { get; } + + /// + /// The error of the if the is true. + /// + public Error? Error { get; } /// /// Initializes a successful instance of the with the given . diff --git a/test/Monads.UnitTests/ResultTests/ResultValueTests.cs b/test/Monads.UnitTests/ResultTests/ResultValueTests.cs new file mode 100644 index 0000000..5e98aa8 --- /dev/null +++ b/test/Monads.UnitTests/ResultTests/ResultValueTests.cs @@ -0,0 +1,31 @@ +namespace Bogoware.Monads.UnitTests.ResultTests; + +public class ResultValueTests +{ + [Fact] + public void Success_returns_itsValue_andNullError() + { + var sut = Result.Success(new Value(666)); + + sut.Value.Should().NotBeNull(); + sut.Error.Should().BeNull(); + } + + [Fact] + public void Failure_returns_nullValue_andItsError() + { + var sut = Result.Failure("Error"); + + sut.Value.Should().BeNull(); + sut.Error.Should().NotBeNull(); + } + + [Fact] + public void Failure_returns_defaultValue_andItsError() + { + var sut = Result.Failure("Error"); + + sut.Value.Should().Be(default(Guid)); + sut.Error.Should().NotBeNull(); + } +} \ No newline at end of file