| 7 | import org.junit.jupiter.params.provider.MethodSource; |
| 8 | |
| 9 | public class AnagramsTest { |
| 10 | |
| 11 | record AnagramTestCase(String input1, String input2, boolean expected) { |
| 12 | } |
| 13 | |
| 14 | private static Stream<AnagramTestCase> anagramTestData() { |
| 15 | 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), |
| 16 | new AnagramTestCase("binary", "brainy", true), new AnagramTestCase("adobe", "abode", true), new AnagramTestCase("cat", "act", true), new AnagramTestCase("cat", "cut", false), new AnagramTestCase("Listen", "Silent", true), new AnagramTestCase("Dormitory", "DirtyRoom", true), |
| 17 | new AnagramTestCase("Schoolmaster", "TheClassroom", true), new AnagramTestCase("Astronomer", "MoonStarer", true), new AnagramTestCase("Conversation", "VoicesRantOn", true)); |
| 18 | } |
| 19 | |
| 20 | @ParameterizedTest |
| 21 | @MethodSource("anagramTestData") |
| 22 | void testApproach1(AnagramTestCase testCase) { |
| 23 | assertEquals(testCase.expected(), Anagrams.areAnagramsBySorting(testCase.input1(), testCase.input2())); |
| 24 | } |
| 25 | |
| 26 | @ParameterizedTest |
| 27 | @MethodSource("anagramTestData") |
| 28 | void testApproach2(AnagramTestCase testCase) { |
| 29 | assertEquals(testCase.expected(), Anagrams.areAnagramsByCountingChars(testCase.input1(), testCase.input2())); |
| 30 | } |
| 31 | |
| 32 | @ParameterizedTest |
| 33 | @MethodSource("anagramTestData") |
| 34 | void testApproach3(AnagramTestCase testCase) { |
| 35 | assertEquals(testCase.expected(), Anagrams.areAnagramsByCountingCharsSingleArray(testCase.input1(), testCase.input2())); |
| 36 | } |
| 37 | |
| 38 | @ParameterizedTest |
| 39 | @MethodSource("anagramTestData") |
| 40 | void testApproach4(AnagramTestCase testCase) { |
| 41 | assertEquals(testCase.expected(), Anagrams.areAnagramsUsingHashMap(testCase.input1(), testCase.input2())); |
| 42 | } |
| 43 | |
| 44 | @ParameterizedTest |
| 45 | @MethodSource("anagramTestData") |
| 46 | void testApproach5(AnagramTestCase testCase) { |
| 47 | assertEquals(testCase.expected(), Anagrams.areAnagramsBySingleFreqArray(testCase.input1(), testCase.input2())); |
| 48 | } |
| 49 | } |
nothing calls this directly
no outgoing calls
no test coverage detected