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 @@
-
-
-
-
+
+
+
+
+