package com.thealgorithms.dynamicprogramming; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Test; public class AllConstructTest { @Test public void testAllConstructBasic() { List> expected = Arrays.asList(Arrays.asList("he", "l", "l", "o")); List> result = AllConstruct.allConstruct("hello", Arrays.asList("he", "l", "o")); assertEquals(expected, result); } @Test public void testAllConstructMultipleWays() { List> expected = Arrays.asList(Arrays.asList("purp", "le"), Arrays.asList("p", "ur", "p", "le")); List> result = AllConstruct.allConstruct("purple", Arrays.asList("purp", "p", "ur", "le", "purpl")); assertEquals(expected, result); } @Test public void testAllConstructNoWays() { List> expected = Arrays.asList(); List> result = AllConstruct.allConstruct("abcdef", Arrays.asList("gh", "ijk")); assertEquals(expected, result); } @Test public void testAllConstructEmptyTarget() { List> expected = Arrays.asList(Arrays.asList()); List> result = AllConstruct.allConstruct("", Arrays.asList("a", "b", "c")); assertEquals(expected, result); } }