package org.eclipse.recommenders.internal.types.rcp; import static java.io.File.separatorChar; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.*; import org.eclipse.jdt.core.IJavaProject; import org.hamcrest.Matchers; import org.junit.Test; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; public class IndexProviderTest { @Test public void testSimpleName() { IJavaProject project = mockProject("Project"); String actual = IndexProvider.ProjectTypesIndexCacheLoader.computeIndexDir(project).getAbsolutePath(); String expected = constructPath("Project"); assertThat(actual, Matchers.endsWith(expected)); } @Test public void testMangledName() { IJavaProject project = mockProject("Project with\tWhitespace"); String actual = IndexProvider.ProjectTypesIndexCacheLoader.computeIndexDir(project).getAbsolutePath(); String expected = constructPath("Project_with_Whitespace"); assertThat(actual, Matchers.endsWith(expected)); } private IJavaProject mockProject(String name) { IJavaProject project = mock(IJavaProject.class); when(project.getElementName()).thenReturn(name); return project; } private String constructPath(String mangledName) { StringBuilder sb = new StringBuilder(); sb.append(".metadata").append(separatorChar).append(".plugins").append(separatorChar); Bundle bundle = FrameworkUtil.getBundle(IndexProvider.class); sb.append(bundle.getSymbolicName()).append(separatorChar); sb.append(IndexProvider.INDEX_DIR).append(separatorChar); sb.append(mangledName); return sb.toString(); } }