diff --git a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/ImageService.cs b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/ImageService.cs index 6e366221c9..f0e341a9d0 100644 --- a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/ImageService.cs +++ b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/ImageService.cs @@ -6,6 +6,11 @@ public static class ImageService { public static SKBitmap CreateBlankImage(int width, int height) { + if (width <= 0 || height <= 0) + { + throw new ArgumentException("Image width and height must be greater than zero."); + } + var bitmap = new SKBitmap(width, height); using var canvas = new SKCanvas(bitmap); canvas.Clear(SKColors.White); @@ -15,9 +20,9 @@ public static SKBitmap CreateBlankImage(int width, int height) public static void DrawSquareOnImage(SKBitmap bitmap, int squareSize, int startX, int startY) { - if (squareSize <= 0 || startX <= 0 || startY <= 0) + if (squareSize <= 0 || startX < 0 || startY < 0) { - throw new ArgumentException("Square size and coordinates must be greater than zero."); + throw new ArgumentException("Square size must be greater than zero and coordinates cannot be negative."); } using var canvas = new SKCanvas(bitmap); using var paint = new SKPaint(); diff --git a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/SkiaSharpLibrary.csproj b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/SkiaSharpLibrary.csproj index f60da0e05e..7a381816cb 100644 --- a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/SkiaSharpLibrary.csproj +++ b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/SkiaSharpLibrary/SkiaSharpLibrary.csproj @@ -2,13 +2,13 @@ Exe - net8.0 + net10.0 enable enable - + diff --git a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/SkiaSharpLibraryLiveTest.cs b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/ImageServiceTests.cs similarity index 71% rename from csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/SkiaSharpLibraryLiveTest.cs rename to csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/ImageServiceTests.cs index 58d1fa887e..302410db70 100644 --- a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/SkiaSharpLibraryLiveTest.cs +++ b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/ImageServiceTests.cs @@ -3,7 +3,7 @@ namespace Tests; -public class SkiaSharpLibraryLiveTest : IDisposable +public class ImageServiceTests : IDisposable { private const string OutputPath = @"outputImage.png"; private const string NullOutputPath = ""; @@ -13,7 +13,7 @@ public class SkiaSharpLibraryLiveTest : IDisposable private bool _isDisposed = false; - public SkiaSharpLibraryLiveTest() + public ImageServiceTests() { _bitmap = ImageService.CreateBlankImage(_width, _height); } @@ -34,7 +34,7 @@ public void GivenValidDimensions_WhenCreateBlankImageIsCalled_ThenReturnBitmapWi public void GivenInvalidDimensions_WhenCreateBlankImageIsCalled_ThenThrowArgumentException(int width, int height) { // Act & Assert - Assert.Throws(() => ImageService.CreateBlankImage(width, height)); + Assert.Throws(() => ImageService.CreateBlankImage(width, height)); } [Fact] @@ -50,6 +50,32 @@ public void GivenValidSquareDetails_WhenDrawSquareOnImageIsCalled_ThenSquareIsDr Assert.Contains(_bitmap.Pixels, pixel => pixel != SKColors.White); } + [Fact] + public void GivenSquareAtTopLeftCorner_WhenDrawSquareOnImageIsCalled_ThenSquareIsDrawn() + { + // Act + ImageService.DrawSquareOnImage(_bitmap, 120, 0, 0); + + // Assert + Assert.Equal(SKColors.Red, _bitmap.GetPixel(0, 0)); + } + + [Fact] + public void GivenNewBitmap_WhenItsLayoutIsRead_ThenItMatchesThePlatformColorType() + { + // Arrange + using var bitmap = new SKBitmap(_width, _height); + + // Assert + Assert.Equal(SKImageInfo.PlatformColorType, bitmap.ColorType); + Assert.Equal(SKColorType.Bgra8888, bitmap.ColorType); + Assert.Equal(SKAlphaType.Premul, bitmap.AlphaType); + Assert.Equal(4, bitmap.BytesPerPixel); + Assert.Equal(4 * _width, bitmap.RowBytes); + Assert.Equal(_width * _height, bitmap.Pixels.Length); + Assert.NotEqual(IntPtr.Zero, bitmap.GetPixels()); + } + [Fact] public void GivenInvalidSquareSize_WhenDrawSquareOnImageIsCalled_ThenThrowArgumentException() { diff --git a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/Tests.csproj b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/Tests.csproj index f065c757c8..dff721e534 100644 --- a/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/Tests.csproj +++ b/csharp-images/GenerateImagesInCSharpUsingSkiaSharp/Tests/Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable @@ -10,10 +10,11 @@ - - - - + + + + +