public void NumeralTests()
 {
     Assert.AreEqual(0U, SkiCalculus.UnchurchNumeral(SkiCalculus.Zero));
     Assert.AreEqual(1U, SkiCalculus.UnchurchNumeral(SkiCalculus.One));
     Assert.AreEqual(2U, SkiCalculus.UnchurchNumeral(SkiCalculus.Two));
     Assert.AreEqual(3U, SkiCalculus.UnchurchNumeral(SkiCalculus.Three));
     Assert.AreEqual(4U, SkiCalculus.UnchurchNumeral(SkiCalculus.Increase(SkiCalculus.Three)));
 }
        public void BooleanTests()
        {
            Func <int, Func <int, int> > t1 = a => b => a + b;
            int f1 = 1;

            Assert.AreEqual(ChurchBoolean.True(t1)(f1), SkiCalculus.True(t1)(f1));
            Assert.AreEqual(ChurchBoolean.False(t1)(f1), SkiCalculus.False(t1)(f1));

            Func <int, int> t2 = a => a + 1;
            int             f2 = 2;

            Assert.AreEqual(ChurchBoolean.True(t2)(f2), SkiCalculus.True(t2)(f2));
            Assert.AreEqual(ChurchBoolean.False(t2)(f2), SkiCalculus.False(t2)(f2));
        }