Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions tests/UnionResult.Tests/ResultOfTTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,69 @@ public void Failure_ReturnsResultThatIsFailureAndCarriesTheException()
result.AsException().Should().BeSameAs(exception);
}

[Fact]
public void Value_OnSuccess_ReturnsTheBoxedValue()
{
// Act
var result = Result<int>.Success(42);

// Assert
result.Value.Should().Be(42);
}

[Fact]
public void Value_OnFailure_ReturnsTheException()
{
// Arrange
var exception = new InvalidOperationException("boom");

// Act
var result = Result<int>.Failure(exception);

// Assert
result.Value.Should().BeSameAs(exception);
}

[Fact]
public void Value_OnDefault_IsNull()
{
// Act
var result = default(Result<int>);

// Assert
result.Value.Should().BeNull();
}

[Fact]
public void HasValue_OnSuccess_IsTrue()
{
// Act
var result = Result<int>.Success(42);

// Assert
result.HasValue.Should().BeTrue();
}

[Fact]
public void HasValue_OnFailure_IsTrue()
{
// Act
var result = Result<int>.Failure(new InvalidOperationException("boom"));

// Assert
result.HasValue.Should().BeTrue();
}

[Fact]
public void HasValue_OnDefault_IsFalse()
{
// Act
var result = default(Result<int>);

// Assert
result.HasValue.Should().BeFalse();
}

[Fact]
public void Failure_WithNullException_ThrowsArgumentNullException()
{
Expand Down
46 changes: 46 additions & 0 deletions tests/UnionResult.Tests/ResultTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,52 @@ public void Failure_ReturnsResultThatIsFailure()
result.IsFailure.Should().BeTrue();
}

[Fact]
public void Value_OnSuccess_IsNull()
{
// Act
var result = Result.Success();

// Assert
result.Value.Should().BeNull();
}

[Fact]
public void Value_OnFailure_ReturnsTheException()
{
// Arrange
var exception = new InvalidOperationException("boom");

// Act
var result = Result.Failure(exception);

// Assert
result.Value.Should().BeSameAs(exception);
}

[Fact]
public void HasValue_OnSuccess_IsFalse()
{
// Success carries no payload, so HasValue only reflects whether there's an
// exception - it isn't a general "is this a valid result" check.

// Act
var result = Result.Success();

// Assert
result.HasValue.Should().BeFalse();
}

[Fact]
public void HasValue_OnFailure_IsTrue()
{
// Act
var result = Result.Failure(new InvalidOperationException("boom"));

// Assert
result.HasValue.Should().BeTrue();
}

[Fact]
public void AsException_OnFailure_ReturnsTheOriginalExceptionInstance()
{
Expand Down
Loading