public void Combine() { var error1 = MyResult.CreateError(Failure.ItIsRaining); var error1s = MyResult.CreateError(Failure.ItIsRaining); Func <string, MyResult> fails = i => { throw new InvalidOperationException(); }; Assert.AreEqual(error1s, error1.Combine(fails)); Assert.AreEqual(error1s, ResultSuccess.Combine(i => error1s)); Assert.AreEqual(MyResult.CreateSuccess("Hi!"), ResultSuccess.Combine(i => MyResult.CreateSuccess(i + "!"))); }