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 Flush_AfterDispose_DoesNotThrow() { // Just to mimic the MemoryStream implementation var standard = new MemoryStream(); standard.Dispose(); standard.Flush(); var subject = new SmallBlockMemoryStream(); subject.Dispose(); subject.Flush(); }
public void Dispose_LeavesSafePropertiesInTheCorrectState() { var subject = new SmallBlockMemoryStream(); subject.Dispose(); subject.ShouldBeEquivalentTo(new { CanRead = false, CanSeek = false, CanWrite = false, }, EqOpts); subject.GetAllocationSizes().ShouldBeEquivalentTo(NoAllocations); }