Exemple #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;
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #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);
        }
Exemple #5
0
        public static OutputIterator <O> Transform <I, O>(IEnumerable <I> enumerable, OutputIterator <O> dest, Functional.UnaryFunction <I, O> func)
        {
            IEnumerator <I> enumerator = enumerable.GetEnumerator();

            for (dest = IteratorUtil.Clone(dest); enumerator.MoveNext(); dest.MoveNext())
            {
                dest.Write(func(enumerator.Current));
            }
            return(dest);
        }
Exemple #6
0
 public static OutputIterator <O> Transform <I, O>(InputIterator <I> begin, InputIterator <I> end, OutputIterator <O> dest, Functional.UnaryFunction <I, O> func)
 {
     for (begin = IteratorUtil.Clone(begin), dest = IteratorUtil.Clone(dest); !begin.Equals(end); begin.MoveNext(), dest.MoveNext())
     {
         dest.Write(func(begin.Read()));
     }
     return(dest);
 }