public void AfterDispose_UnusableMethodsThrow() { var subject = new SmallBlockMemoryStream(); subject.Dispose(); long dummy; var buffer = new byte[1]; var dummyTarget = new MemoryStream(); var actions = new Action[] { () => dummy = subject.Length, () => subject.SetLength(0), () => dummy = subject.Capacity, () => subject.Capacity = 100, () => dummy = subject.Position, () => subject.Position = 0, () => subject.Seek(0, SeekOrigin.Begin), () => subject.Write(buffer, 0, 1), () => subject.WriteByte(1), () => CallWriteTo(subject, dummyTarget), () => subject.Read(buffer, 0, 1), () => subject.ReadByte() }; foreach (var action in actions) { action.ShouldThrow <ObjectDisposedException>(); } }
public void Read_withBadParameters_fails() { var subject = new SmallBlockMemoryStream(); var data = new byte[10]; Action action = () => subject.Read(null, 0, 0); action.ShouldThrow <ArgumentException>(); action = () => subject.Read(data, -10, 0); action.ShouldThrow <ArgumentException>(); action = () => subject.Read(data, 0, -10); action.ShouldThrow <ArgumentException>(); action = () => subject.Read(data, 0, 20); action.ShouldThrow <ArgumentException>(); }
public void ReadPastEnd_succeedsWithCorrectReadLength() { const int dataLength = 100; const int readLength = 110; var writeData = MakeTestData(dataLength); var subject = new SmallBlockMemoryStream(); subject.Write(writeData, 0, dataLength); subject.Position = 0; var readData = new byte[readLength]; var read = subject.Read(readData, 0, readLength); Assert.AreEqual(writeData.Length, read); }