package alien4cloud.suggestions.services; import java.util.Arrays; import java.util.HashSet; import alien4cloud.model.common.AbstractSuggestionEntry; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import alien4cloud.dao.IGenericSearchDAO; import alien4cloud.model.common.SuggestionEntry; import alien4cloud.suggestions.services.SuggestionService; @Slf4j public class SuggestionServicesTest { @Test public void testSuggestionMatching() { SuggestionService suggestionService = new SuggestionService(); IGenericSearchDAO alienDAO = Mockito.mock(IGenericSearchDAO.class); suggestionService.setAlienDAO(alienDAO); SuggestionEntry suggestionEntry = new SuggestionEntry(); suggestionEntry.setSuggestions(new HashSet<>(Arrays.asList("ubuntu", "windows xp", "kubuntu", "windows 2000", "gentoo", "mint", "debian"))); Mockito.when(alienDAO.findById(AbstractSuggestionEntry.class, "")).thenReturn(suggestionEntry); String[] matches = suggestionService.getJaroWinklerMatchedSuggestions("", "u", Integer.MAX_VALUE); Assert.assertEquals(1, matches.length); Assert.assertEquals("ubuntu", matches[0]); log.info("Matches for 'u': {}", Arrays.asList(matches)); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "ub", 2); Assert.assertEquals(2, matches.length); Assert.assertEquals("ubuntu", matches[0]); Assert.assertEquals("kubuntu", matches[1]); log.info("Matches for 'ub': {}", Arrays.asList(matches)); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "wtn d ow spp", Integer.MAX_VALUE); log.info("Matches for 'wtn d ow spp': {}", Arrays.asList(matches)); Assert.assertEquals("windows xp", matches[0]); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "guntoo", Integer.MAX_VALUE); log.info("Matches for 'guntoo': {}", Arrays.asList(matches)); Assert.assertEquals("gentoo", matches[0]); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "mt", Integer.MAX_VALUE); log.info("Matches for 'mt': {}", Arrays.asList(matches)); Assert.assertEquals("mint", matches[0]); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "Windows", Integer.MAX_VALUE); log.info("Matches for 'Windows': {}", Arrays.asList(matches)); Assert.assertEquals(7, matches.length); Assert.assertEquals("windows xp", matches[0]); Assert.assertEquals("windows 2000", matches[1]); matches = suggestionService.getJaroWinklerMatchedSuggestions("", "", 5); log.info("Matches for blank: {}", Arrays.asList(matches)); Assert.assertEquals(5, matches.length); } }