Files
Just.Railway/Raliway.Tests/Results/Combine.cs
T
just e8ae93799e
.NET Test / .NET tests (push) Failing after 2m5s
error tests expansion
2026-07-12 18:06:53 +04:00

79 lines
2.4 KiB
C#

namespace Raliway.Tests.Results;
public class Combine
{
[Fact]
public void TwoResultCombination_WhenThereIsAnError()
{
// Given
var result1 = Result.Success(1);
var result2 = Result.Failure(Error.New("some error"));
// When
var result = Result.Combine(result1, result2);
// Then
result.IsFailure.ShouldBeTrue();
result.Error.ShouldBe(result2.Error);
}
[Fact]
public void TwoResultCombination_WhenThereAreTwoErrors()
{
// Given
var result1 = Result.Failure<byte>(Error.New("1"));
var result2 = Result.Failure(Error.New("2"));
// When
var result = Result.Combine(result1, result2);
// Then
result.IsFailure.ShouldBeTrue();
result.Error.ShouldBe(result1.Error + result2.Error);
}
[Fact]
public void TwoResultCombination_WhenThereIsNoError()
{
// Given
var result1 = Result.Success(1);
var result2 = Result.Success(3.14);
// When
var result = Result.Combine(result1, result2);
// Then
result.IsSuccess.ShouldBeTrue();
}
[Fact]
public void ThreeResultCombination_WhenThereIsAnError()
{
// Given
var result1 = Result.Success(1);
var result2 = Result.Success(3.14);
var result3 = Result.Failure(Error.New("some error"));
// When
Result<(int, double)> result = Result.Combine(result1, result2, result3);
// Then
result.IsFailure.ShouldBeTrue();
result.Error.ShouldBe(result3.Error);
}
[Fact]
public void ThreeResultCombination_WhenThereAreTwoErrors()
{
// Given
var result1 = Result.Failure<int?>(Error.New("1"));
var result2 = Result.Success(3.14);
var result3 = Result.Failure(Error.New("3"));
// When
Result<(int?, double)> result = Result.Combine(result1, result2, result3);
// Then
result.IsFailure.ShouldBeTrue();
result.Error.ShouldBe(result1.Error + result3.Error);
}
[Fact]
public void ThreeResultCombination_WhenThereIsNoError()
{
// Given
var result1 = Result.Success(1);
var result2 = Result.Success(3.14);
var result3 = Result.Success();
// When
var result = Result.Combine(result1, result2, result3);
// Then
result.IsSuccess.ShouldBeTrue();
}
}