title: Creating a 'ChaosStream' out of a C# MemoryStream for reading random lengths of data?
body: <p>Test review showed that <code>MemoryStream</code> always returns 'smooth' results. i.e. if we have 200 bytes being read from the <code>MemoryStream</code> into a 400 byte working buffer, it always returns back exactly 200 bytes in exactly one call. If we read 4000 byte into the 200 byte working buffer, it's always exactly 20 iterations of exactly 200 bytes each.</p>
  
  <p>The problem is that the <code>MemoryStream</code> can (in real world, corner cases) represent slow stream sources (like network or file). So the read may not be so deterministically smooth. It's possible that every <code>Read</code> operation may return a non-deterministic <strong>number</strong> of bytes read (eg: 8, 1, 105, 20, 5, 80 ...)</p>
  
  <p>So what's a good way of turning a vanilla <code>MemoryStream</code> into (for the lack a better word) a <code>ChaosStream</code> where the number of bytes read is a random number between 1 and the read request <code>count</code>? (Note that 0 means end-of-stream). The bytes themselves need to be the underlying bytes, just read with some randomness/jitter to them to expand test coverage.</p>