Esempio n. 1
0
        public async Task Segment_Based_CompressAsync_DecompressAsSegmentAsync_Harmonize(int arrSize, int segSize,
                                                                                         bool gzip)
        {
            var randm = new Random();
            var bytes = new byte[arrSize];

            randm.NextBytes(bytes);

            var segment = new ArraySegment <byte>(bytes, 0, segSize);

            using (var mem = new MemoryStream())
            {
                await segment.CompressAsync(mem, gzip).ConfigureAwait(false);

                var compressedData = mem.ToArray();
                if (segSize == 0)
                {
#if NETFRAMEWORK
                    Assert.True(compressedData.Length == 0);
#else
                    Assert.False(compressedData.Length == 0);
#endif
                }
                else
                {
                    var invalidCompress = compressedData.Length == segSize;
                    Assert.NotNull(segment.Array);
                    for (var i = 0; i < Math.Min(segSize, compressedData.Length); i++)
                    {
                        if (invalidCompress)
                        {
                            invalidCompress = segment.Array[i] == compressedData[i];
                        }
                    }

                    Assert.False(invalidCompress);
                }

                mem.Seek(0, SeekOrigin.Begin);
                var uncompressed = await mem.DecompressAsSegmentAsync(gzip).ConfigureAwait(false);

                Assert.True(segment.Count == uncompressed.Count);
                Assert.NotNull(segment.Array);
                Assert.NotNull(uncompressed.Array);
                for (var i = 0; i < uncompressed.Count; i++)
                {
                    Assert.True(segment.Array[i].Equals(uncompressed.Array[i]));
                }
            }
        }