119 lines
3 KiB
C#
119 lines
3 KiB
C#
|
namespace Geekeey.Common.Results.Tests;
|
||
|
|
||
|
[TestFixture]
|
||
|
internal sealed class PreludeTests
|
||
|
{
|
||
|
[Test]
|
||
|
public void Try_ReturnsSuccess_WithoutThrowing()
|
||
|
{
|
||
|
var result = Try(() => 2);
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.True);
|
||
|
Assert.That(result.Value, Is.EqualTo(2));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void Try_ReturnsFailure_WithThrowing()
|
||
|
{
|
||
|
var result = Try<int>(() => throw new CustomTestException());
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.False);
|
||
|
Assert.That(result.Error, Is.InstanceOf<ExceptionError>());
|
||
|
var instance = result.Error as ExceptionError;
|
||
|
Assert.That(instance?.Exception, Is.InstanceOf<CustomTestException>());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsSuccess_WithoutThrowing_Task()
|
||
|
{
|
||
|
var result = await TryAsync(() => Task.FromResult(2));
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.True);
|
||
|
Assert.That(result.Value, Is.EqualTo(2));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsFailure_WithThrowing_Task()
|
||
|
{
|
||
|
var result = await TryAsync(Task<int> () => throw new CustomTestException());
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.False);
|
||
|
Assert.That(result.Error, Is.InstanceOf<ExceptionError>());
|
||
|
var instance = result.Error as ExceptionError;
|
||
|
Assert.That(instance?.Exception, Is.InstanceOf<CustomTestException>());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsFailure_WithAwaitThrowing_Task()
|
||
|
{
|
||
|
var result = await TryAsync(async Task<int> () =>
|
||
|
{
|
||
|
await Task.CompletedTask;
|
||
|
throw new CustomTestException();
|
||
|
});
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.False);
|
||
|
Assert.That(result.Error, Is.InstanceOf<ExceptionError>());
|
||
|
var instance = result.Error as ExceptionError;
|
||
|
Assert.That(instance?.Exception, Is.InstanceOf<CustomTestException>());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsSuccess_WithoutThrowing_ValueTask()
|
||
|
{
|
||
|
var result = await TryAsync(() => ValueTask.FromResult(2));
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.True);
|
||
|
Assert.That(result.Value, Is.EqualTo(2));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsFailure_WithThrowing_ValueTask()
|
||
|
{
|
||
|
var result = await TryAsync(ValueTask<int> () => throw new CustomTestException());
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.False);
|
||
|
Assert.That(result.Error, Is.InstanceOf<ExceptionError>());
|
||
|
var instance = result.Error as ExceptionError;
|
||
|
Assert.That(instance?.Exception, Is.InstanceOf<CustomTestException>());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public async Task TryAsync_ReturnsFailure_WithAwaitThrowing_ValueTask()
|
||
|
{
|
||
|
var result = await TryAsync(async ValueTask<int> () =>
|
||
|
{
|
||
|
await Task.CompletedTask;
|
||
|
throw new CustomTestException();
|
||
|
});
|
||
|
|
||
|
Assert.Multiple(() =>
|
||
|
{
|
||
|
Assert.That(result.IsSuccess, Is.False);
|
||
|
Assert.That(result.Error, Is.InstanceOf<ExceptionError>());
|
||
|
var instance = result.Error as ExceptionError;
|
||
|
Assert.That(instance?.Exception, Is.InstanceOf<CustomTestException>());
|
||
|
});
|
||
|
}
|
||
|
}
|