Skip to content

Commit deaa7f9

Browse files
HardvanChiefpatwal
authored andcommitted
Add tests, remove main & print methods in CoinChange.java (TheAlgorithms#5642)
1 parent 0ef0b3d commit deaa7f9

File tree

3 files changed

+82
-21
lines changed

3 files changed

+82
-21
lines changed

DIRECTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,7 @@
786786
* [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java)
787787
* [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java)
788788
* [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java)
789+
* [CoinChangeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CoinChangeTest.java)
789790
* [CountFriendsPairingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CountFriendsPairingTest.java)
790791
* [EditDistanceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EditDistanceTest.java)
791792
* [EggDroppingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EggDroppingTest.java)

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

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,6 @@ public final class CoinChange {
77
private CoinChange() {
88
}
99

10-
// Driver Program
11-
public static void main(String[] args) {
12-
int amount = 12;
13-
int[] coins = {2, 4, 5};
14-
15-
System.out.println("Number of combinations of getting change for " + amount + " is: " + change(coins, amount));
16-
System.out.println("Minimum number of coins required for amount :" + amount + " is: " + minimumCoins(coins, amount));
17-
}
18-
1910
/**
2011
* This method finds the number of combinations of getting change for a
2112
* given amount and change coins
@@ -32,8 +23,6 @@ public static int change(int[] coins, int amount) {
3223
for (int i = coin; i < amount + 1; i++) {
3324
combinations[i] += combinations[i - coin];
3425
}
35-
// Uncomment the below line to see the state of combinations for each coin
36-
// printAmount(combinations);
3726
}
3827

3928
return combinations[amount];
@@ -65,16 +54,7 @@ public static int minimumCoins(int[] coins, int amount) {
6554
}
6655
}
6756
}
68-
// Uncomment the below line to see the state of combinations for each coin
69-
// printAmount(minimumCoins);
70-
return minimumCoins[amount];
71-
}
7257

73-
// A basic print method which prints all the contents of the array
74-
public static void printAmount(int[] arr) {
75-
for (int i = 0; i < arr.length; i++) {
76-
System.out.print(arr[i] + " ");
77-
}
78-
System.out.println();
58+
return minimumCoins[amount];
7959
}
8060
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.thealgorithms.dynamicprogramming;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
public class CoinChangeTest {
8+
9+
@Test
10+
void testChangeBasic() {
11+
int amount = 12;
12+
int[] coins = {2, 4, 5};
13+
14+
assertEquals(5, CoinChange.change(coins, amount));
15+
}
16+
17+
@Test
18+
void testChangeNoCoins() {
19+
int amount = 12;
20+
int[] coins = {};
21+
22+
assertEquals(0, CoinChange.change(coins, amount));
23+
}
24+
25+
@Test
26+
void testChangeNoAmount() {
27+
int amount = 0;
28+
int[] coins = {2, 4, 5};
29+
30+
assertEquals(1, CoinChange.change(coins, amount));
31+
}
32+
33+
@Test
34+
void testChangeImpossibleAmount() {
35+
int amount = 3;
36+
int[] coins = {2, 4, 5};
37+
38+
assertEquals(0, CoinChange.change(coins, amount));
39+
}
40+
41+
@Test
42+
void testMinimumCoinsBasic() {
43+
int amount = 12;
44+
int[] coins = {2, 4, 5};
45+
46+
assertEquals(3, CoinChange.minimumCoins(coins, amount));
47+
}
48+
49+
@Test
50+
void testMinimumCoinsNoCoins() {
51+
int amount = 12;
52+
int[] coins = {};
53+
54+
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
55+
}
56+
57+
@Test
58+
void testMinimumCoinsNoAmount() {
59+
int amount = 0;
60+
int[] coins = {2, 4, 5};
61+
62+
assertEquals(0, CoinChange.minimumCoins(coins, amount));
63+
}
64+
65+
@Test
66+
void testMinimumCoinsImpossibleAmount() {
67+
int amount = 3;
68+
int[] coins = {2, 4, 5};
69+
70+
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
71+
}
72+
73+
@Test
74+
void testMinimumCoinsExactAmount() {
75+
int amount = 10;
76+
int[] coins = {1, 5, 10};
77+
78+
assertEquals(1, CoinChange.minimumCoins(coins, amount));
79+
}
80+
}

0 commit comments

Comments
 (0)