예제 #1
0
        public void CreateStreamPartIncreasesStreamPartsCreatedAsNew()
        {
            StreamPart.Create();

            Assert.That(StreamPartStatistics.StreamPartsCreatedAsNew, Is.EqualTo(1));
            Assert.That(StreamPartStatistics.StreamPartsCreatedFromDisposed, Is.EqualTo(0));
        }
예제 #2
0
 /// <summary>
 /// Splits the specified stream into stream parts.
 /// </summary>
 /// <param name="stream">The stream.</param>
 public void Split(Stream stream)
 {
     foreach (var streamPart in StreamPart.Create(stream))
     {
         this.OnStreamPartAvailable(streamPart);
     }
 }
예제 #3
0
        public void DisposeStreamPartIncreasesStreamPartsCurrentlyDisposed()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();

            Assert.That(StreamPartStatistics.StreamPartsCurrentlyDisposed, Is.EqualTo(1));
        }
예제 #4
0
        public void ValueMustNotBeGreaterThanMaximumValueSize()
        {
            var streamPart = StreamPart.Create();
            var tooBig     = StreamPart.MaximumValueSize + 1;
            var input      = new byte[tooBig];

            Assert.That(() => streamPart.Value = input, Throws.Exception.TypeOf(typeof(ArgumentException)));
        }
예제 #5
0
        public void DisposeResultsInAnObjectDisposedException()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();

            Assert.That(() => streamPart.Value = new byte[0], Throws.Exception.TypeOf(typeof(ObjectDisposedException)));
        }
예제 #6
0
        public void CreateStreamPartFromEmptyStream()
        {
            var stream = StreamHelper.GetStream(0);

            var streamParts = StreamPart.Create(stream);

            Assert.That(streamParts.Count(), Is.EqualTo(0));
        }
예제 #7
0
        public void LengthReturnsLengthOfValue()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2 };

            streamPart.Value = input;

            Assert.That(streamPart.Length, Is.EqualTo(3));
        }
예제 #8
0
        public void LengthIsZeroOnReusedStreamParts()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();
            streamPart = StreamPart.Create();

            Assert.That(streamPart.Length, Is.EqualTo(0));
        }
예제 #9
0
        public void ValueCanOnlyBeSetOnce()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2, 3, 4 };

            streamPart.Value = input;

            Assert.That(() => streamPart.Value = input, Throws.Exception.TypeOf(typeof(InvalidOperationException)));
        }
예제 #10
0
        public void ValueReturnsTheValueOriginallyStored()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2 };

            streamPart.Value = input;
            var value = streamPart.Value;

            Assert.That(value, Is.EqualTo(input));
        }
예제 #11
0
        public void CreateStreamPartReusesDisposedInstances()
        {
            var streamPart1 = StreamPart.Create();

            streamPart1.Dispose();

            var streamPart2 = StreamPart.Create();

            Assert.That(streamPart2, Is.SameAs(streamPart1));
        }
예제 #12
0
        public void CreateStreamPartFromDisposedStreamPartIncreasesStreamPartsCreatedFromDisposed()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();
            StreamPart.Create();

            Assert.That(StreamPartStatistics.StreamPartsCreatedAsNew, Is.EqualTo(1));
            Assert.That(StreamPartStatistics.StreamPartsCreatedFromDisposed, Is.EqualTo(1));
        }
예제 #13
0
        public void CreateStreamPartCreatesMultipleInstances()
        {
            var streamPart1 = StreamPart.Create();
            var streamPart2 = StreamPart.Create();

            Assert.That(streamPart1, Is.InstanceOf(typeof(StreamPart)));
            Assert.That(streamPart2, Is.InstanceOf(typeof(StreamPart)));

            Assert.That(streamPart1, Is.Not.SameAs(streamPart2));
        }
예제 #14
0
        public void CombineReturnsARewindedStream()
        {
            const int size   = SizeOf64KByte + 1;
            var       stream = StreamHelper.GetStream(size);

            var streamParts = StreamPart.Create(stream);

            var combinedStream = StreamPart.Combine(streamParts);

            Assert.That(combinedStream.Position, Is.EqualTo(0));
        }
