| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import static org.assertj.core.api.Assertions.assertThat;
-
- import java.util.Arrays;
- import java.util.List;
- import org.junit.Test;
-
- public class AnagramTest {
-
- @Test
- public void testNoMatches() {
- Anagram detector = new Anagram("diaper");
- assertThat(detector.match(Arrays.asList("hello", "world", "zombies", "pants"))).isEmpty();
- }
-
- @Test
- public void testSimpleAnagram() {
- Anagram detector = new Anagram("ant");
- List<String> anagram = detector.match(Arrays.asList("tan", "stand", "at"));
- assertThat(anagram).containsExactly("tan");
- }
-
- @Test
- public void testDetectMultipleAnagrams() {
- Anagram detector = new Anagram("master");
- List<String> anagrams = detector.match(Arrays.asList("stream", "pigeon", "maters"));
- assertThat(anagrams).contains("maters", "stream");
- }
-
- @Test
- public void testDoesNotConfuseDifferentDuplicates() {
- Anagram detector = new Anagram("galea");
- List<String> anagrams = detector.match(Arrays.asList("eagle"));
- assertThat(anagrams).isEmpty();
- }
-
- @Test
- public void testIdenticalWordIsNotAnagram() {
- Anagram detector = new Anagram("corn");
- List<String> anagrams = detector.match(Arrays.asList("corn", "dark", "Corn", "rank", "CORN", "cron", "park"));
- assertThat(anagrams).containsExactly("cron");
- }
-
- @Test
- public void testEliminateAnagramsWithSameChecksum() {
- Anagram detector = new Anagram("mass");
- assertThat(detector.match(Arrays.asList("last")).isEmpty());
- }
-
- @Test
- public void testEliminateAnagramSubsets() {
- Anagram detector = new Anagram("good");
- assertThat(detector.match(Arrays.asList("dog", "goody"))).isEmpty();
- }
-
- @Test
- public void testDetectAnagrams() {
- Anagram detector = new Anagram("listen");
- List<String> anagrams = detector.match(Arrays.asList("enlists", "google", "inlets", "banana"));
- assertThat(anagrams).contains("inlets");
- }
-
- @Test
- public void testMultipleAnagrams() {
- Anagram detector = new Anagram("allergy");
- List<String> anagrams = detector.match(Arrays.asList("gallery", "ballerina", "regally", "clergy", "largely", "leading"));
- assertThat(anagrams).contains("gallery", "largely", "regally");
- }
-
- @Test
- public void testAnagramsAreCaseInsensitive() {
- Anagram detector = new Anagram("Orchestra");
- List<String> anagrams = detector.match(Arrays.asList("cashregister", "Carthorse", "radishes"));
- assertThat(anagrams).contains("Carthorse");
- }
-
- }
|