public void Success_Ok() { var called = 0; Func <Result <int, string> > factory = () => { called++; return(new Success <int, string>(5)); }; var result = LazyResult.Create(factory).Bind(i => (i + 5).ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(called, 0); Assert.That(result.Unwrap(), Is.EqualTo("10")); Assert.AreEqual(called, 1); }
public void Failure_Ok() { var called = 0; Func <Result <int, string> > factory = () => { called++; return(new Failure <int, string>("Failure")); }; var failure = LazyResult.Create(factory); var failureResult = failure.BindToResult(this.testFunc); Assert.AreEqual(called, 0); Assert.That(failureResult.UnwrapError(), Is.EqualTo("Failure")); Assert.AreEqual(called, 1); }
public void TwoCalls_Failure_Ok() { var called = 0; Func <Result <string, int> > factory = () => { called++; return(new Failure <string, int>(5)); }; var result = LazyResult.Create(factory) .Bind <object, string>(_ => throw new Exception("Should not hit this!"), i => (i + 5).ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(called, 0); Assert.That(result.UnwrapError(), Is.EqualTo("10")); Assert.AreEqual(called, 1); }
public void Failure_Ok() { var called = 0; var errorMessage = "Error!"; Func <Result <int, string> > factory = () => { called++; return(new Failure <int, string>(errorMessage)); }; var result = LazyResult.Create(factory).Bind(i => (i + 5).ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(called, 0); Assert.That(result.UnwrapError(), Is.EqualTo(errorMessage)); Assert.AreEqual(called, 1); }
public void Success_BindsToFailure_Ok() { var called = 0; Func <Result <int, string> > factory = () => { called++; return(new Success <int, string>(6)); }; var success = LazyResult.Create(factory); var successResult = success.BindToResult(this.testFunc); Assert.AreEqual(called, 0); Assert.That(successResult.UnwrapError(), Is.EqualTo("Oops")); Assert.AreEqual(called, 1); }
public void Result_Ok() { var calls = 0; var factory = new Func <Result <int, object> >(() => { calls += 1; return(new Success <int, object>(calls)); }); var result = LazyResult.Create(factory); Assert.AreEqual(calls, 0); Assert.AreEqual(result.Unwrap(), 1); Assert.AreEqual(calls, 1); Assert.AreEqual(result.Unwrap(), 1); Assert.AreEqual(calls, 1); }
public void IsSuccess_Ok() { Assert.AreEqual(LazyResult.Create(() => new Success <int, object>(4)).IsSuccess, true); Assert.AreEqual(LazyResult.Create(() => new Failure <object, int>(4)).IsSuccess, false); }