import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.*;
public class GeneratePermutationsTest {
private List<List<Integer>> expected;
private List<Integer> A;
@Test
public void permutations1() throws Exception {
expected = Arrays.asList(
Arrays.asList(2)
);
A = Arrays.asList(2);
test(expected, A);
}
@Test
public void permutations2() throws Exception {
expected = Arrays.asList(
Arrays.asList(2,3),
Arrays.asList(3,2)
);
A = Arrays.asList(2,3);
test(expected, A);
}
@Test
public void permutations3() throws Exception {
expected = Arrays.asList(
Arrays.asList(2,3,5),
Arrays.asList(2,5,3),
Arrays.asList(3,2,5),
Arrays.asList(3,5,2),
Arrays.asList(5,2,3),
Arrays.asList(5,3,2)
);
A = Arrays.asList(2,3,5);
test(expected, A);
}
@Test
public void permutations4() throws Exception {
expected = Arrays.asList(
Arrays.asList(2,3,5,7),
Arrays.asList(2,3,7,5),
Arrays.asList(2,5,3,7),
Arrays.asList(2,5,7,3),
Arrays.asList(2,7,3,5),
Arrays.asList(2,7,5,3),
Arrays.asList(3,2,5,7),
Arrays.asList(3,2,7,5),
Arrays.asList(3,5,2,7),
Arrays.asList(3,5,7,2),
Arrays.asList(3,7,2,5),
Arrays.asList(3,7,5,2),
Arrays.asList(5,2,3,7),
Arrays.asList(5,2,7,3),
Arrays.asList(5,3,2,7),
Arrays.asList(5,3,7,2),
Arrays.asList(5,7,2,5),
Arrays.asList(5,7,5,2),
Arrays.asList(7,2,5,3),
Arrays.asList(7,2,3,5),
Arrays.asList(7,3,2,7),
Arrays.asList(7,3,7,2),
Arrays.asList(7,5,3,2),
Arrays.asList(7,5,2,3)
);
A = Arrays.asList(2,3,5,7);
test(expected, A);
}
private void test(List<List<Integer>> expected, List<Integer> A) {
List<List<Integer>> result = GeneratePermutations.permutations(A);
assertEquals(expected.size(), result.size());
expected.forEach(i -> {
assertTrue(result.remove(i));
});
}
}