// 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(error); using var scope = Assert.Multiple(); await Assert.That(result.IsSuccess).IsFalse(); await Assert.That(result.IsFailure).IsTrue(); await Assert.That(result.Error).IsTypeOf(); } [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("error"); await Assert.That(result.Unwrap).Throws(); } [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("error"); await Assert.That(() => (int)result).Throws(); } [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(); } }