Files
Java/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackZeroOneTest.java
Vishwajeet Deshmane cfd784105b Feat(Improved): Add 0/1 Knapsack Problem: Recursive and Tabulation (Bottom-Up DP) Implementations in Java along with their corresponding Tests (#6425)
* feat: Add 0/1 Knapsack and its tabulation implementation with their corresponding tests

* feat: Add 0/1 Knapsack and its tabulation implementation with their corresponding tests

* feat: Add 0/1 Knapsack and its tabulation implementation with their corresponding tests

* Feat:add 0/1knapsack and 0/1knapsacktabulation along with their tests

* Feat:add 0/1knapsack and 0/1knapsacktabulation along with their tests

* Feat:add 0/1knapsack and 0/1knapsacktabulation along with their tests

---------

Co-authored-by: Oleksandr Klymenko <alexanderklmn@gmail.com>
2025-07-22 19:17:24 +02:00

69 lines
2.0 KiB
Java

package com.thealgorithms.dynamicprogramming;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
class KnapsackZeroOneTest {
@Test
void basicCheck() {
int[] values = {60, 100, 120};
int[] weights = {10, 20, 30};
int capacity = 50;
int expected = 220;
int result = KnapsackZeroOne.compute(values, weights, capacity, values.length);
assertEquals(expected, result);
}
@Test
void zeroCapacity() {
int[] values = {10, 20, 30};
int[] weights = {1, 1, 1};
int capacity = 0;
int result = KnapsackZeroOne.compute(values, weights, capacity, values.length);
assertEquals(0, result);
}
@Test
void zeroItems() {
int[] values = {};
int[] weights = {};
int capacity = 10;
int result = KnapsackZeroOne.compute(values, weights, capacity, 0);
assertEquals(0, result);
}
@Test
void weightsExceedingCapacity() {
int[] values = {10, 20};
int[] weights = {100, 200};
int capacity = 50;
int result = KnapsackZeroOne.compute(values, weights, capacity, values.length);
assertEquals(0, result);
}
@Test
void throwsOnNullArrays() {
assertThrows(IllegalArgumentException.class, () -> KnapsackZeroOne.compute(null, new int[] {1}, 10, 1));
assertThrows(IllegalArgumentException.class, () -> KnapsackZeroOne.compute(new int[] {1}, null, 10, 1));
}
@Test
void throwsOnMismatchedArrayLengths() {
assertThrows(IllegalArgumentException.class, () -> KnapsackZeroOne.compute(new int[] {10, 20}, new int[] {5}, 15, 2));
}
@Test
void throwsOnNegativeInputs() {
assertThrows(IllegalArgumentException.class, () -> KnapsackZeroOne.compute(new int[] {10}, new int[] {5}, -1, 1));
assertThrows(IllegalArgumentException.class, () -> KnapsackZeroOne.compute(new int[] {10}, new int[] {5}, 5, -1));
}
}