Skip to content

Commit 839c589

Browse files
author
alxkm
committed
Renaming class Subsequence to SubsequenceFinder. Refactored test to Parametrized test. Fixed input parameter as final.
1 parent 82084d8 commit 839c589

File tree

2 files changed

+20
-27
lines changed

2 files changed

+20
-27
lines changed

src/main/java/com/thealgorithms/backtracking/Subsequence.java renamed to src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
/**
77
* Class generates all subsequences for a given list of elements using backtracking
88
*/
9-
public final class Subsequence {
10-
private Subsequence() {
9+
public final class SubsequenceFinder {
10+
private SubsequenceFinder() {
1111
}
1212

1313
/**
@@ -39,7 +39,7 @@ public static <T> List<List<T>> generateAllSubsequences(List<T> sequence) {
3939
* @param allSubSequences contains all sequences
4040
* @param <T> the type of elements which we generate
4141
*/
42-
private static <T> void backtrack(List<T> sequence, List<T> currentSubsequence, int index, List<List<T>> allSubSequences) {
42+
private static <T> void backtrack(List<T> sequence, List<T> currentSubsequence, final int index, List<List<T>> allSubSequences) {
4343
if (index == sequence.size()) {
4444
allSubSequences.add(new ArrayList<>(currentSubsequence));
4545
return;
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,32 @@
11
package com.thealgorithms.backtracking;
22

3-
import static org.junit.jupiter.api.Assertions.assertEquals;
43
import static org.junit.jupiter.api.Assertions.assertIterableEquals;
54

5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.MethodSource;
7+
68
import java.util.ArrayList;
79
import java.util.List;
8-
import org.junit.jupiter.api.Test;
10+
import java.util.stream.Stream;
911

1012
public class SubsequenceTest {
1113

12-
@Test
13-
void testNoElement() {
14-
List<List<Object>> emptyResult = Subsequence.generateAllSubsequences(new ArrayList<>());
15-
assertEquals(1, emptyResult.size());
16-
assertEquals(0, emptyResult.get(0).size());
17-
}
18-
19-
@Test
20-
void testLengthOfTwo() {
21-
List<List<Integer>> expected = List.of(List.of(), List.of(2), List.of(1), List.of(1, 2));
22-
List<List<Object>> actual = Subsequence.generateAllSubsequences(List.of(1, 2));
23-
assertIterableEquals(expected, actual);
14+
@ParameterizedTest
15+
@MethodSource("getSubsequenceTestData")
16+
void testSubsequences(SubsequenceTestData testData) {
17+
List<List<Object>> actual = SubsequenceFinder.generateAllSubsequences(testData.input());
18+
assertIterableEquals(testData.expected(), actual);
2419
}
2520

26-
@Test
27-
void testLengthOfThree() {
28-
List<List<String>> expected = List.of(List.of(), List.of("C"), List.of("B"), List.of("B", "C"), List.of("A"), List.of("A", "C"), List.of("A", "B"), List.of("A", "B", "C"));
29-
List<List<Object>> actual = Subsequence.generateAllSubsequences(List.of("A", "B", "C"));
30-
assertIterableEquals(expected, actual);
21+
static Stream<SubsequenceTestData> getSubsequenceTestData() {
22+
return Stream.of(
23+
new SubsequenceTestData(new ArrayList<>(), List.of(List.of())),
24+
new SubsequenceTestData(List.of(1, 2), List.of(List.of(), List.of(2), List.of(1), List.of(1, 2))),
25+
new SubsequenceTestData(List.of("A", "B", "C"), List.of(List.of(), List.of("C"), List.of("B"), List.of("B", "C"), List.of("A"), List.of("A", "C"), List.of("A", "B"), List.of("A", "B", "C"))),
26+
new SubsequenceTestData(List.of(1, 2, 3), List.of(List.of(), List.of(3), List.of(2), List.of(2, 3), List.of(1), List.of(1, 3), List.of(1, 2), List.of(1, 2, 3)))
27+
);
3128
}
3229

33-
@Test
34-
void testLengthOfThreeInteger() {
35-
List<List<Integer>> expected = List.of(List.of(), List.of(3), List.of(2), List.of(2, 3), List.of(1), List.of(1, 3), List.of(1, 2), List.of(1, 2, 3));
36-
List<List<Object>> actual = Subsequence.generateAllSubsequences(List.of(1, 2, 3));
37-
assertIterableEquals(expected, actual);
30+
record SubsequenceTestData(List<Object> input, List<List<Object>> expected) {
3831
}
3932
}

0 commit comments

Comments
 (0)