Skip to content

Commit 10f2cc4

Browse files
HardvanChiefpatwal
authored andcommitted
Add tests, remove print & main methods in BoundaryFill.java (TheAlgorithms#5640)
1 parent 66e0fd4 commit 10f2cc4

File tree

3 files changed

+73
-44
lines changed

3 files changed

+73
-44
lines changed

DIRECTORY.md

+7
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
* [NonRepeatingNumberFinder](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java)
3434
* [NumberAppearingOddTimes](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimes.java)
3535
* [NumbersDifferentSigns](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java)
36+
* [OnesComplement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/OnesComplement.java)
3637
* [ReverseBits](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java)
3738
* [SingleBitOperations](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SingleBitOperations.java)
39+
* [TwosComplement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/TwosComplement.java)
3840
* ciphers
3941
* a5
4042
* [A5Cipher](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/ciphers/a5/A5Cipher.java)
@@ -185,6 +187,7 @@
185187
* [AVLSimple](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java)
186188
* [AVLTree](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java)
187189
* [BinaryTree](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java)
190+
* [BoundaryTraversal](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/BoundaryTraversal.java)
188191
* [BSTFromSortedArray](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java)
189192
* [BSTIterative](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/BSTIterative.java)
190193
* [BSTRecursive](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/trees/BSTRecursive.java)
@@ -643,8 +646,10 @@
643646
* [NonRepeatingNumberFinderTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinderTest.java)
644647
* [NumberAppearingOddTimesTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimesTest.java)
645648
* [NumbersDifferentSignsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java)
649+
* [OnesComplementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/OnesComplementTest.java)
646650
* [ReverseBitsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java)
647651
* [SingleBitOperationsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SingleBitOperationsTest.java)
652+
* [TwosComplementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/TwosComplementTest.java)
648653
* ciphers
649654
* a5
650655
* [A5CipherTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/ciphers/a5/A5CipherTest.java)
@@ -754,6 +759,7 @@
754759
* [StackArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/stacks/StackArrayTest.java)
755760
* trees
756761
* [BinaryTreeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/BinaryTreeTest.java)
762+
* [BoundaryTraversalTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/BoundaryTraversalTest.java)
757763
* [BSTFromSortedArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/BSTFromSortedArrayTest.java)
758764
* [BSTIterativeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/BSTIterativeTest.java)
759765
* [BSTRecursiveTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/BSTRecursiveTest.java)
@@ -783,6 +789,7 @@
783789
* [StrassenMatrixMultiplicationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java)
784790
* dynamicprogramming
785791
* [BoardPathTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BoardPathTest.java)
792+
* [BoundaryFillTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BoundaryFillTest.java)
786793
* [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java)
787794
* [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java)
788795
* [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java)

src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java

-44
Original file line numberDiff line numberDiff line change
@@ -52,48 +52,4 @@ public static void boundaryFill(int[][] image, int xCoordinate, int yCoordinate,
5252
boundaryFill(image, xCoordinate - 1, yCoordinate - 1, newColor, boundaryColor);
5353
}
5454
}
55-
56-
/**
57-
* This method will print the 2D image matrix
58-
*
59-
* @param image The image to be printed on the console
60-
*/
61-
public static void printImageArray(int[][] image) {
62-
for (int i = 0; i < image.length; i++) {
63-
for (int j = 0; j < image[0].length; j++) {
64-
System.out.print(image[i][j] + " ");
65-
}
66-
67-
System.out.println();
68-
}
69-
}
70-
71-
// Driver Program
72-
public static void main(String[] args) {
73-
// Input 2D image matrix
74-
int[][] image = {
75-
{0, 0, 0, 0, 0, 0, 0},
76-
{0, 3, 3, 3, 3, 0, 0},
77-
{0, 3, 0, 0, 3, 0, 0},
78-
{0, 3, 0, 0, 3, 3, 3},
79-
{0, 3, 3, 3, 0, 0, 3},
80-
{0, 0, 0, 3, 0, 0, 3},
81-
{0, 0, 0, 3, 3, 3, 3},
82-
};
83-
84-
boundaryFill(image, 2, 2, 5, 3);
85-
86-
/* Output ==>
87-
* 0 0 0 0 0 0 0
88-
0 3 3 3 3 0 0
89-
0 3 5 5 3 0 0
90-
0 3 5 5 3 3 3
91-
0 3 3 3 5 5 3
92-
0 0 0 3 5 5 3
93-
0 0 0 3 3 3 3
94-
* */
95-
96-
// print 2D image matrix
97-
printImageArray(image);
98-
}
9955
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.thealgorithms.dynamicprogramming;
2+
3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class BoundaryFillTest {
10+
11+
private int[][] image;
12+
13+
@BeforeEach
14+
void setUp() {
15+
image = new int[][] {{0, 0, 0, 0, 0, 0, 0}, {0, 3, 3, 3, 3, 0, 0}, {0, 3, 0, 0, 3, 0, 0}, {0, 3, 0, 0, 3, 3, 3}, {0, 3, 3, 3, 0, 0, 3}, {0, 0, 0, 3, 0, 0, 3}, {0, 0, 0, 3, 3, 3, 3}};
16+
}
17+
18+
@Test
19+
void testGetPixel() {
20+
assertEquals(3, BoundaryFill.getPixel(image, 1, 1));
21+
assertEquals(0, BoundaryFill.getPixel(image, 2, 2));
22+
assertEquals(3, BoundaryFill.getPixel(image, 4, 3));
23+
}
24+
25+
@Test
26+
void testPutPixel() {
27+
BoundaryFill.putPixel(image, 2, 2, 5);
28+
assertEquals(5, BoundaryFill.getPixel(image, 2, 2));
29+
30+
BoundaryFill.putPixel(image, 0, 0, 7);
31+
assertEquals(7, BoundaryFill.getPixel(image, 0, 0));
32+
}
33+
34+
@Test
35+
void testBoundaryFill() {
36+
BoundaryFill.boundaryFill(image, 2, 2, 5, 3);
37+
38+
int[][] expectedImage = {{0, 0, 0, 0, 0, 0, 0}, {0, 3, 3, 3, 3, 0, 0}, {0, 3, 5, 5, 3, 0, 0}, {0, 3, 5, 5, 3, 3, 3}, {0, 3, 3, 3, 5, 5, 3}, {0, 0, 0, 3, 5, 5, 3}, {0, 0, 0, 3, 3, 3, 3}};
39+
40+
for (int i = 0; i < image.length; i++) {
41+
assertArrayEquals(expectedImage[i], image[i]);
42+
}
43+
}
44+
45+
@Test
46+
void testBoundaryFillEdgeCase() {
47+
BoundaryFill.boundaryFill(image, 1, 1, 3, 3);
48+
49+
int[][] expectedImage = {{0, 0, 0, 0, 0, 0, 0}, {0, 3, 3, 3, 3, 0, 0}, {0, 3, 0, 0, 3, 0, 0}, {0, 3, 0, 0, 3, 3, 3}, {0, 3, 3, 3, 0, 0, 3}, {0, 0, 0, 3, 0, 0, 3}, {0, 0, 0, 3, 3, 3, 3}};
50+
51+
for (int i = 0; i < image.length; i++) {
52+
assertArrayEquals(expectedImage[i], image[i]);
53+
}
54+
}
55+
56+
@Test
57+
void testBoundaryFillInvalidCoordinates() {
58+
BoundaryFill.boundaryFill(image, -1, -1, 5, 3);
59+
60+
int[][] expectedImage = {{0, 0, 0, 0, 0, 0, 0}, {0, 3, 3, 3, 3, 0, 0}, {0, 3, 0, 0, 3, 0, 0}, {0, 3, 0, 0, 3, 3, 3}, {0, 3, 3, 3, 0, 0, 3}, {0, 0, 0, 3, 0, 0, 3}, {0, 0, 0, 3, 3, 3, 3}};
61+
62+
for (int i = 0; i < image.length; i++) {
63+
assertArrayEquals(expectedImage[i], image[i]);
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)