test: 100% test coverage of Result<TSuccess, TFailure>
This commit is contained in:
parent
1be0893d19
commit
c61590f26f
65
Base.Tests/Structures/ResultTests.cs
Normal file
65
Base.Tests/Structures/ResultTests.cs
Normal file
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using FruityFoundation.Base.Structures;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Base.Tests.Structures;
|
||||
|
||||
public class ResultTests
|
||||
{
|
||||
[Test]
|
||||
public void Result_CreateSuccess_ReturnsSuccess()
|
||||
{
|
||||
// Arrange
|
||||
var value = Result<int, string>.CreateSuccess(25);
|
||||
|
||||
// Act
|
||||
var mergeResult = value.Merge(
|
||||
onSuccess: _ => "onSuccess",
|
||||
onFailure: _ => "onFailure");
|
||||
|
||||
// Assert
|
||||
Assert.That(value, Is.InstanceOf<Result<int, string>>());
|
||||
Assert.That(value.IsSuccess, Is.True);
|
||||
Assert.That(value.IsFailure, Is.False);
|
||||
Assert.That(value.SuccessVal, Is.EqualTo(25));
|
||||
var failureValException = Assert.Throws<InvalidOperationException>(() => _ = value.FailureVal);
|
||||
Assert.That(failureValException.Message, Is.EqualTo("Maybe value is empty"));
|
||||
|
||||
Assert.That(mergeResult, Is.EqualTo("onSuccess"));
|
||||
|
||||
Assert.That(value.TrySuccess(out var successVal), Is.True);
|
||||
Assert.That(successVal, Is.EqualTo(25));
|
||||
|
||||
Assert.That(value.TryFailure(out var failureVal), Is.False);
|
||||
Assert.That(failureVal, Is.Default);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Result_CreateFailure_ReturnsFailure()
|
||||
{
|
||||
// Arrange
|
||||
var value = Result<int, string>.CreateFailure("bananas aren't numbers");
|
||||
|
||||
// Act
|
||||
var mergeResult = value.Merge(
|
||||
onSuccess: _ => "onSuccess",
|
||||
onFailure: _ => "onFailure");
|
||||
|
||||
// Assert
|
||||
Assert.That(value, Is.InstanceOf<Result<int, string>>());
|
||||
Assert.That(value.IsSuccess, Is.False);
|
||||
Assert.That(value.IsFailure, Is.True);
|
||||
Assert.That(value.FailureVal, Is.EqualTo("bananas aren't numbers"));
|
||||
|
||||
var successValException = Assert.Throws<InvalidOperationException>(() => _ = value.SuccessVal);
|
||||
Assert.That(successValException.Message, Is.EqualTo("Maybe value is empty"));
|
||||
|
||||
Assert.That(mergeResult, Is.EqualTo("onFailure"));
|
||||
|
||||
Assert.That(value.TrySuccess(out var successVal), Is.False);
|
||||
Assert.That(successVal, Is.Default);
|
||||
|
||||
Assert.That(value.TryFailure(out var failureVal), Is.True);
|
||||
Assert.That(failureVal, Is.EqualTo("bananas aren't numbers"));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user