From 0871b85bdfd6df354d22f18456cb3390c567b8c6 Mon Sep 17 00:00:00 2001 From: Petar Tasev Date: Thu, 22 Apr 2021 19:34:48 -0700 Subject: [PATCH] Address code review comments. --- src/ImageSharp/Image.WrapMemory.cs | 2 +- src/ImageSharp/Memory/ByteMemoryOwner{T}.cs | 1 - .../Image/ImageTests.WrapMemory.cs | 29 +++++++++++++++---- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/ImageSharp/Image.WrapMemory.cs b/src/ImageSharp/Image.WrapMemory.cs index d7af873be..115d51921 100644 --- a/src/ImageSharp/Image.WrapMemory.cs +++ b/src/ImageSharp/Image.WrapMemory.cs @@ -332,7 +332,7 @@ namespace SixLabors.ImageSharp var pixelMemoryOwner = new ByteMemoryOwner(byteMemoryOwner); - Guard.IsTrue(pixelMemoryOwner.Memory.Length >= width * height, nameof(pixelMemoryOwner), "The length of the input memory is less than the specified image size"); + Guard.IsTrue(pixelMemoryOwner.Memory.Length >= (long)width * height, nameof(pixelMemoryOwner), "The length of the input memory is less than the specified image size"); var memorySource = MemoryGroup.Wrap(pixelMemoryOwner); return new Image(configuration, memorySource, width, height, metadata); diff --git a/src/ImageSharp/Memory/ByteMemoryOwner{T}.cs b/src/ImageSharp/Memory/ByteMemoryOwner{T}.cs index 01262eb58..3cf62bbc1 100644 --- a/src/ImageSharp/Memory/ByteMemoryOwner{T}.cs +++ b/src/ImageSharp/Memory/ByteMemoryOwner{T}.cs @@ -49,7 +49,6 @@ namespace SixLabors.ImageSharp.Memory { // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method this.Dispose(disposing: true); - GC.SuppressFinalize(this); } } } diff --git a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs index 1b40f43ab..17be2fa2b 100644 --- a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs +++ b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs @@ -380,11 +380,11 @@ namespace SixLabors.ImageSharp.Tests private class TestMemoryOwner : IMemoryOwner { + public bool Disposed { get; private set; } + public Memory Memory { get; set; } - public void Dispose() - { - } + public void Dispose() => this.Disposed = true; } [Theory] @@ -433,10 +433,29 @@ namespace SixLabors.ImageSharp.Tests [InlineData(2048, 32, 32)] public void WrapMemory_IMemoryOwnerOfByte_ValidSize(int size, int height, int width) { - var array = new byte[size * Unsafe.SizeOf()]; + var random = new Random(); + var pixelSize = Unsafe.SizeOf(); + var array = new byte[size * pixelSize]; var memory = new TestMemoryOwner { Memory = array }; - Image.WrapMemory(memory, height, width); + using (var img = Image.WrapMemory(memory, width, height)) + { + Assert.Equal(width, img.Width); + Assert.Equal(height, img.Height); + + for (int i = 0; i < height; ++i) + { + var arrayIndex = pixelSize * width * i; + var expected = (byte)random.Next(0, 256); + + Span rowSpan = img.GetPixelRowSpan(i); + array[arrayIndex] = expected; + + Assert.Equal(expected, rowSpan[0].R); + } + } + + Assert.True(memory.Disposed); } [Theory]