### Question:
RippleScriptEngine implements ScriptEngine { public Object eval(final String script, final ScriptContext context) throws ScriptException { return eval(script); } RippleScriptEngine(final ScriptEngineFactory factory); @Override void finalize(); Object eval(final String script,
                       final ScriptContext context); Object eval(final Reader reader,
                       final ScriptContext context); Object eval(final String script); Object eval(final Reader reader); Object eval(final String script,
                       final Bindings n); Object eval(final Reader reader,
                       final Bindings n); void put(final String key,
                    final Object value); Object get(final String key); Bindings getBindings(final int scope); void setBindings(final Bindings bindings,
                            final int scope); Bindings createBindings(); ScriptContext getContext(); void setContext(final ScriptContext context); ScriptEngineFactory getFactory();  }### Answer:
@Test public void testSimple() throws Exception { assertEquals(5, engine.eval("2 3 add.\n")); assertEquals("foobar", engine.eval("\"foo\" \"bar\" strCat.\n")); }
@Test public void testMultipleValues() throws Exception { assertEquals(2, engine.eval("2 dup. both.\n")); }
@Test public void testNoValues() throws Exception { assertNull(engine.eval("-1 sqrt.\n")); assertNull(engine.eval("\n")); assertNull(engine.eval(".\n")); }
@Test public void testTopValueFromStack() throws Exception { assertEquals(2, engine.eval("1 2\n")); }