Ejemplo n.º 1
0
        public static void InvokeAtMostOnce_NullDelegate()
        {
            var invoker = new Disposable.InvokeAtMostOnce(null);

            Assert.False(invoker.NextInvokeExecutes);
            Assert.False(invoker.Invoke());
            Assert.False(invoker.NextInvokeExecutes);
            Assert.False(invoker.Invoke());
        }
Ejemplo n.º 2
0
        public static void InvokeAtMostOnce_ExactlyOneInvoke()
        {
            var dummy   = new DummyInvokeTest();
            var invoker = new Disposable.InvokeAtMostOnce(dummy.Increase);

            // initially not invoked
            Assert.True(invoker.NextInvokeExecutes);
            Assert.AreEqual(0, dummy.Value);

            // first invoke executes delegate
            Assert.True(invoker.Invoke());
            Assert.AreEqual(1, dummy.Value);
            Assert.False(invoker.NextInvokeExecutes);

            // subsequent invokes have no effect
            foreach (var i in Enumerable.Range(0, 3))
            {
                Assert.False(invoker.Invoke());
                Assert.AreEqual(1, dummy.Value);
                Assert.False(invoker.NextInvokeExecutes);
            }
        }