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.List; public class SimpleTest { private static Subsequencer subsequencer; @BeforeAll 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) { Assertions.assertEquals(length, subsequence.size(), "Subsequence does not have the correct length."); for (int i = 1; i < length; i++) { int previous = subsequence.get(i - 1); int index = subsequence.get(i); Assertions.assertTrue(index > previous, "Indices are not increasing."); Assertions.assertTrue(sequence.get(index) > sequence.get(previous), "Subsequence is not increasing."); } } }