예제 #15
0
        public void CreateStreamPartIncreasesStreamPartsCreatedTotal()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();
            StreamPart.Create();
            StreamPart.Create();
            StreamPart.Create();

            Assert.That(StreamPartStatistics.StreamPartsCreatedTotal, Is.EqualTo(4));
        }
예제 #16
0
        public void InitializeTypeEnforcesNewlyCreatedInstances()
        {
            var streamPart1 = StreamPart.Create();

            streamPart1.Dispose();

            StreamPart.InitializeType();
            var streamPart2 = StreamPart.Create();

            Assert.That(streamPart1, Is.Not.SameAs(streamPart2));
        }
예제 #17
0
        public void LengthIsZeroOnReusedStreamPartsWithPreviousValue()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2 };

            streamPart.Value = input;
            streamPart.Dispose();
            streamPart = StreamPart.Create();

            Assert.That(streamPart.Length, Is.EqualTo(0));
        }
예제 #18
0
        public void CombineMultipleStreamParts()
        {
            const int size   = SizeOf64KByte + 1;
            var       stream = StreamHelper.GetStream(size);

            var streamParts = StreamPart.Create(stream);

            var combinedStream = StreamPart.Combine(streamParts);

            Assert.That(combinedStream.Length, Is.EqualTo(size));
        }
예제 #19
0
        public void DisposeIsClearedAfterReuse()
        {
            var streamPart = StreamPart.Create();

            streamPart.Dispose();
            streamPart = StreamPart.Create();

            streamPart.Value = new byte[0];

            Assert.That(true);
        }
예제 #20
0
        public void DisposeRaisesDisposedEvent()
        {
            int count = 0;

            StreamPart.Disposed += () => count++;

            var streamPart = StreamPart.Create();

            streamPart.Dispose();

            Assert.That(count, Is.EqualTo(1));
        }
예제 #21
0
        public void InitializedTypeEnforcesResetOfStatistics()
        {
            StreamPart.Create();

            StreamPartStatistics.InitializeType();

            Assert.That(StreamPartStatistics.StreamPartsCurrentlyInMemory, Is.EqualTo(0));
            Assert.That(StreamPartStatistics.StreamPartsCurrentlyDisposed, Is.EqualTo(0));
            Assert.That(StreamPartStatistics.StreamPartsCreatedTotal, Is.EqualTo(0));
            Assert.That(StreamPartStatistics.StreamPartsCreatedAsNew, Is.EqualTo(0));
            Assert.That(StreamPartStatistics.StreamPartsCreatedFromDisposed, Is.EqualTo(0));
        }
예제 #22
0
        public void ValueReturnsAnEmptyArrayOnReusedStreamPart()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2 };

            streamPart.Value = input;
            streamPart.Dispose();
            streamPart = StreamPart.Create();

            var value = streamPart.Value;

            Assert.That(value.Length, Is.EqualTo(0));
        }
예제 #23
0
        public void CreateStreamPartFromDisposedStreamPartDecreasesStreamPartsCurrentlyDisposed()
        {
            var streamPart1 = StreamPart.Create();
            var streamPart2 = StreamPart.Create();

            streamPart1.Dispose();
            streamPart2.Dispose();
            StreamPart.Create();

            Assert.That(StreamPartStatistics.StreamPartsCurrentlyDisposed, Is.EqualTo(1));

            Assert.That(StreamPartStatistics.StreamPartsCreatedAsNew, Is.EqualTo(2));
            Assert.That(StreamPartStatistics.StreamPartsCreatedFromDisposed, Is.EqualTo(1));
        }
예제 #24
0
        public void CreateRaisesCreatedWithCreationModeNewly()
        {
            int count = 0;

            StreamPart.Created += streamPartCreationMode =>
            {
                if (streamPartCreationMode == StreamPartCreationMode.Newly)
                {
                    count++;
                }
            };

            var streamPart = StreamPart.Create();

            Assert.That(count, Is.EqualTo(1));
        }
