package org.archive.crawler.restlet; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import junit.framework.TestCase; import org.archive.crawler.framework.CrawlJob; import org.archive.spring.PathSharingContext; public class ScriptingConsoleTest extends TestCase { // barebone CrawlJob object. public static class TestCrawlJob extends CrawlJob { public TestCrawlJob() { super(null); this.ac = new PathSharingContext(new String[0]); } @Override protected void scanJobLog() { } } CrawlJob cj; ScriptingConsole sc; protected void setUp() throws Exception { super.setUp(); cj = new TestCrawlJob(); sc = new ScriptingConsole(cj); } public void testInitialState() { assertEquals("script is empty", "", sc.getScript()); assertNull("exception is null", sc.getException()); } public void testExecute() { final String script = "rawOut.println 'elk'"; final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngine eng = manager.getEngineByName("groovy"); sc.execute(eng, script); assertNull("exception is null", sc.getException()); assertEquals("has the same script", sc.getScript(), script); assertEquals("linesExecuted", 1, sc.getLinesExecuted()); assertEquals("rawOut", "elk\n", sc.getRawOutput()); } public void testExecuteError() { final String script = "rawOut.println undef"; final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngine eng = manager.getEngineByName("groovy"); sc.execute(eng, script); assertNotNull("exception is non-null", sc.getException()); assertEquals("rawOut", "", sc.getRawOutput()); assertEquals("linesExecuted", 0, sc.getLinesExecuted()); // extra test - it is okay to fail this test is okay because // ScriptingConsole is single-use now. sc.execute(eng, "rawOut.println 1"); assertNull("exception is cleared", sc.getException()); } }