コード例 #1
0
        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(); });
        }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
        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.");
        }
コード例 #4
0
        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.");
            }
        }
コード例 #5
0
        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.");
            }
        }