namespace Geekeey.Extensions.Result.Tests; [TestFixture] internal sealed class ResultUnboxTests { [Test] public void I_can_try_get_value_and_it_returns_true_and_sets_value_for_success_with_1_param() { var result = Success(2); var ok = result.TryGetValue(out var value); Assert.Multiple(() => { Assert.That(ok, Is.True); Assert.That(value, Is.EqualTo(2)); }); } [Test] public void I_can_try_get_value_and_it_returns_false_for_failure_with_1_param() { var result = Failure("error"); var ok = result.TryGetValue(out var value); Assert.Multiple(() => { Assert.That(ok, Is.False); Assert.That(value, Is.EqualTo(default(int))); }); } [Test] public void I_can_try_get_value_and_it_returns_true_and_sets_value_for_success_with_2_param() { var result = Success(2); var ok = result.TryGetValue(out var value, out var error); Assert.Multiple(() => { Assert.That(ok, Is.True); Assert.That(value, Is.EqualTo(2)); Assert.That(error, Is.EqualTo(default(Error))); }); } [Test] public void I_can_try_get_value_and_it_returns_false_and_sets_error_for_failure_with_2_param() { var result = Failure("error"); var ok = result.TryGetValue(out var value, out var error); Assert.Multiple(() => { Assert.That(ok, Is.False); Assert.That(value, Is.EqualTo(default(int))); Assert.That(error?.Message, Is.EqualTo("error")); }); } [Test] public void I_can_try_get_error_and_it_returns_true_and_sets_error_for_failure_with_1_param() { var result = Failure("error"); var ok = result.TryGetError(out var error); Assert.Multiple(() => { Assert.That(ok, Is.True); Assert.That(error?.Message, Is.EqualTo("error")); }); } [Test] public void I_can_try_get_error_and_it_returns_false_for_success_with_1_param() { var result = Success(2); var ok = result.TryGetError(out var error); Assert.Multiple(() => { Assert.That(ok, Is.False); Assert.That(error, Is.EqualTo(default(Error))); }); } [Test] public void I_can_try_get_error_and_it_returns_true_and_sets_error_for_failure_with_2_param() { var r = Failure("error"); var ok = r.TryGetError(out var error, out var value); Assert.Multiple(() => { Assert.That(ok, Is.True); Assert.That(error?.Message, Is.EqualTo("error")); Assert.That(value, Is.EqualTo(default(int))); }); } [Test] public void I_can_try_get_error_and_it_returns_false_and_sets_value_for_success_with_2_param() { var r = Success(2); var ok = r.TryGetError(out var error, out var value); Assert.Multiple(() => { Assert.That(ok, Is.False); Assert.That(error, Is.EqualTo(default(Error))); Assert.That(value, Is.EqualTo(2)); }); } }