import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.Map; public class SimpleTest { private static Wisselgeld wisselgeld; @BeforeClass public static void init() { wisselgeld = new DynamischWisselgeld(); } @Test public void test1() { List munten = Arrays.asList(1, 2, 5, 10, 20, 50); int bedrag = 120; Map antw = wisselgeld.wisselgeld(munten, bedrag); checkCoin(antw, 50, 2); checkCoin(antw, 20, 1); checkCoin(antw, 10, 0); checkCoin(antw, 5, 0); checkCoin(antw, 2, 0); checkCoin(antw, 1, 0); Assert.assertEquals("Bedrag incorrect.", 120, berekenTotaal(antw)); } @Test public void test2() { List munten = Arrays.asList(1, 2, 5, 10, 20, 50); int bedrag = 79; Map antw = wisselgeld.wisselgeld(munten, bedrag); checkCoin(antw, 50, 1); checkCoin(antw, 20, 1); checkCoin(antw, 10, 0); checkCoin(antw, 5, 1); checkCoin(antw, 2, 2); checkCoin(antw, 1, 0); Assert.assertEquals("Bedrag incorrect.",79, berekenTotaal(antw)); } @Test public void test3() { List munten = Arrays.asList(1, 2, 5, 10, 20, 50); int bedrag = 208; Map antw = wisselgeld.wisselgeld(munten, bedrag); checkCoin(antw, 50, 4); checkCoin(antw, 20, 0); checkCoin(antw, 10, 0); checkCoin(antw, 5, 1); checkCoin(antw, 2, 1); checkCoin(antw, 1, 1); Assert.assertEquals("Bedrag incorrect.",208, berekenTotaal(antw)); } @Test public void test4() { List munten = Arrays.asList(1, 2, 3, 10, 12, 37, 38, 76); int bedrag = 379; Map antw = wisselgeld.wisselgeld(munten, bedrag); checkCoin(antw, 76, 4); checkCoin(antw, 38, 1); checkCoin(antw, 37, 1); checkCoin(antw, 12, 0); checkCoin(antw, 10, 0); checkCoin(antw, 3, 0); checkCoin(antw, 2, 0); checkCoin(antw, 1, 0); Assert.assertEquals("Bedrag incorrect.",379, berekenTotaal(antw)); } @Test public void test5() { List munten = Arrays.asList(1, 2, 3, 10, 12, 37, 38, 76); int bedrag = 112; Map antw = wisselgeld.wisselgeld(munten, bedrag); checkCoin(antw, 76, 0); checkCoin(antw, 38, 1); checkCoin(antw, 37, 2); checkCoin(antw, 12, 0); checkCoin(antw, 10, 0); checkCoin(antw, 3, 0); checkCoin(antw, 2, 0); checkCoin(antw, 1, 0); Assert.assertEquals(112, berekenTotaal(antw)); } private void checkCoin(Map antw, int coin, int expectedCount) { Assert.assertEquals("Fout aantal munten van waarde " + coin + ".", expectedCount, antw.getOrDefault(coin, 0).intValue()); } private int berekenTotaal(Map map) { int bedrag = 0; for(int munt: map.keySet()) { bedrag += munt*map.get(munt); } return bedrag; } }