dpaukov / combinatoricslib3

Combinatorial objects stream generators for Java.
Apache License 2.0
177 stars 24 forks source link

IndexOutOfBoundsException when generating permutation for empty list #19

Closed nstdio closed 2 years ago

nstdio commented 2 years ago
@Test
public void test_zero_permutation_of_empty_with_repetition() {
  List<List<Object>> permutations = Generator.permutation(Collections.emptyList())
      .withRepetitions(0)
      .stream()
      .collect(toList());

  assertThat(permutations).isEmpty();
}

Expected: test should ✓ Actual: java.lang.IndexOutOfBoundsException

java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    <3 internal lines>
    at java.base/java.util.Objects.checkIndex(Objects.java:359)
    at java.base/java.util.ArrayList.get(ArrayList.java:427)
    at org.paukov.combinatorics3.PermutationWithRepetitionIterator.<init>(PermutationWithRepetitionIterator.java:24)
    at org.paukov.combinatorics3.PermutationWithRepetitionGenerator.iterator(PermutationWithRepetitionGenerator.java:29)
    at org.paukov.combinatorics3.PermutationWithRepetitionGenerator.stream(PermutationWithRepetitionGenerator.java:34)
    at org.paukov.combinatorics3.PermutationsWithRepetitionsTest.test_zero_permutation_of_empty_with_repetition(PermutationsWithRepetitionsTest.java:89)
dpaukov commented 2 years ago

The change is available in version 3.3.3.