76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
// Copyright (c) The Geekeey Authors
|
|
// SPDX-License-Identifier: EUPL-1.2
|
|
|
|
namespace Geekeey.Request.Result.Tests;
|
|
|
|
internal sealed class ResultConversionTests
|
|
{
|
|
[Test]
|
|
public async Task I_can_implicitly_convert_from_value_and_get_success()
|
|
{
|
|
var result = Prelude.Success(2);
|
|
|
|
using var scope = Assert.Multiple();
|
|
await Assert.That(result.IsSuccess).IsTrue();
|
|
await Assert.That(result.IsFailure).IsFalse();
|
|
await Assert.That(result.Value).IsEqualTo(2);
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_implicitly_convert_from_error_and_get_failure()
|
|
{
|
|
var error = new CustomTestError();
|
|
var result = Prelude.Failure<int>(error);
|
|
|
|
using var scope = Assert.Multiple();
|
|
await Assert.That(result.IsSuccess).IsFalse();
|
|
await Assert.That(result.IsFailure).IsTrue();
|
|
await Assert.That(result.Error).IsTypeOf<CustomTestError>();
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_unwrap_and_get_value_for_success()
|
|
{
|
|
var result = Prelude.Success(2);
|
|
var value = result.Unwrap();
|
|
|
|
await Assert.That(value).IsEqualTo(2);
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_unwrap_and_get_exception_for_failure()
|
|
{
|
|
var result = Prelude.Failure<int>("error");
|
|
|
|
await Assert.That(result.Unwrap).Throws<UnwrapException>();
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_explicitly_convert_and_get_value_for_success()
|
|
{
|
|
var result = Prelude.Success(2);
|
|
var value = (int)result;
|
|
|
|
await Assert.That(value).IsEqualTo(2);
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_explicitly_convert_and_get_exception_for_failure()
|
|
{
|
|
var result = Prelude.Failure<int>("error");
|
|
|
|
await Assert.That(() => (int)result).Throws<UnwrapException>();
|
|
}
|
|
|
|
[Test]
|
|
public async Task I_can_implicitly_convert_from_error_to_non_generic_result()
|
|
{
|
|
var error = new CustomTestError();
|
|
Result result = error;
|
|
|
|
using var scope = Assert.Multiple();
|
|
await Assert.That(result.IsSuccess).IsFalse();
|
|
await Assert.That(result.IsFailure).IsTrue();
|
|
await Assert.That(result.Error).IsTypeOf<CustomTestError>();
|
|
}
|
|
}
|