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 BBDiscreteKnapsack(); } @Test public void test1() { KnapsackItem k0 = new KnapsackItem(5.0,6.3); KnapsackItem k1 = new KnapsackItem(3.5,7.2); KnapsackItem k2 = new KnapsackItem(4.7,Math.PI); KnapsackItem k3 = new KnapsackItem(1.2,2.7); KnapsackItem k4 = new KnapsackItem(9.1,7.1); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4) ); double capaciteit = 11.7; Collection antw = dk.selecteer(Collections.unmodifiableSet(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k2,k4); } @Test public void test2() { KnapsackItem k0 = new KnapsackItem(7.1,8.7); KnapsackItem k1 = new KnapsackItem(3.8,3.1); KnapsackItem k2 = new KnapsackItem(4.3,3.6); KnapsackItem k3 = new KnapsackItem(1.0,2.9); KnapsackItem k4 = new KnapsackItem(1.1,5.1); KnapsackItem k5 = new KnapsackItem(3.0,3.7); KnapsackItem k6 = new KnapsackItem(9.0,8.2); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6 ); double capaciteit = 8*Math.E; 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, k5, k3); } @Test public void test3() { KnapsackItem k0 = new KnapsackItem(14.5,8.2); KnapsackItem k1 = new KnapsackItem(9.0,10.1); KnapsackItem k2 = new KnapsackItem(15.3,3.9); KnapsackItem k3 = new KnapsackItem(12.0,15.1); KnapsackItem k4 = new KnapsackItem(14.1,10.7); KnapsackItem k5 = new KnapsackItem(8.0,9.5); KnapsackItem k6 = new KnapsackItem(8.0,5.8); Set items = new HashSet<>(Arrays.asList( k0, k1, k2, k3, k4, k5, k6) ); double capaciteit = 25.1; Collection antw = dk.selecteer(Collections.unmodifiableSet(items), capaciteit); // Geldigheid controleren: capaciteit mag niet overschreden worden. checkCapaciteit(antw, capaciteit); // Controleren of antw de items van opl bevat. checkItems(antw, k2, k0, k4); } @Test public void test4() { KnapsackItem k0 = new KnapsackItem(9.9,8.0); KnapsackItem k1 = new KnapsackItem(11.7,11.0); KnapsackItem k2 = new KnapsackItem(5.1,3.0); KnapsackItem k3 = new KnapsackItem(17.0,17.0); KnapsackItem k4 = new KnapsackItem(16.1,13.0); KnapsackItem k5 = new KnapsackItem(8.9,9.0); KnapsackItem k6 = new KnapsackItem(8.0,5.0); KnapsackItem k7 = new KnapsackItem(4.0,2.0); KnapsackItem k8 = new KnapsackItem(10.1,10.0); KnapsackItem k9 = new KnapsackItem(9.2,6.0); List items = Arrays.asList( k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 ); double capaciteit = 30.2; 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, k2, k7, k6, k9, k4); } @Test public void testAll() { KnapsackItem k0 = new KnapsackItem(9.9,8.0); KnapsackItem k1 = new KnapsackItem(11.7,11.0); KnapsackItem k2 = new KnapsackItem(5.1,3.0); KnapsackItem k3 = new KnapsackItem(17.0,17.0); KnapsackItem k4 = new KnapsackItem(16.1,13.0); List items = Arrays.asList( k0, k1, k2, k3, k4 ); double capaciteit = 55.0; 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, k1, k2, k3, k4); } public void checkCapaciteit(Collection antw, double capaciteit){ double 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)); } } }