public void ProduceAfterEnd()
        {
            var producer = new CompliantProducer <int>();
            var ordered  = new OrderedDataProducer <int>(producer, null).ToList();

            producer.ProduceAndEnd(1, 3, 0, 2, 4);
            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(i, ordered[i], "verify working first");
            }
            producer.Produce(6); // boom
        }
 public void EndTwice()
 {
     Assert.Throws <InvalidOperationException>(() =>
     {
         var producer = new CompliantProducer <int>();
         var ordered  = new OrderedDataProducer <int>(producer, null).ToList();
         producer.ProduceAndEnd(1, 3, 0, 2, 4);
         for (int i = 0; i < 5; i++)
         {
             Assert.AreEqual(i, ordered[i], "verify working first");
         }
         producer.End(); // boom
     });
 }