public void Read_ShouldReadBytesAndMovePositionInStreamIndependentlyForEachSharedInstance() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream1 = new SharedMemoryStream(bytes); var sharedMemoryStream2 = sharedMemoryStream1.MakeShared(); sharedMemoryStream1.Position = 123; sharedMemoryStream2.Position = 321; // Assume Assume.That(sharedMemoryStream1.Position, Is.EqualTo(123)); Assume.That(sharedMemoryStream2.Position, Is.EqualTo(321)); // Act var buffer1 = new byte[10]; var read1 = sharedMemoryStream1.Read(buffer1, 0, 10); var buffer2 = new byte[100]; var read2 = sharedMemoryStream2.Read(buffer2, 0, 100); // Assert Assert.That(read1, Is.EqualTo(10)); Assert.That(buffer1, Is.EqualTo(bytes.Skip(123).Take(10))); Assert.That(sharedMemoryStream1.Position, Is.EqualTo(133)); Assert.That(read2, Is.EqualTo(100)); Assert.That(buffer2, Is.EqualTo(bytes.Skip(321).Take(100))); Assert.That(sharedMemoryStream2.Position, Is.EqualTo(421)); }
public void Seek_ShouldMovePositionInStreamIndependentlyForEachSharedInstance() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream1 = new SharedMemoryStream(bytes); var sharedMemoryStream2 = sharedMemoryStream1.MakeShared(); sharedMemoryStream1.Position = 123; sharedMemoryStream2.Position = 321; // Assume Assume.That(sharedMemoryStream1.Position, Is.EqualTo(123)); Assume.That(sharedMemoryStream2.Position, Is.EqualTo(321)); // Act var seek1 = sharedMemoryStream1.Seek(10, SeekOrigin.Current); var seek2 = sharedMemoryStream2.Seek(100, SeekOrigin.Current); // Assert Assert.That(seek1, Is.EqualTo(133)); Assert.That(sharedMemoryStream1.Position, Is.EqualTo(133)); Assert.That(seek2, Is.EqualTo(421)); Assert.That(sharedMemoryStream2.Position, Is.EqualTo(421)); }
public void MakeShared_ShouldReturnNewInstanceOfSharedMemoryStream() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream = new SharedMemoryStream(bytes); // Act var actual = sharedMemoryStream.MakeShared(); // Assert Assert.That(actual, Is.Not.Null); }
public void MakeShared_ShouldThrowExceptionWhenStreamDisposed() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream = new SharedMemoryStream(bytes); sharedMemoryStream.Dispose(); // Act // Assert Assert.That(() => sharedMemoryStream.MakeShared(), Throws.TypeOf <ObjectDisposedException>()); }
private void PlaySfx(SharedMemoryStream stream) { if (_soundOut.PlaybackState != PlaybackState.Playing) { return; } var sfx = new WaveFileReader(stream.MakeShared()) .ChangeSampleRate(11025) .ToSampleSource() .ToMono(); _mixer.AddSound(sfx); }
public void MakeShared_ShouldReturnStreamThatProvidesAccessToTheSameData() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream = new SharedMemoryStream(bytes); // Act var actual = sharedMemoryStream.MakeShared(); // Assert var buffer = new byte[bytes.Length]; actual.Read(buffer, 0, buffer.Length); Assert.That(buffer, Is.EqualTo(bytes)); }
public void Dispose_ShouldNotDisposeSharedResourcesUntilAllSharedInstancesAreDisposed() { // Arrange var bytes = GetRandomBytes(); var sharedMemoryStream1 = new SharedMemoryStream(bytes); var sharedMemoryStream2 = sharedMemoryStream1.MakeShared(); // Assume Assume.That(sharedMemoryStream1.Position, Is.EqualTo(0)); Assume.That(sharedMemoryStream2.Position, Is.EqualTo(0)); // Act sharedMemoryStream1.Dispose(); // Assert Assert.That(() => sharedMemoryStream1.Seek(10, SeekOrigin.Current), Throws.TypeOf <ObjectDisposedException>()); var seek = sharedMemoryStream2.Seek(100, SeekOrigin.Current); Assert.That(seek, Is.EqualTo(100)); Assert.That(sharedMemoryStream2.Position, Is.EqualTo(100)); }