import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.*;
public class NQueensTest {
private List<List<Integer>> expected;
private int n;
@Test
public void nQueens1() throws Exception {
expected = Arrays.asList(
Arrays.asList(0)
);
n = 1;
test(expected, n);
}
@Test
public void nQueens2() throws Exception {
expected = Arrays.asList(
Arrays.asList(0),
Arrays.asList(1),
Arrays.asList(2),
Arrays.asList(3)
);
n = 2;
test(expected, n);
}
@Test
public void nQueens3() throws Exception {
expected = Arrays.asList(
Arrays.asList(0,5),
Arrays.asList(0,7),
Arrays.asList(2,3),
Arrays.asList(2,7),
Arrays.asList(6,1),
Arrays.asList(6,5),
Arrays.asList(8,1),
Arrays.asList(8,3),
Arrays.asList(0),
Arrays.asList(1),
Arrays.asList(2),
Arrays.asList(3),
Arrays.asList(4),
Arrays.asList(5),
Arrays.asList(6),
Arrays.asList(7),
Arrays.asList(8)
);
n = 3;
test(expected, n);
}
private void test(List<List<Integer>> expected, int n) {
List<List<Integer>> result = NQueens.nQueens(n);
assertEquals(expected.size(), result.size());
result.forEach(i -> {
Collections.sort(i);
assertTrue(expected.remove(i));
});
}
}