예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }
예제 #4
0
        public void MakeShared_ShouldThrowExceptionWhenStreamDisposed()
        {
            // Arrange
            var bytes = GetRandomBytes();
            var sharedMemoryStream = new SharedMemoryStream(bytes);

            sharedMemoryStream.Dispose();

            // Act
            // Assert
            Assert.That(() => sharedMemoryStream.MakeShared(), Throws.TypeOf <ObjectDisposedException>());
        }
예제 #5
0
파일: Audio.cs 프로젝트: CarimA/GbJam8
        private void PlaySfx(SharedMemoryStream stream)
        {
            if (_soundOut.PlaybackState != PlaybackState.Playing)
            {
                return;
            }

            var sfx = new WaveFileReader(stream.MakeShared())
                      .ChangeSampleRate(11025)
                      .ToSampleSource()
                      .ToMono();

            _mixer.AddSound(sfx);
        }
예제 #6
0
        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));
        }
예제 #7
0
        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));
        }