namespace Geekeey.Extensions.Result.Tests; [TestFixture] internal sealed class ResultUnboxTests { [Test] public void TryGetValue_1_ReturnsTrueAndSetsValue_ForSuccess() { 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 TryGetValue_1_ReturnsFalse_ForFailure() { 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 TryGetValue_2_ReturnsTrueAndSetsValue_ForSuccess() { 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 TryGetValue_2_ReturnsFalseAndSetsError_ForFailure() { 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 TryGetError_1_ReturnsTrueAndSetsError_ForFailure() { 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 TryGetError_1_ReturnsFalse_ForSuccess() { 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 TryGetError_2_ReturnsTrueAndSetsError_ForFailure() { 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 TryGetError_2_ReturnsFalseAndSetsValue_ForSuccess() { 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)); }); } }