package com.github.jknack.antlr4ide; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertTrue; import java.io.File; import java.net.MalformedURLException; import org.eclipse.core.runtime.Path; import org.junit.Test; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import com.github.jknack.antlr4ide.generator.Distributions; import com.github.jknack.antlr4ide.generator.ToolOptionsProvider; public class ActivatorTest { @Test public void start() throws MalformedURLException { String path = "lib/" + ToolOptionsProvider.DEFAULT_TOOL; String runtime = "lib/antlr4ide.runtime.jar"; File[] jars = {new File(Distributions.defaultDistribution().getValue()), new File(System.getProperty("java.io.tmpdir"), "antlr4ide.runtime.jar") }; for (File jar : jars) { jar.delete(); } Bundle bundle = createMock(Bundle.class); BundleContext context = createMock(BundleContext.class); expect(context.getBundle()).andReturn(bundle).times(2); expect(bundle.getSymbolicName()).andReturn("antlr4ide.core"); expect(bundle.getResource(path)).andReturn( Path.fromOSString("..").append("antlr4ide.core").append("lib") .append(ToolOptionsProvider.DEFAULT_TOOL). toFile().toURI().toURL()); expect(bundle.getResource(runtime)).andReturn( Path.fromOSString("..").append("antlr4ide.core").append("lib") .append("antlr4ide.runtime.jar"). toFile().toURI().toURL()); Object[] mocks = {context, bundle }; replay(mocks); new Activator().start(context); // must be created again for (File jar : jars) { assertTrue(jar.exists()); } verify(mocks); } }