import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.Arrays; import java.util.List; public class SimpleTest { private static Subsequencer subsequencer; @BeforeClass public static void init() { subsequencer = new DynamicSubsequencer(); } @Test public void test1() { List sequence = Arrays.asList(5, 2, 8, 6, 3, 6, 9, 7); check(sequence, subsequencer.findSubsequence(sequence), 4); } @Test public void test2() { List sequence = Arrays.asList(7, 7, 1, 5); check(sequence, subsequencer.findSubsequence(sequence), 2); } @Test public void test3() { List sequence = Arrays.asList(6, 10, 4, 9, 3, 5); check(sequence, subsequencer.findSubsequence(sequence), 2); } @Test public void test4() { List sequence = Arrays.asList(3, 2, 10, 5, 9, 10, 3); check(sequence, subsequencer.findSubsequence(sequence), 4); } @Test public void test5() { List sequence = Arrays.asList(5, 2, 2, 6, 8, 9, 2, 6); check(sequence, subsequencer.findSubsequence(sequence), 4); } @Test public void test6() { List sequence = Arrays.asList(7, 6, 10, 4, 9, 8, 8, 9, 5); check(sequence, subsequencer.findSubsequence(sequence), 3); } @Test public void test7() { List sequence = Arrays.asList(1, 9, 1, 2, 7, 11, 11, 1, 10, 8); check(sequence, subsequencer.findSubsequence(sequence), 4); } @Test public void test8() { List sequence = Arrays.asList(6, 4, 6, 2, 4, 10, 4, 4, 3, 9, 8); check(sequence, subsequencer.findSubsequence(sequence), 3); } static void check(List sequence, List subsequence, int length) { Assert.assertEquals("Subsequence does not have the correct length.", length, subsequence.size()); for (int i = 1; i < length; i++) { int previous = subsequence.get(i - 1); int index = subsequence.get(i); Assert.assertTrue("Indices are not increasing.", index > previous); Assert.assertTrue("Subsequence is not increasing.", sequence.get(index) > sequence.get(previous)); } } }