public void Transform_of_Failure_calls_failure_closure() { var t = new Failure<int>(new Exception("fail")); var successCalled = false; var failureCalled = false; Func<int, Try<string>> success = v => { successCalled = true; return new Success<string>(v.ToString()); }; Func<Exception, Try<string>> failure = e => { failureCalled = true; return new Success<string>(e.Message); }; Assert.AreEqual("fail", t.Transform(success, failure).Value); Assert.IsFalse(successCalled); Assert.IsTrue(failureCalled); }