public void can_read_recorded_messages()
        {
            Message actual;
            Message[] messages = CreateMessages();
            Stream stream = RecordMessages(messages);

            using(var reader = new RecordedMessageReader(stream, true))
            {
                foreach(var expected in messages)
                {
                    actual = reader.Read();
                    Assert.IsType(expected.GetType(), actual);
                }
            }
        }
        public void messages_are_played_back_in_real_time()
        {
            Stopwatch sw = new Stopwatch();
            TimeSpan delay = TimeSpan.FromMilliseconds(15);
            TimeSpan delayLow = TimeSpan.FromMilliseconds(14);
            TimeSpan delayHigh = TimeSpan.FromMilliseconds(16);
            Stream stream = RecordMessages(delay, CreateMessages());

            using(var reader = new RecordedMessageReader(stream, true))
            {
                while(reader.Read() != null)
                {
                    // This isn't great, the delay between the first message isn't written.
                    if(sw.IsRunning)
                    {
                        Assert.InRange(sw.Elapsed, delayLow, delayHigh);
                        sw.Reset();
                    }
                    sw.Start();
                }
            }
        }