finally
This commit is contained in:
52
Minint.Tests/FloodFillTests.cs
Normal file
52
Minint.Tests/FloodFillTests.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using Minint.Core.Models;
|
||||
using Minint.Core.Services.Impl;
|
||||
|
||||
namespace Minint.Tests;
|
||||
|
||||
public class FloodFillTests
|
||||
{
|
||||
private readonly FloodFillService _fill = new();
|
||||
|
||||
[Fact]
|
||||
public void Fill_EmptyLayer_FillsAll()
|
||||
{
|
||||
var layer = new MinintLayer("L1", 9); // 3x3, all zeros
|
||||
_fill.Fill(layer, 0, 0, 1, 3, 3);
|
||||
|
||||
Assert.All(layer.Pixels, px => Assert.Equal(1, px));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Fill_SameColor_NoOp()
|
||||
{
|
||||
var layer = new MinintLayer("L1", 4);
|
||||
Array.Fill(layer.Pixels, 2);
|
||||
_fill.Fill(layer, 0, 0, 2, 2, 2);
|
||||
|
||||
Assert.All(layer.Pixels, px => Assert.Equal(2, px));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Fill_Bounded_DoesNotCrossBorder()
|
||||
{
|
||||
// 3x3 grid with a wall:
|
||||
// 0 0 0
|
||||
// 1 1 1
|
||||
// 0 0 0
|
||||
var layer = new MinintLayer("L1", 9);
|
||||
layer.Pixels[3] = 1; // (0,1)
|
||||
layer.Pixels[4] = 1; // (1,1)
|
||||
layer.Pixels[5] = 1; // (2,1)
|
||||
|
||||
_fill.Fill(layer, 0, 0, 2, 3, 3);
|
||||
|
||||
// Top row should be filled
|
||||
Assert.Equal(2, layer.Pixels[0]);
|
||||
Assert.Equal(2, layer.Pixels[1]);
|
||||
Assert.Equal(2, layer.Pixels[2]);
|
||||
// Wall untouched
|
||||
Assert.Equal(1, layer.Pixels[3]);
|
||||
// Bottom row untouched (blocked by wall)
|
||||
Assert.Equal(0, layer.Pixels[6]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user