|
1 | 1 | package com.thealgorithms.backtracking;
|
2 | 2 |
|
3 |
| -import static org.junit.jupiter.api.Assertions.assertEquals; |
4 | 3 | import static org.junit.jupiter.api.Assertions.assertIterableEquals;
|
5 | 4 |
|
| 5 | +import org.junit.jupiter.params.ParameterizedTest; |
| 6 | +import org.junit.jupiter.params.provider.MethodSource; |
| 7 | + |
6 | 8 | import java.util.ArrayList;
|
7 | 9 | import java.util.List;
|
8 |
| -import org.junit.jupiter.api.Test; |
| 10 | +import java.util.stream.Stream; |
9 | 11 |
|
10 | 12 | public class SubsequenceTest {
|
11 | 13 |
|
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); |
24 | 19 | }
|
25 | 20 |
|
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 | + ); |
31 | 28 | }
|
32 | 29 |
|
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) { |
38 | 31 | }
|
39 | 32 | }
|
0 commit comments