import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.*;
public class GenerateSubsetsKTest {
private List<List<Integer>> expected;
private int n;
private int k;
@Test
public void combinations1() throws Exception {
expected = Arrays.asList(
Arrays.asList(1,2),
Arrays.asList(1,3),
Arrays.asList( 2,3)
);
n = 3;
k = 2;
test(expected, n, k);
}
@Test
public void combinations2() throws Exception {
expected = Arrays.asList(
Arrays.asList(1,2,3),
Arrays.asList(1,2,4),
Arrays.asList(1,3,4),
Arrays.asList(2,3,4)
);
n = 4;
k = 3;
test(expected, n, k);
}
@Test
public void combinations3() throws Exception {
expected = Arrays.asList(
Arrays.asList(1,2),
Arrays.asList(1,3),
Arrays.asList(1,4),
Arrays.asList(1,5),
Arrays.asList(2,3),
Arrays.asList(2,4),
Arrays.asList(2,5),
Arrays.asList(3,4),
Arrays.asList(3,5),
Arrays.asList(4,5)
);
n = 5;
k = 2;
test(expected, n, k);
}
private void test(List<List<Integer>> expected, int n, int k) {
List<List<Integer>> result = GenerateSubsetsK.combinations(n,k);
assertEquals(expected.size(), result.size());
result.forEach(i -> {
Collections.sort(i);
assertTrue(expected.remove(i));
});
}
}