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()); }
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); } }