Beispiel #1
0
        [Test] public void Not_Function()
        {
            Functional.UnaryFunction <int, bool> func1 = Functional.Not1(Functional.Bind1st <int, bool>(Functional.LessThan <int>, 29));
            Assert.IsTrue(func1(12));  // !(29 < 12) == false;
            Assert.IsFalse(func1(30)); // !(29 < 30) == true;
            Assert.IsTrue(func1(29));  // !(29 < 29) == false;

            Functional.BinaryFunction <int, int, bool> func2 = Functional.Not2 <int, int>(Functional.LessThan <int>);
            Assert.IsFalse(func2(12, 29)); // !(29 < 12) == false;
            Assert.IsTrue(func2(30, 29));  // !(29 < 30) == true;
            Assert.IsTrue(func2(29, 29));  // !(29 < 29) == false;
        }
Beispiel #2
0
        [Test] public void Bind_TwoTypes()
        {
            Functional.UnaryFunction <int, double> func1 = Functional.Bind1st <int, double>(Exp, 3);
            double result = func1(2);

            Assert.AreEqual(9, result);
            Assert.AreEqual(3, lastLhs);
            Assert.AreEqual(2, lastRhs);

            Functional.UnaryFunction <int, double> func2 = Functional.Bind2nd <int, double>(Exp, 3);
            result = func2(2);
            Assert.AreEqual(8, result);
            Assert.AreEqual(2, lastLhs);
            Assert.AreEqual(3, lastRhs);
        }
Beispiel #3
0
        [Test] public void Bind_ThreeTypes()
        {
            Functional.UnaryFunction <string, double> func1 = Functional.Bind1st <int, string, double>(Mux, 3);
            double result = func1("2");

            Assert.AreEqual(9, result);
            Assert.AreEqual(3, lastLhs);
            Assert.AreEqual("2", lastRhs);

            Functional.UnaryFunction <int, double> func2 = Functional.Bind2nd <int, string, double>(Mux, "3");
            result = func2(2);
            Assert.AreEqual(8, result);
            Assert.AreEqual(2, lastLhs);
            Assert.AreEqual("3", lastRhs);
        }
Beispiel #4
0
        [Test] public void Bind_SameTypes()
        {
            Functional.UnaryFunction <int, int> func1 = Functional.Bind1st(AddEm, 10);
            int result = func1(12);

            Assert.AreEqual(22, result);
            Assert.AreEqual(10, lastLhs);
            Assert.AreEqual(12, lastRhs);

            Functional.UnaryFunction <int, int> func2 = Functional.Bind2nd(AddEm, 10);
            result = func2(12);
            Assert.AreEqual(22, result);
            Assert.AreEqual(12, lastLhs);
            Assert.AreEqual(10, lastRhs);
        }