public void Add_WithValueAlreadyInQueue_ThrowsInvalidOperationException() { using (TimerQueue <int> queue = new TimerQueue <int>(v => { }, TimeSpan.FromMilliseconds(QueueDuration))) { queue.Add(42); Assert.Throws <InvalidOperationException>(() => queue.Add(42)); } }
public void RunSet_CallbackCalledOnExpectedItems(TestSet set, int[] expected) { object locker = new object(); int expectedCount = expected.Length; AutoResetEvent waiter = new AutoResetEvent(false); List <int> items = new List <int>(3); TimerQueue <int> queue = new TimerQueue <int>(v => { lock (locker) { items.Add(v); expectedCount--; if (expectedCount == 0) { waiter.Set(); } } }, TimeSpan.FromMilliseconds(QueueDuration)); foreach (TestEvent ev in set) { Thread.Sleep(TimeUnits * ev.Delay); switch (ev.Action) { case TestAction.Add: queue.Add(ev.Item); break; case TestAction.Remove: queue.Remove(ev.Item); break; case TestAction.Reset: queue.Reset(ev.Item); break; case TestAction.Clear: queue.Clear(); break; case TestAction.Flush: queue.Flush(); break; case TestAction.Count: Assert.Equal(ev.Item, queue.Count); break; } } waiter.WaitOne(QueueDuration * 4); string expectedStr = "[" + String.Join(",", expected.Select(x => x.ToString()).ToArray()) + "]"; string actualStr = "[" + String.Join(",", items.Select(x => x.ToString()).ToArray()) + "]"; Assert.Equal(expectedStr, actualStr); }