package org.dayatang.script; import org.junit.After; import org.junit.Before; import org.junit.Test; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.util.HashSet; import java.util.Set; import static org.hamcrest.CoreMatchers.hasItem; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; public class ScriptServiceTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void displayEngines() { ScriptEngineManager manager = new ScriptEngineManager(); for (ScriptEngineFactory factory : manager.getEngineFactories()) { System.out.println("Engine name: " + factory.getEngineName()); System.out.println("Engine version: " + factory.getEngineVersion()); System.out.println("Language name: " + factory.getLanguageName()); System.out.println("Language version: " + factory.getLanguageVersion()); System.out.println("\n\rLanguage Extensions: "); for (String extension : factory.getExtensions()) { System.out.println(extension); } System.out.println("\n\rMIME types: "); for (String mimeType : factory.getMimeTypes()) { System.out.println(mimeType); } System.out.println("\n\rFactory names: "); for (String name : factory.getNames()) { System.out.println(name); } System.out.println(""); System.out.println(""); } } @Test public void testConstructorWithoutArgs() { ScriptService service = new ScriptService(); String engineName = service.getEngine().getFactory().getEngineName(); assertEquals("Groovy Scripting Engine", engineName); } @Test public void testConstructorWithArgs() { ScriptService service = new ScriptService(ScriptType.GROOVY); String engineName = service.getEngine().getFactory().getEngineName(); assertEquals("Groovy Scripting Engine", engineName); service = new ScriptService(ScriptType.JS); engineName = service.getEngine().getFactory().getEngineName(); Set<String> engineNames = new HashSet<String>(); engineNames.add("Mozilla Rhino"); //Under JDK8 engineNames.add("Oracle Nashorn"); //JDK8 assertThat(engineNames, hasItem(engineName)); //assertEquals("Mozilla Rhino", engineName); } @Test public void testEvalStringGroovy() throws ScriptException { ScriptEngine engine = new ScriptService().getEngine(); String script = "System.out.println(\"Hello!!!!\");"; engine.eval(script); } @Test public void testEvalStringJavascript() throws ScriptException { ScriptEngine engine = new ScriptService(ScriptType.JS).getEngine(); //String script = "print(\"Hello!!!!\");"; String script = "eval(\"3 + 2\");"; System.out.println(engine.eval(script)); } @Test public void testEvalReader() throws ScriptException, FileNotFoundException, MalformedURLException, URISyntaxException { ScriptEngine engine = new ScriptService().getEngine(); InputStream in = getClass().getResourceAsStream("/test.groovy"); engine.eval(new InputStreamReader(in)); } }