Fix bound checks in flood fill (fixes #2836) (#2974)

This commit is contained in:
Nikhil Bisht
2022-03-12 15:26:43 +05:30
committed by GitHub
parent 63637c439d
commit 260a302563
3 changed files with 175 additions and 114 deletions

View File

@ -0,0 +1,106 @@
package com.thealgorithms.backtracking;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
class FloodFillTest {
@Test
void testForEmptyImage()
{
int image[][] = {};
int expected[][] = {};
FloodFill.floodFill(image, 4, 5, 3, 2);
assertArrayEquals(expected, image);
}
@Test
void testForSingleElementImage()
{
int image[][] = {{1}};
int expected[][] = {{3}};
FloodFill.floodFill(image, 0, 0, 3, 1);
assertArrayEquals(expected, image);
}
@Test
void testForImageOne()
{
int image[][] = {
{ 0,0,0,0,0,0,0 },
{ 0,3,3,3,3,0,0 },
{ 0,3,1,1,5,0,0 },
{ 0,3,1,1,5,5,3 },
{ 0,3,5,5,1,1,3 },
{ 0,0,0,5,1,1,3 },
{ 0,0,0,3,3,3,3 }
};
int expected[][] = {
{ 0,0,0,0,0,0,0 },
{ 0,3,3,3,3,0,0 },
{ 0,3,2,2,5,0,0 },
{ 0,3,2,2,5,5,3 },
{ 0,3,5,5,2,2,3 },
{ 0,0,0,5,2,2,3 },
{ 0,0,0,3,3,3,3 }
};
FloodFill.floodFill(image,2,2,2,1);
assertArrayEquals(expected, image);
}
@Test
void testForImageTwo()
{
int image[][] = {
{ 0,0,1,1,0,0,0 },
{ 1,1,3,3,3,0,0 },
{ 1,3,1,1,5,0,0 },
{ 0,3,1,1,5,5,3 },
{ 0,3,5,5,1,1,3 },
{ 0,0,0,5,1,1,3 },
{ 0,0,0,1,3,1,3 }
};
int expected[][] = {
{ 0,0,2,2,0,0,0 },
{ 2,2,3,3,3,0,0 },
{ 2,3,2,2,5,0,0 },
{ 0,3,2,2,5,5,3 },
{ 0,3,5,5,2,2,3 },
{ 0,0,0,5,2,2,3 },
{ 0,0,0,2,3,2,3 }
};
FloodFill.floodFill(image, 2, 2, 2, 1);
assertArrayEquals(expected, image);
}
@Test
void testForImageThree()
{
int image[][] = {
{ 1,1,2,3,1,1,1 },
{ 1,0,0,1,0,0,1 },
{ 1,1,1,0,3,1,2 }
};
int expected[][] = {
{ 4,4,2,3,4,4,4 },
{ 4,0,0,4,0,0,4 },
{ 4,4,4,0,3,4,2 },
};
FloodFill.floodFill(image, 0, 1, 4, 1);
assertArrayEquals(expected, image);
}
}