package org.xrepl.ui.tests; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.jdt.core.JavaCore; import org.eclipse.xtext.Constants; import org.eclipse.xtext.resource.XtextResourceSet; import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; import org.xrepl.ui.WorkspaceAwareEvaluator; import org.xrepl.ui.XreplWorkspaceResourceSetProvider; import org.xrepl.xscript.XscriptInterpreter; import org.xrepl.xscript.ui.internal.XscriptActivator; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.name.Named; public class WorkspaceEvaluatorTest { private WorkspaceAwareEvaluator fixture; private ResourceSet resourceSet = new XtextResourceSet(); @Inject private XscriptInterpreter interpreter; @Inject private IWorkspaceRoot workspace; @Inject @Named(Constants.FILE_EXTENSIONS) private String fileExtension; @Inject private XreplWorkspaceResourceSetProvider resourceSetProvider; @Before public void setUp() throws Exception { Injector injector = XscriptActivator.getInstance().getInjector("org.xrepl.xscript.Xscript"); injector.injectMembers(this); for(IProject project : workspace.getProjects()){ project.delete(true, new NullProgressMonitor()); } fixture = new WorkspaceAwareEvaluator(interpreter, resourceSetProvider, fileExtension); } @Test public void shouldCreateAHiddenJavaProject() throws Throwable { assertThat(xreplProject().exists(), is(false)); fixture.evaluate("1"); assertThat(xreplProject().exists(), is(true)); assertThat(JavaCore.create(xreplProject()), is(CoreMatchers.notNullValue())); } @Test public void shouldCreateResourcesInProject() throws Throwable { fixture.evaluate("1"); assertThat(resourceUri().contains(xreplProjectName()), is(true)); } @Test public void shouldResolveClassPath() throws Throwable { fixture.evaluate("1 + 1"); } private String resourceUri() { return resourceSet.getResources().get(0).getURI().trimFileExtension().toString(); } private IProject xreplProject() { return workspace.getProject(xreplProjectName()); } private String xreplProjectName() { return "." + fileExtension; } }