예제 #25
0
        public void CreateStreamPartFromStreamWhichIs64KByte()
        {
            const int size   = SizeOf64KByte;
            var       stream = StreamHelper.GetStream(size);

            var streamParts = StreamPart.Create(stream);

            Assert.That(streamParts.Count(), Is.EqualTo(1));

            foreach (var streamPart in streamParts)
            {
                Assert.That(streamPart, Is.InstanceOf(typeof(StreamPart)));
                Assert.That(streamPart.Length, Is.EqualTo(size));
                Assert.That(streamPart.Value.Length, Is.EqualTo(size));
            }
        }
예제 #26
0
        public void ValueReturnsCorrectValueOnReusedStreamPart()
        {
            var streamPart = StreamPart.Create();
            var input      = new byte[] { 0, 1, 2, 3, 4 };

            streamPart.Value = input;
            streamPart.Dispose();

            streamPart       = StreamPart.Create();
            input            = new byte[] { 0, 1, 2 };
            streamPart.Value = input;

            var value = streamPart.Value;

            Assert.That(value.Length, Is.EqualTo(3));
        }
예제 #27
0
        public void MergeNonEmptyList()
        {
            var streamParts = StreamPart.Create(StreamHelper.GetStream(SizeOf64KByte + 1));

            var streamMerger = new StreamMerger();
            int count        = 0;

            streamMerger.StreamAvailable += stream =>
            {
                count++;
                Assert.That(stream.Length, Is.EqualTo(SizeOf64KByte + 1));
            };

            streamMerger.Merge(streamParts);

            Assert.That(count, Is.EqualTo(1));
        }
예제 #28
0
        public void CombineMarksAllStreamPartsAsDisposed()
        {
            const int size   = SizeOf64KByte + 1;
            var       stream = StreamHelper.GetStream(size);

            var streamParts = StreamPart.Create(stream);

            var combinedStream = StreamPart.Combine(streamParts);

            // NOTE: The number of currently disposed stream parts is 1 and not 2 as one might
            //       have expected. This is due to the fact that the Combine method disposes the
            //       first stream part before creating the second one.
            Assert.That(StreamPartStatistics.StreamPartsCurrentlyDisposed, Is.EqualTo(1));

            Assert.That(StreamPartStatistics.StreamPartsCreatedTotal, Is.EqualTo(2));
            Assert.That(StreamPartStatistics.StreamPartsCreatedAsNew, Is.EqualTo(1));
            Assert.That(StreamPartStatistics.StreamPartsCreatedFromDisposed, Is.EqualTo(1));
        }
예제 #29
0
        public void CreateRaisesCreatedWithCreationModeFromDisposedWhenReusingADisposedStreamPart()
        {
            int count = 0;

            StreamPart.Created += streamPartCreationMode =>
            {
                if (streamPartCreationMode == StreamPartCreationMode.FromDisposed)
                {
                    count++;
                }
            };

            var streamPart = StreamPart.Create();

            streamPart.Dispose();
            streamPart = StreamPart.Create();

            Assert.That(count, Is.EqualTo(1));
        }
예제 #30
0
        public void CreateStreamPartFromStreamWhichIsLargerThan64KByte()
        {
            const int size   = SizeOf64KByte + 1;
            var       stream = StreamHelper.GetStream(size);

            var streamParts = StreamPart.Create(stream);

            Assert.That(streamParts.Count(), Is.EqualTo(2));

            var sizes = new[]
            {
                SizeOf64KByte,
                1
            };
            int current = 0;

            foreach (var streamPart in streamParts)
            {
                Assert.That(streamPart, Is.InstanceOf(typeof(StreamPart)));
                Assert.That(streamPart.Length, Is.EqualTo(sizes[current]));
                Assert.That(streamPart.Value.Length, Is.EqualTo(sizes[current++]));
            }
        }