import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; public class SimpleTest { private static FileMerge fileMerge; @BeforeAll public static void init() { fileMerge = new GreedyFileMerge(); } @Test public void test1() { Collection files = Arrays.asList( new TestFile(300), new TestFile(7000), new TestFile(20000) ); TestFile.cost = 0; File file = fileMerge.merge(files); Assertions.assertEquals(27300, file.size(), "Niet alle bestanden zijn gemerged."); Assertions.assertEquals(34600, TestFile.cost, "De kost van het mergen is niet optimaal."); } @Test public void test2() { Collection files = Arrays.asList( new TestFile(20), new TestFile(30), new TestFile(10), new TestFile(5), new TestFile(30) ); TestFile.cost = 0; File file = fileMerge.merge(files); Assertions.assertEquals(95, file.size(), "Niet alle bestanden zijn gemerged."); Assertions.assertEquals(205, TestFile.cost, "De kost van het mergen is niet optimaal."); } static class TestFile implements File { static private int cost = 0; private long size; TestFile(long size) { this.size = size; } @Override public long size() { return size; } @Override public File merge(File other) { cost += size + other.size(); return new TestFile(size + other.size()); } } }