public void Queued_And_Then_Left_Over_A_Period_Of_Time_With_Queue_Per_Worker()
 {
     MessageConsumer consumer = new MessageConsumer();
       ThreadPool pool = new ThreadPool(ThreadPoolConfiguration.FiveAndTen, new QueuePerWorkerStrategy());
       pool.Start();
       foreach (Message message in MessageBuilder.MakeMessages(30))
       {
     pool.Queue(consumer, message);
       }
       Thread.Sleep(TimeSpan.FromSeconds(10.0));
       pool.Stop();
       Assert.AreEqual(30, consumer.NumberOfMessagesProcessed);
 }
 public void Queued_Randomly_For_Twenty_Seconds()
 {
     ThreadPool pool = new ThreadPool(ThreadPoolConfiguration.FiveAndTen, new SingleQueueStrategy());
       pool.Start();
       DateTime startedAt = DateTime.Now;
       while (DateTime.Now - startedAt < TimeSpan.FromSeconds(10.0))
       {
     foreach (Message message in MessageBuilder.MakeMessages(Random.Next(10)))
     {
       pool.Queue(new MessageConsumer(), message);
     }
     Thread.Sleep(TimeSpan.FromSeconds(Random.NextDouble()));
       }
       pool.Stop();
 }