Exemple #1
0
        public void TestUnsafe()
        {
            var i = 0;
            Func <int, bool> fun = q =>
            {
                i++;
                return(true);
            };

            Assert.AreEqual(true, fun(3));
            Assert.AreEqual(1, i);
            Assert.AreEqual(true, fun(3));
            Assert.AreEqual(2, i);
            Assert.AreEqual(true, fun(3));
            Assert.AreEqual(3, i);

            i = 0;
            var decorated = new RunOnceDelegateDecorator().DecorateRunOnceUnsafe(fun);

            Assert.AreNotEqual(fun, decorated);

            Assert.AreEqual(true, decorated(3));
            Assert.AreEqual(1, i);
            Assert.AreEqual(false, decorated(3));
            Assert.AreEqual(1, i);
            Assert.AreEqual(false, decorated(3));
            Assert.AreEqual(1, i);
        }
Exemple #2
0
        public void TestDummyWrapping()
        {
            Func <int, bool> isEven = i => i % 2 == 0;

            Assert.AreEqual(true, isEven(2));
            Assert.AreEqual(false, isEven(3));

            var decoreated = new RunOnceDelegateDecorator().DecorateDummy(isEven);

            Assert.AreEqual(true, decoreated(2));
            Assert.AreEqual(false, decoreated(3));
        }