public void MayElse() { var n = May <int> .NoValue; var y = new May <int>(1); Func <May <int> > throwsM = () => { throw new ArgumentException(); }; Func <int> throwsT = () => { throw new ArgumentException(); }; // else T Assert.IsTrue(n.Else(2) == 2); Assert.IsTrue(y.Else(2) == 1); // else Func<T> Assert.IsTrue(n.Else(() => 2) == 2); Assert.IsTrue(y.Else(() => 2) == 1); Assert.IsTrue(y.Else(throwsT) == y); TestUtil.AssertThrows <ArgumentException>(() => n.Else(throwsT)); // else May<T> Assert.IsTrue(n.Else(y) == y); Assert.IsTrue(y.Else(n) == y); Assert.IsTrue(n.Else(2.Maybe()) == 2.Maybe()); Assert.IsTrue(y.Else(2.Maybe()) == y); Assert.IsTrue(n.Else(May.NoValue) == May.NoValue); Assert.IsTrue(y.Else(May.NoValue) == y); // else Func<May<T>> Assert.IsTrue(n.Else(() => y) == y); Assert.IsTrue(y.Else(() => n) == y); Assert.IsTrue(n.Else(() => 2.Maybe()) == 2.Maybe()); Assert.IsTrue(y.Else(() => 2.Maybe()) == y); Assert.IsTrue(n.Else(() => new May <int>()) == May.NoValue); Assert.IsTrue(y.Else(() => new May <int>()) == y); Assert.IsTrue(y.Else(throwsM) == y); TestUtil.AssertThrows <ArgumentException>(() => n.Else(throwsM)); // else default Assert.IsTrue(n.ElseDefault() == 0); Assert.IsTrue(y.ElseDefault() == 1); // else action var x = 0; y.ElseDo(() => { x += 1; }); Assert.IsTrue(x == 0); n.ElseDo(() => { x += 1; }); Assert.IsTrue(x == 1); }
public void MayElse() { var n = May<int>.NoValue; var y = new May<int>(1); Func<May<int>> throwsM = () => { throw new ArgumentException(); }; Func<int> throwsT = () => { throw new ArgumentException(); }; // else T Assert.IsTrue(n.Else(2) == 2); Assert.IsTrue(y.Else(2) == 1); // else Func<T> Assert.IsTrue(n.Else(() => 2) == 2); Assert.IsTrue(y.Else(() => 2) == 1); Assert.IsTrue(y.Else(throwsT) == y); TestUtil.AssertThrows<ArgumentException>(() => n.Else(throwsT)); // else May<T> Assert.IsTrue(n.Else(y) == y); Assert.IsTrue(y.Else(n) == y); Assert.IsTrue(n.Else(2.Maybe()) == 2.Maybe()); Assert.IsTrue(y.Else(2.Maybe()) == y); Assert.IsTrue(n.Else(May.NoValue) == May.NoValue); Assert.IsTrue(y.Else(May.NoValue) == y); // else Func<May<T>> Assert.IsTrue(n.Else(() => y) == y); Assert.IsTrue(y.Else(() => n) == y); Assert.IsTrue(n.Else(() => 2.Maybe()) == 2.Maybe()); Assert.IsTrue(y.Else(() => 2.Maybe()) == y); Assert.IsTrue(n.Else(() => new May<int>()) == May.NoValue); Assert.IsTrue(y.Else(() => new May<int>()) == y); Assert.IsTrue(y.Else(throwsM) == y); TestUtil.AssertThrows<ArgumentException>(() => n.Else(throwsM)); // else default Assert.IsTrue(n.ElseDefault() == 0); Assert.IsTrue(y.ElseDefault() == 1); // else action var x = 0; y.ElseDo(() => { x += 1; }); Assert.IsTrue(x == 0); n.ElseDo(() => { x += 1; }); Assert.IsTrue(x == 1); }