import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.Arrays; import java.util.Collection; public class SimpleTest { private static FileMerge fileMerge; @BeforeClass 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); Assert.assertEquals("Niet alle bestanden zijn gemerged.", 27300, file.size()); Assert.assertEquals("De kost van het mergen is niet optimaal.", 34600, TestFile.cost); } @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); Assert.assertEquals("Niet alle bestanden zijn gemerged.", 95, file.size()); Assert.assertEquals("De kost van het mergen is niet optimaal.", 205, TestFile.cost); } 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()); } } }