@Test public void newValue_object() throws Exception { final Object obj = execute("result = {'a':1, 'b':2};"); final ScriptValue value = this.factory.newValue(obj); assertNotNull(value); assertEquals(false, value.isArray()); assertEquals(false, value.isFunction()); assertEquals(true, value.isObject()); assertEquals(false, value.isValue()); assertNonValue(value); assertNonArray(value); assertNonFunction(value); assertNotNull(value.getKeys()); assertEquals(2, value.getKeys().size()); assertEquals("a,b", Joiner.on(",").join(value.getKeys())); assertNotNull(value.getMap()); assertEquals(2, value.getMap().size()); assertNotNull(value.getMember("a")); assertEquals(1, value.getMember("a").getValue()); assertTrue(value.hasMember("a")); }
@Test public void newValue_scalar() { final ScriptValue value = this.factory.newValue("2"); assertNotNull(value); assertEquals(false, value.isArray()); assertEquals(false, value.isFunction()); assertEquals(false, value.isObject()); assertEquals(true, value.isValue()); assertEquals("2", value.getValue()); assertEquals(new Integer(2), value.getValue(Integer.class)); assertNonArray(value); assertNonObject(value); assertNonFunction(value); }
@Test public void newValue_array() throws Exception { final Object obj = execute("result = ['1', '2'];"); final ScriptValue value = this.factory.newValue(obj); assertNotNull(value); assertEquals(true, value.isArray()); assertEquals(false, value.isFunction()); assertEquals(false, value.isObject()); assertEquals(false, value.isValue()); assertNonValue(value); assertNonObject(value); assertNonFunction(value); assertNotNull(value.getArray()); assertEquals(2, value.getArray().size()); assertNotNull(value.getArray(Integer.class)); assertEquals(2, value.getArray(Integer.class).size()); assertEquals("1", value.getArray().get(0).getValue()); assertEquals("2", value.getArray().get(1).getValue()); assertEquals(new Integer(1), value.getArray(Integer.class).get(0)); assertEquals(new Integer(2), value.getArray(Integer.class).get(1)); }
@Test public void newValue_function() { final JSObject obj = Mockito.mock(JSObject.class); Mockito.when(obj.isFunction()).thenReturn(true); final ScriptValue value = this.factory.newValue(obj); assertNotNull(value); assertEquals(false, value.isArray()); assertEquals(true, value.isFunction()); assertEquals(false, value.isObject()); assertEquals(false, value.isValue()); assertNonValue(value); assertNonArray(value); assertNonObject(value); Mockito.when(this.invoker.invoke(Mockito.same(obj), Mockito.any())).thenReturn("a+b"); final ScriptValue result = value.call("a", "b"); assertNotNull(result); assertEquals(true, result.isValue()); assertEquals("a+b", result.getValue()); }