refactor: Anagrams (#5390)

This commit is contained in:
Alex Klymenko
2024-08-26 07:26:01 +02:00
committed by GitHub
parent 7e9cdad3ee
commit 93e417544d
2 changed files with 151 additions and 137 deletions

View File

@ -1,23 +1,48 @@
package com.thealgorithms.strings;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import java.util.stream.Stream;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
public class AnagramsTest {
@Test
public void isAlphabetical() {
String input1 = "late";
Anagrams anagrams = new Anagrams();
assertTrue(anagrams.approach1(input1, "tale"));
assertTrue(anagrams.approach1(input1, "teal"));
assertTrue(anagrams.approach2(input1, "tale"));
assertTrue(anagrams.approach2(input1, "teal"));
assertTrue(anagrams.approach3(input1, "tale"));
assertTrue(anagrams.approach3(input1, "teal"));
assertTrue(anagrams.approach4(input1, "tale"));
assertTrue(anagrams.approach4(input1, "teal"));
assertTrue(anagrams.approach5(input1, "teal"));
record AnagramTestCase(String input1, String input2, boolean expected) {
}
private static Stream<AnagramTestCase> anagramTestData() {
return Stream.of(new AnagramTestCase("late", "tale", true), new AnagramTestCase("late", "teal", true), new AnagramTestCase("listen", "silent", true), new AnagramTestCase("hello", "olelh", true), new AnagramTestCase("hello", "world", false), new AnagramTestCase("deal", "lead", true),
new AnagramTestCase("binary", "brainy", true), new AnagramTestCase("adobe", "abode", true), new AnagramTestCase("cat", "act", true), new AnagramTestCase("cat", "cut", false));
}
@ParameterizedTest
@MethodSource("anagramTestData")
void testApproach1(AnagramTestCase testCase) {
assertEquals(testCase.expected(), Anagrams.approach1(testCase.input1(), testCase.input2()));
}
@ParameterizedTest
@MethodSource("anagramTestData")
void testApproach2(AnagramTestCase testCase) {
assertEquals(testCase.expected(), Anagrams.approach2(testCase.input1(), testCase.input2()));
}
@ParameterizedTest
@MethodSource("anagramTestData")
void testApproach3(AnagramTestCase testCase) {
assertEquals(testCase.expected(), Anagrams.approach3(testCase.input1(), testCase.input2()));
}
@ParameterizedTest
@MethodSource("anagramTestData")
void testApproach4(AnagramTestCase testCase) {
assertEquals(testCase.expected(), Anagrams.approach4(testCase.input1(), testCase.input2()));
}
@ParameterizedTest
@MethodSource("anagramTestData")
void testApproach5(AnagramTestCase testCase) {
assertEquals(testCase.expected(), Anagrams.approach5(testCase.input1(), testCase.input2()));
}
}