public static void TestObjectDisposedException() { FakeSleep fakeSleep = new FakeSleep(); DelayedAction delayedAction = new DelayedAction(new FakeDelayTimer(fakeSleep), new TimeSpan(0, 0, 0, 0, 1)); delayedAction.Dispose(); Assert.Throws <ObjectDisposedException>(() => { delayedAction.StartIdleTimer(); }); }
public static void TestShortDelayButNoStart() { bool wasHere = false; FakeSleep fakeSleep = new FakeSleep(); using (DelayedAction delayedAction = new DelayedAction(new FakeDelayTimer(fakeSleep), new TimeSpan(0, 0, 0, 0, 1))) { delayedAction.Action += (sender, e) => wasHere = true; fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 50)); Assert.That(wasHere, Is.False, "The event should not be triggered until started."); } }
public static void TestEventAfterDispose() { bool wasHere = false; FakeSleep fakeSleep = new FakeSleep(); using (DelayedAction delayedAction = new DelayedAction(new FakeDelayTimer(fakeSleep), new TimeSpan(0, 0, 0, 0, 1))) { delayedAction.Action += (sender, e) => wasHere = true; delayedAction.StartIdleTimer(); Assert.That(wasHere, Is.False, "The event should not be triggered immediately."); } fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 1)); Assert.That(wasHere, Is.False, "The event should be not be triggered once disposed."); }
public static void TestShortDelayAndImmediateStart() { bool wasHere = false; FakeSleep fakeSleep = new FakeSleep(); using (DelayedAction delayedAction = new DelayedAction(new FakeDelayTimer(fakeSleep), new TimeSpan(0, 0, 0, 0, 1))) { delayedAction.Action += (sender, e) => wasHere = true; delayedAction.StartIdleTimer(); fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 50)); Assert.That(wasHere, Is.True, "The event should be triggered once started."); wasHere = false; fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 50)); Assert.That(wasHere, Is.False, "The event should not be triggered more than once."); } }
public static void TestManyRestartsButOnlyOneEvent() { int eventCount = 0; FakeSleep fakeSleep = new FakeSleep(); using (DelayedAction delayedAction = new DelayedAction(new FakeDelayTimer(fakeSleep), new TimeSpan(0, 0, 0, 0, 5))) { delayedAction.Action += (sender, e) => ++ eventCount; for (int i = 0; i < 10; ++i) { delayedAction.StartIdleTimer(); } fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 5)); Assert.That(eventCount, Is.EqualTo(1), "The event should be triggered exactly once."); fakeSleep.Time(new TimeSpan(0, 0, 0, 0, 5)); Assert.That(eventCount, Is.EqualTo(1), "The event should still be triggered exactly once."); } }