import org.junit.Test; import java.util.Arrays; import java.util.List; import static org.junit.Assert.*; public class ComputeKLargestTest { private List<Integer> expected; private List<Integer> list; private int k; @Test public void kLargestInBinaryHeap1() throws Exception { expected = Arrays.asList(7,8,9); list = Arrays.asList(8,3,4,2,6,5,7,9,1); k = 3; test(expected,list,k); } @Test public void kLargestInBinaryHeap2() throws Exception { expected = Arrays.asList(5,6,7,8,9); list = Arrays.asList(8,3,4,2,6,5,7,9,1); k = 5; test(expected,list,k); } private void test(List<Integer> expected, List<Integer> list, int k) { List<Integer> result = ComputeKLargest.kLargestInBinaryHeap(list, k); try { for (Integer i : expected) { if (!result.contains(i)) throw new AssertionError(); } } catch (AssertionError e) { StringBuilder errorMessage = new StringBuilder(); errorMessage.append("\nExpected: "+expected.toString()); errorMessage.append("\nActual: "+result.toString()+"\n"); fail(errorMessage.toString()); } } }