Example #1
0
 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));
     }
 }
Example #2
0
        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);
        }