mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-28 15:02:46 +08:00
refactor: redesign StringMatchFiniteAutomata
(#5222)
* refactor * add test * fix clang * fix pmd * remove main method * refactor searchPattern with private class * fix checkstyle * Update src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * fix clang * tests: add more test cases --------- Co-authored-by: Samuel Facchinello <samuel.facchinello@piksel.com> Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com>
This commit is contained in:

committed by
GitHub

parent
c7ee0e73c2
commit
9973b8efc8
@ -0,0 +1,23 @@
|
||||
package com.thealgorithms.others;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
class StringMatchFiniteAutomataTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("provideTestCases")
|
||||
void searchPattern(String text, String pattern, Set<Integer> expectedOutput) {
|
||||
assertEquals(expectedOutput, StringMatchFiniteAutomata.searchPattern(text, pattern));
|
||||
}
|
||||
|
||||
private static Stream<Arguments> provideTestCases() {
|
||||
return Stream.of(Arguments.of("abcbcabc", "abc", Set.of(0, 5)), Arguments.of("", "abc", Set.of()), Arguments.of("", "", Set.of()), Arguments.of("a", "b", Set.of()), Arguments.of("a", "a", Set.of(0)), Arguments.of("abcdabcabcabcd", "abcd", Set.of(0, 10)), Arguments.of("abc", "bcd", Set.of()),
|
||||
Arguments.of("abcdefg", "xyz", Set.of()), Arguments.of("abcde", "", Set.of(1, 2, 3, 4, 5)), Arguments.of("abcabcabc", "abc", Set.of(0, 3, 6)), Arguments.of("abcabcabc", "abcabcabc", Set.of(0)), Arguments.of("aaabbbaaa", "aaa", Set.of(0, 6)), Arguments.of("abcdefg", "efg", Set.of(4)));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user