import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; public class SimpleTest { private static IntegerKnapsack ik; @BeforeAll public static void init() { ik = new DynamicIntegerKnapsack(); } @Test public void test1() { KnapsackItem k0 = new KnapsackItem(6,5.0); KnapsackItem k1 = new KnapsackItem(7,3.5); KnapsackItem k2 = new KnapsackItem(2,4.7); KnapsackItem k3 = new KnapsackItem(2,1.2); KnapsackItem k4 = new KnapsackItem(7,9.1); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4) ); int capaciteit = 11; Collection antw = ik.select(Collections.unmodifiableCollection(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k2,k3,k4); } @Test public void test2() { KnapsackItem k0 = new KnapsackItem(8,7.1); KnapsackItem k1 = new KnapsackItem(3,3.8); KnapsackItem k2 = new KnapsackItem(3,4.3); KnapsackItem k3 = new KnapsackItem(2,1.0); KnapsackItem k4 = new KnapsackItem(5,1.1); KnapsackItem k5 = new KnapsackItem(3,3.0); KnapsackItem k6 = new KnapsackItem(8,9.0); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6 ); int capaciteit = 15; Collection antw = ik.select(Collections.unmodifiableList(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k1, k2, k6); } @Test public void test3() { KnapsackItem k0 = new KnapsackItem(8,14.5); KnapsackItem k1 = new KnapsackItem(10,9.0); KnapsackItem k2 = new KnapsackItem(3,15.3); KnapsackItem k3 = new KnapsackItem(15,12.0); KnapsackItem k4 = new KnapsackItem(10,14.1); KnapsackItem k5 = new KnapsackItem(9,8.0); KnapsackItem k6 = new KnapsackItem(5,8.0); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4, k5, k6) ); int capaciteit = 25; Collection antw = ik.select(Collections.unmodifiableCollection(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k2,k0,k6,k5); } @Test public void test4() { KnapsackItem k0 = new KnapsackItem(8,9.9); KnapsackItem k1 = new KnapsackItem(11,11.7); KnapsackItem k2 = new KnapsackItem(3,5.1); KnapsackItem k3 = new KnapsackItem(17,17.0); KnapsackItem k4 = new KnapsackItem(13,16.1); KnapsackItem k5 = new KnapsackItem(9,8.9); KnapsackItem k6 = new KnapsackItem(5,8.0); KnapsackItem k7 = new KnapsackItem(2,4.0); KnapsackItem k8 = new KnapsackItem(10,10.1); KnapsackItem k9 = new KnapsackItem(6,9.2); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 ); int capaciteit = 33; Collection antw = ik.select(Collections.unmodifiableList(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k0, k2, k5, k6, k7, k9); } public void checkCapaciteit(Collection antw, int capaciteit){ int gewicht = 0; for(KnapsackItem item : antw){ gewicht += item.size(); } Assertions.assertTrue(gewicht <= capaciteit, "De capaciteit wordt overschreden in jouw oplossing: " + antw); } public void checkItems(Collection antw, KnapsackItem... items){ for(KnapsackItem item : items){ Assertions.assertTrue(antw.contains(item), " Het volgende item: " + item + " ontbreekt in jouw oplossing: " + antw); } } }