package com.philemonworks.critter; import java.net.URI; import org.apache.commons.io.IOUtils; import org.junit.Test; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.ScriptableObject; import com.philemonworks.critter.rule.RuleContext; public class ScriptTest { @Test public void testSum() { String source = "x = 3 + 4"; try { Context ctx = Context.enter(); Scriptable scope = ctx.initStandardObjects(); Object result = ctx.evaluateString(scope, source, "<cmd>", 1, null); System.out.println(ctx.toString(result)); } finally { Context.exit(); } } @Test public void testAccessRuleContext() throws Exception{ RuleContext rtx = new RuleContext(); rtx.forwardURI = new URI("http://here.com"); String source = "rtx.forwardURI"; try { Context ctx = Context.enter(); Scriptable scope = ctx.initStandardObjects(); Object rtx_js = Context.javaToJS(rtx, scope); ScriptableObject.putProperty(scope, "rtx", rtx_js); Object result = ctx.evaluateString(scope, source, "<cmd>", 1, null); System.out.println(ctx.toString(result)); } finally { Context.exit(); } } @Test public void testAccessScriptContext() throws Exception { RuleContext rtx = new RuleContext(); rtx.forwardURI = new URI("http://here.com"); String source = IOUtils.toString(ScriptTest.class.getResourceAsStream("/respond_xml.js")); try { Context ctx = Context.enter(); Scriptable scope = ctx.initStandardObjects(); Object rtx_js = Context.javaToJS(rtx, scope); ScriptableObject.putProperty(scope, "critter", rtx_js); Object result = ctx.evaluateString(scope, source, "<cmd>", 1, null); System.out.println(ctx.toString(result)); } catch (Exception ex) { ex.printStackTrace(); } finally { Context.exit(); } } }