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.Assert; import org.junit.BeforeClass; import org.junit.Test; public class SimpleTest { private static DiscreteKnapsack dk; @BeforeClass public static void init() { dk = new DynamischDiscreteKnapsack(); } @Test public void test1() { KnapsackItem k0 = new KnapsackItem(5.0,6); KnapsackItem k1 = new KnapsackItem(3.5,7); KnapsackItem k2 = new KnapsackItem(4.7,2); KnapsackItem k3 = new KnapsackItem(1.2,2); KnapsackItem k4 = new KnapsackItem(9.1,7); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4) ); int capaciteit = 11; Collection antw = dk.selecteer(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(7.1,8); KnapsackItem k1 = new KnapsackItem(3.8,3); KnapsackItem k2 = new KnapsackItem(4.3,3); KnapsackItem k3 = new KnapsackItem(1.0,2); KnapsackItem k4 = new KnapsackItem(1.1,5); KnapsackItem k5 = new KnapsackItem(3.0,3); KnapsackItem k6 = new KnapsackItem(9.0,8); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6 ); int capaciteit = 15; Collection antw = dk.selecteer(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(14.5,8); KnapsackItem k1 = new KnapsackItem(9.0,10); KnapsackItem k2 = new KnapsackItem(15.3,3); KnapsackItem k3 = new KnapsackItem(12.0,15); KnapsackItem k4 = new KnapsackItem(14.1,10); KnapsackItem k5 = new KnapsackItem(8.0,9); KnapsackItem k6 = new KnapsackItem(8.0,5); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4, k5, k6) ); int capaciteit = 25; Collection antw = dk.selecteer(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(9.9,8); KnapsackItem k1 = new KnapsackItem(11.7,11); KnapsackItem k2 = new KnapsackItem(5.1,3); KnapsackItem k3 = new KnapsackItem(17.0,17); KnapsackItem k4 = new KnapsackItem(16.1,13); KnapsackItem k5 = new KnapsackItem(8.9,9); KnapsackItem k6 = new KnapsackItem(8.0,5); KnapsackItem k7 = new KnapsackItem(4.0,2); KnapsackItem k8 = new KnapsackItem(10.1,10); KnapsackItem k9 = new KnapsackItem(9.2,6); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 ); int capaciteit = 33; Collection antw = dk.selecteer(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.getGewicht(); } Assert.assertTrue("De capaciteit wordt overschreden in jouw oplossing: " + antw, gewicht <= capaciteit); } public void checkItems(Collection antw, KnapsackItem... items){ for(KnapsackItem item : items){ Assert.assertTrue(" Het volgende item: " + item + " ontbreekt in jouw oplossing: " + antw , antw.contains(item)); } } }