public void testOneBlockAndHalf_Copy() { TemporaryBuffer b = new TemporaryBuffer(); byte[] test = new TestRng(getName()) .nextBytes(TemporaryBuffer.Block.SZ * 3 / 2); try { var @in = new MemoryStream(test); // [caytchen] StreamReader buffers data After the very first Read, thus advancing the Position in the underlying stream - causing this test to fail //var inReader = new StreamReader(@in); b.write(@in.ReadByte()); b.copy(@in); b.close(); Assert.AreEqual(test.Length, b.Length); { byte[] r = b.ToArray(); Assert.IsNotNull(r); Assert.AreEqual(test.Length, r.Length); Assert.IsTrue(test.SequenceEqual(r)); } { MemoryStream o = new MemoryStream(); b.writeTo(o, null); o.Close(); byte[] r = o.ToArray(); Assert.AreEqual(test.Length, r.Length); Assert.IsTrue(test.SequenceEqual(r)); } } finally { b.destroy(); } }
public void testInCoreLimit_SwitchOnCopy() { TemporaryBuffer b = new TemporaryBuffer(); byte[] test = new TestRng(getName()) .nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 2); try { MemoryStream @in = new MemoryStream(test, TemporaryBuffer.DEFAULT_IN_CORE_LIMIT, test.Length - TemporaryBuffer.DEFAULT_IN_CORE_LIMIT); b.write(test, 0, TemporaryBuffer.DEFAULT_IN_CORE_LIMIT); b.copy(@in); b.close(); Assert.AreEqual(test.Length, b.Length); { byte[] r = b.ToArray(); Assert.IsNotNull(r); Assert.AreEqual(test.Length, r.Length); Assert.IsTrue(test.SequenceEqual(r)); } { MemoryStream o = new MemoryStream(); b.writeTo(o, null); o.Close(); byte[] r = o.ToArray(); Assert.AreEqual(test.Length, r.Length); Assert.IsTrue(test.SequenceEqual(r)); } } finally { b.destroy(); } }
private static byte[] ReadFully(Stream stream) { var b = new TemporaryBuffer(); try { b.copy(stream); b.close(); return(b.ToArray()); } finally { b.destroy(); } }