public void Test_TrueValue() { var trueValue = Bool.True(); var isCalled = false; trueValue.When(() => { isCalled = true; }, () => Abort()); Assert.True(isCalled); var one = trueValue.When(() => 1, () => 0); Assert.Equal(1, one); var t = trueValue.Bind(_ => { Assert.True(_); return(Bool.False()); }); Assert.False(Polluter.Pollute(t)); var t2 = trueValue.Fmap(_ => { Assert.True(_); return(false); }); Assert.False(Polluter.Pollute(t2)); }