package org.eclipse.recommenders.models; import static org.eclipse.recommenders.models.ModelIndexTestUtils.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; import java.util.Collection; import java.util.LinkedList; import org.apache.lucene.document.Document; import org.apache.lucene.store.Directory; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.recommenders.coordinates.ProjectCoordinate; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.google.common.collect.Lists; @RunWith(Parameterized.class) public class ModelIndexSuggestProjectCoordinateByArtifactIdTest { private static final String SYMBOLIC_NAME = "org.example.project"; private static final ProjectCoordinate EXPECTED = new ProjectCoordinate("org.example", "project", "1.0.0"); private final ProjectCoordinate expected; private final String symbolicName; private final Document[] indexContents; public ModelIndexSuggestProjectCoordinateByArtifactIdTest(ProjectCoordinate expected, String symbolicName, Document... indexContents) { this.expected = expected; this.symbolicName = symbolicName; this.indexContents = indexContents; } @Parameters public static Collection<Object[]> scenarios() { LinkedList<Object[]> scenarios = Lists.newLinkedList(); scenarios.add(scenario(EXPECTED, SYMBOLIC_NAME, coordinateWithSymbolicName(new DefaultArtifact("org.example:project:1.0.0"), SYMBOLIC_NAME))); scenarios.add(scenario(EXPECTED, SYMBOLIC_NAME, coordinateWithSymbolicName(new DefaultArtifact("org.example:project:1.0"), SYMBOLIC_NAME))); scenarios.add(scenario(EXPECTED, SYMBOLIC_NAME, coordinateWithSymbolicName(new DefaultArtifact("org.example:project:1.0.0.rc1"), SYMBOLIC_NAME))); return scenarios; } private static Object[] scenario(ProjectCoordinate expected, String symbolicName, Document... indexContents) { return new Object[] { expected, symbolicName, indexContents }; } @Test public void test() throws Exception { Directory index = inMemoryIndex(indexContents); IModelIndex sut = new ModelIndex(index); sut.open(); ProjectCoordinate pc = sut.suggestProjectCoordinateByArtifactId(symbolicName).get(); sut.close(); assertThat(pc, is(equalTo(expected))); } }