Example #1
0
        public void TestThen()
        {
            ContinuousMap <int, int> c = ((ContinuousMap <int, int>)TimesTwo).Then(x => (x + 1));

            Assert.NotNull(c);
            Assert.Equal(expected: 15, actual: c.GetValueAt(7));
        }
Example #2
0
        public void TestCompose()
        {
            ContinuousMap <int, int> c = ((ContinuousMap <int, int>)TimesTwo).Compose((int x) => x + 1);

            Assert.NotNull(c);
            Assert.Equal(16, c.GetValueAt(7));
        }
Example #3
0
        public void TestCasts()
        {
            // C# can't go straight from the function to a ContinuousMap, because technically it's already a cast to
            // become a Func (or any delegate type), double implicit casts are not considered when looking for
            // conversion operators, and there's no way to specify "method set" as the source for an implicit cast.
            // Oh well. Still, if we explicitly cast to Func, our conversion works:
            ContinuousMap <int, int> c = (Func <int, int>)TimesTwo;

            Assert.NotNull(c);
            Assert.Equal(10, c.GetValueAt(5));
            Assert.IsAssignableFrom <FunctionBackedContinuousMap <int, int> >(c);
            Assert.Equal(4, ((FunctionBackedContinuousMap <int, int>)c).F(2));

            FunctionBackedContinuousMap <int, int> d = (Func <int, int>)TimesTwo;

            Assert.NotNull(d);
            Assert.Equal(10, d.GetValueAt(5));
            Assert.Equal(4, d.F(2));
            Assert.IsAssignableFrom <ContinuousMap <int, int> >(d);

            var e = (ContinuousMap <int, int>)TimesTwo;

            Assert.NotNull(e);
            Assert.Equal(10, e.GetValueAt(5));
            Assert.IsAssignableFrom <FunctionBackedContinuousMap <int, int> >(e);
            Assert.Equal(4, ((FunctionBackedContinuousMap <int, int>)e).F(2));
        }