import java.util.*; import org.junit.Assert; import org.junit.Test; public class SimpleTest { private VerhuisPlanner planner = new BBVerhuisPlanner(); @Test public void test1() { List items = List.of( new VerhuisItem(.7, .5), new VerhuisItem(.5, .3), new VerhuisItem(.5, .7), new VerhuisItem(.3, .5) ); Collection antw = planner.verdeel(items); checkCapaciteit(antw); checkItems(antw, items); Assert.assertEquals(2, antw.size()); } @Test public void test2() { List items = List.of( new VerhuisItem(.1, .2), new VerhuisItem(.4, .3), new VerhuisItem(.2, .4), new VerhuisItem(.4, .6), new VerhuisItem(.3, .3), new VerhuisItem(.5, .2), new VerhuisItem(.3, .5), new VerhuisItem(.5, .4) ); Collection antw = planner.verdeel(items); checkCapaciteit(antw); checkItems(antw, items); Assert.assertEquals(3, antw.size()); } @Test public void test3() { List items = List.of( new VerhuisItem(.6,.6), new VerhuisItem(.8,.6), new VerhuisItem(.1,.4), new VerhuisItem(.1,.6), new VerhuisItem(.1,.1), new VerhuisItem(.2,.0), new VerhuisItem(.9,.4), new VerhuisItem(.9,.8), new VerhuisItem(.6,.7), new VerhuisItem(.1,.2) ); Collection antw = planner.verdeel(items); checkCapaciteit(antw); checkItems(antw, items); Assert.assertEquals(5, antw.size()); } @Test public void test4() { List items = List.of( new VerhuisItem(.9,.0), new VerhuisItem(.0,.5), new VerhuisItem(.3,.9), new VerhuisItem(.5,.1), new VerhuisItem(.3,.5), new VerhuisItem(.1,.1), new VerhuisItem(.7,.6), new VerhuisItem(.9,.3), new VerhuisItem(.3,.3), new VerhuisItem(.0,.2) ); Collection antw = planner.verdeel(items); checkCapaciteit(antw); checkItems(antw, items); Assert.assertEquals(5, antw.size()); } @Test(timeout = 2000) public void test5(){ List items = new ArrayList<>(); for (int i = 0; i < 4; i++) { items.add(new VerhuisItem(0.5625, i*.001)); items.add(new VerhuisItem(0.3125, i*.001)); items.add(new VerhuisItem(0.375, i*.001)); } for (int i = 0; i < 8; i++) { items.add(new VerhuisItem(0.125, i*.001)); } Collection antw = planner.verdeel(items); checkCapaciteit(antw); checkItems(antw, items); Assert.assertEquals(6, antw.size()); } public static void checkCapaciteit(Collection antw){ for (VerhuisDoos doos : antw) { double gewicht = doos.items().stream().mapToDouble(VerhuisItem::gewicht).sum(); double volume = doos.items().stream().mapToDouble(VerhuisItem::volume).sum(); Assert.assertTrue("De doos " + doos + " is te zwaar: " + gewicht, gewicht <= 1); Assert.assertTrue("De doos " + doos + " is te vol: " + volume, volume <= 1); } } public static void checkItems(Collection antw, Collection items){ Set itemsInAntw = new HashSet<>(); for (VerhuisDoos doos : antw) { for (VerhuisItem item : doos.items()) { Assert.assertTrue("Het item " + item + " zit niet in de lijst van items", items.contains(item)); Assert.assertFalse("Het item " + item + " zit in meerdere dozen", itemsInAntw.contains(item)); itemsInAntw.add(item); } } Assert.assertEquals("Niet alle items zitten in een doos", items.size(), itemsInAntw.size()); } }