Add tests, remove main & print methods in CoinChange.java (#5642)

This commit is contained in:
Hardik Pawar
2024-10-10 00:34:04 +05:30
committed by GitHub
parent 2d34bc150f
commit 6ddb26f48d
3 changed files with 82 additions and 21 deletions

View File

@ -786,6 +786,7 @@
* [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java) * [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java)
* [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java) * [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java)
* [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java) * [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java)
* [CoinChangeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CoinChangeTest.java)
* [CountFriendsPairingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CountFriendsPairingTest.java) * [CountFriendsPairingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CountFriendsPairingTest.java)
* [EditDistanceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EditDistanceTest.java) * [EditDistanceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EditDistanceTest.java)
* [EggDroppingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EggDroppingTest.java) * [EggDroppingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EggDroppingTest.java)

View File

@ -7,15 +7,6 @@ public final class CoinChange {
private CoinChange() { private CoinChange() {
} }
// Driver Program
public static void main(String[] args) {
int amount = 12;
int[] coins = {2, 4, 5};
System.out.println("Number of combinations of getting change for " + amount + " is: " + change(coins, amount));
System.out.println("Minimum number of coins required for amount :" + amount + " is: " + minimumCoins(coins, amount));
}
/** /**
* This method finds the number of combinations of getting change for a * This method finds the number of combinations of getting change for a
* given amount and change coins * given amount and change coins
@ -32,8 +23,6 @@ public final class CoinChange {
for (int i = coin; i < amount + 1; i++) { for (int i = coin; i < amount + 1; i++) {
combinations[i] += combinations[i - coin]; combinations[i] += combinations[i - coin];
} }
// Uncomment the below line to see the state of combinations for each coin
// printAmount(combinations);
} }
return combinations[amount]; return combinations[amount];
@ -65,16 +54,7 @@ public final class CoinChange {
} }
} }
} }
// Uncomment the below line to see the state of combinations for each coin
// printAmount(minimumCoins);
return minimumCoins[amount]; return minimumCoins[amount];
} }
// A basic print method which prints all the contents of the array
public static void printAmount(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
} }

View File

@ -0,0 +1,80 @@
package com.thealgorithms.dynamicprogramming;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CoinChangeTest {
@Test
void testChangeBasic() {
int amount = 12;
int[] coins = {2, 4, 5};
assertEquals(5, CoinChange.change(coins, amount));
}
@Test
void testChangeNoCoins() {
int amount = 12;
int[] coins = {};
assertEquals(0, CoinChange.change(coins, amount));
}
@Test
void testChangeNoAmount() {
int amount = 0;
int[] coins = {2, 4, 5};
assertEquals(1, CoinChange.change(coins, amount));
}
@Test
void testChangeImpossibleAmount() {
int amount = 3;
int[] coins = {2, 4, 5};
assertEquals(0, CoinChange.change(coins, amount));
}
@Test
void testMinimumCoinsBasic() {
int amount = 12;
int[] coins = {2, 4, 5};
assertEquals(3, CoinChange.minimumCoins(coins, amount));
}
@Test
void testMinimumCoinsNoCoins() {
int amount = 12;
int[] coins = {};
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
}
@Test
void testMinimumCoinsNoAmount() {
int amount = 0;
int[] coins = {2, 4, 5};
assertEquals(0, CoinChange.minimumCoins(coins, amount));
}
@Test
void testMinimumCoinsImpossibleAmount() {
int amount = 3;
int[] coins = {2, 4, 5};
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
}
@Test
void testMinimumCoinsExactAmount() {
int amount = 10;
int[] coins = {1, 5, 10};
assertEquals(1, CoinChange.minimumCoins(coins, amount));
}
}