public void TestReadOnlyMemStream() { var mem = new CMemoryStream(m_buf2, 0, m_buf2.Length, true) { Position = 0 }; var reader = new BinaryReader(mem); var x = reader.ReadInt32(); mem.Seek(-2, SeekOrigin.Current); Assert.AreEqual(true, mem.CanRead, "Should be CanRead"); Assert.AreEqual(false, mem.CanWrite, "Should not be CanWrite"); Assert.AreEqual(true, mem.CanSeek, "Should be CanSeek"); try { mem.SetLength(4); Assert.Fail("Should not be able to set the length of a read-only stream."); } catch (InvalidOperationException) { // all is well } try { mem.WriteByte(0); Assert.Fail("Should not be able to write to a readonly stream"); } catch (InvalidOperationException) { // all is well } try { mem.SetBuffer(m_buf1); Assert.Fail("Should not be able to set the underlying buffer in a readonly CMemoryStream."); } catch (InvalidOperationException) { // all is well } }
public void TestChangingBuffer() { var buffer = new byte[BUFFER_SIZE]; m_memStream = new CMemoryStream(m_buf1); m_memStream.Read(buffer, 0, m_buf1.Length); Assert.AreEqual <long>(m_buf1.Length, m_memStream.Position, "Position"); Assert.AreEqual <long>(m_buf1.Length, m_memStream.Length, "Length"); Assert.AreEqual <long>(0, m_memStream.BytesAvailable, "Bytes Available"); Assert.AreEqual(0, MemCmp(m_buf1, 0, buffer, 0, m_buf1.Length), "Should have read buf1"); m_memStream.SetBuffer(m_buf2); m_memStream.Read(buffer, 0, m_buf2.Length); Assert.AreEqual <long>(m_buf2.Length, m_memStream.Position, "Position2"); Assert.AreEqual <long>(m_buf2.Length, m_memStream.Length, "Length2"); Assert.AreEqual <long>(0, m_memStream.BytesAvailable, "Bytes Available2"); Assert.AreEqual(0, MemCmp(m_buf2, 0, buffer, 0, m_buf2.Length), "Should have read buf2"); }
public void TestInternalOperations() { m_memStream.SetBuffer(m_buffer, START_INDEX, SAMPLE_SIZE); Assert.AreEqual <long>(0, m_memStream.Position, "Position"); Assert.AreEqual <long>(SAMPLE_SIZE, m_memStream.Length, "Length"); Assert.AreEqual <long>(SAMPLE_SIZE, m_memStream.BytesAvailable, "Bytes Available"); var buffer = new byte[BUFFER_SIZE]; var bytesRead = m_memStream.Read(buffer, 0, BUFFER_SIZE); Assert.AreEqual <long>(SAMPLE_SIZE, bytesRead, "Bytes Read"); Assert.AreEqual(0, MemCmp(buffer, 0, m_buffer, START_INDEX, SAMPLE_SIZE), "Should have read correct subsection"); m_memStream.Position = 5; Assert.AreEqual <long>(5, m_memStream.Position, "New Position"); Assert.AreEqual <long>(SAMPLE_SIZE, m_memStream.Length, "New Length"); Assert.AreEqual <long>(SAMPLE_SIZE - 5, m_memStream.BytesAvailable, "New Bytes Available"); }