private Object getArrayItem(final V8Array array, final int index) { try { int type = array.getType(index); switch (type) { case INTEGER: return array.getInteger(index); case DOUBLE: return array.getDouble(index); case BOOLEAN: return array.getBoolean(index); case STRING: return array.getString(index); case V8_ARRAY: case V8_TYPED_ARRAY: return array.getArray(index); case V8_OBJECT: return array.getObject(index); case V8_FUNCTION: return array.getObject(index); case V8_ARRAY_BUFFER: return array.get(index); case UNDEFINED: return V8.getUndefined(); } } catch (V8ResultUndefined e) { // do nothing } return null; }
/*** Get Boolean ***/ @Test public void testArrayGetBoolean() { V8Array array = v8.executeArrayScript("[true,false,false];"); assertTrue(array.getBoolean(0)); assertFalse(array.getBoolean(1)); assertFalse(array.getBoolean(2)); array.close(); }
@Test(expected = UnsupportedOperationException.class) public void testGetBooleanUndefined() { V8Array undefined = v8.getArray("array"); undefined.getBoolean("foo"); }
@Test(expected = UnsupportedOperationException.class) public void testGetBooleanIndexUndefined() { V8Array undefined = v8.getArray("array"); undefined.getBoolean(7); }
@Test(expected = V8ResultUndefined.class) public void testArrayGetBooleanIndexOutOfBounds() { V8Array array = v8.executeArrayScript("[];"); try { array.getBoolean(0); } finally { array.close(); } }
@Test(expected = V8ResultUndefined.class) public void testArrayGetBooleanWrongType() { V8Array array = v8.executeArrayScript("['string'];"); try { array.getBoolean(0); } finally { array.close(); } }
@Test public void testAddBoolean() { V8Array array = new V8Array(v8); array.push(true); array.push(false); assertEquals(2, array.length()); assertTrue(array.getBoolean(0)); assertFalse(array.getBoolean(1)); array.close(); }
@Test public void testPushBoolean() { V8Array array = new V8Array(v8); V8ObjectUtils.pushValue(v8, array, true); assertTrue(array.getBoolean(0)); array.close(); }
@Test public void testArrayGetBooleanChangeValue() { V8Array array = v8.executeArrayScript("foo = []; foo;"); v8.executeVoidScript("foo[0] = true"); assertTrue(array.getBoolean(0)); array.close(); }
private Object getArrayItem(final V8Array array, final int index) { try { int type = array.getType(index); switch (type) { case INTEGER: return array.getInteger(index); case DOUBLE: return array.getDouble(index); case BOOLEAN: return array.getBoolean(index); case STRING: return array.getString(index); case V8_ARRAY: case V8_TYPED_ARRAY: return array.getArray(index); case V8_OBJECT: return array.getObject(index); case V8_FUNCTION: return array.getObject(index); case V8_ARRAY_BUFFER: return array.get(index); case UNDEFINED: return V8.getUndefined(); } } catch (V8ResultUndefined e) { // do nothing } return null; }
@Test public void testAddToExistingArray() { V8Array array = v8.executeArrayScript("[1,2,3,,5];"); array.push(false); assertEquals(6, array.length()); assertFalse(array.getBoolean(5)); array.close(); }
@Test public void testArrayFunctionCallOnObject() { v8.executeVoidScript("function add(x, y) {return [x,y];}"); v8.executeVoidScript("adder = {};"); v8.executeVoidScript("adder.addFuction = add;"); V8Object object = v8.getObject("adder"); V8Array parameters = new V8Array(v8); parameters.push(true); parameters.push(false); V8Array result = object.executeArrayFunction("addFuction", parameters); parameters.close(); assertFalse(result.getBoolean(1)); assertTrue(result.getBoolean(0)); result.close(); object.close(); }
@Test public void testAddMixedValues() { V8Array array = new V8Array(v8); array.push(true); array.push(false); array.push(1); array.push("string"); array.push(false); array.pushUndefined(); assertEquals(6, array.length()); assertTrue(array.getBoolean(0)); assertFalse(array.getBoolean(1)); assertEquals(1, array.getInteger(2)); assertEquals("string", array.getString(3)); assertFalse(array.getBoolean(4)); assertEquals(UNDEFINED, array.getType(5)); array.close(); }
@Test public void testArrayFunctionCall() { v8.executeVoidScript("function add(a,b,c,d) {return [a,b,c,d];}"); V8Array parameters = new V8Array(v8); parameters.push(true); parameters.push(false); parameters.push(7); parameters.push("foo"); V8Array result = v8.executeArrayFunction("add", parameters); assertTrue(result.getBoolean(0)); assertFalse(result.getBoolean(1)); assertEquals(7, result.getInteger(2)); assertEquals("foo", result.getString(3)); parameters.close(); result.close(); }
/**** Mixed Array ****/ @Test public void testMixedArray() { V8Array array = v8.executeArrayScript("['a', 3, 3.1, true];"); assertEquals(4, array.length()); assertEquals("a", array.getString(0)); assertEquals(3, array.getInteger(1)); assertEquals(3.1, array.getDouble(2), 0.00001); assertTrue(array.getBoolean(3)); array.close(); }
private Object getArrayItem(final V8Array array, final int index) { try { int type = array.getType(index); switch (type) { case INTEGER: return array.getInteger(index); case DOUBLE: return array.getDouble(index); case BOOLEAN: return array.getBoolean(index); case STRING: return array.getString(index); case V8_ARRAY: case V8_TYPED_ARRAY: return array.getArray(index); case V8_OBJECT: return array.getObject(index); case V8_FUNCTION: return array.getObject(index); case V8_ARRAY_BUFFER: return array.get(index); case UNDEFINED: return V8.getUndefined(); } } catch (V8ResultUndefined e) { // do nothing } return null; }
private Object getArrayItem(final V8Array array, final int index) { try { int type = array.getType(index); switch (type) { case INTEGER: return array.getInteger(index); case DOUBLE: return array.getDouble(index); case BOOLEAN: return array.getBoolean(index); case STRING: return array.getString(index); case V8_ARRAY: case V8_TYPED_ARRAY: return array.getArray(index); case V8_OBJECT: return array.getObject(index); case V8_FUNCTION: return array.getObject(index); case V8_ARRAY_BUFFER: return array.get(index); case UNDEFINED: return V8.getUndefined(); } } catch (V8ResultUndefined e) { // do nothing } return null; }
return array.getDouble(index); case V8Value.BOOLEAN: return array.getBoolean(index); case V8Value.STRING: return array.getString(index);
return array.getDouble(index); case V8Value.BOOLEAN: return array.getBoolean(index); case V8Value.STRING: return array.getString(index);