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(expected = UnsupportedOperationException.class) public void testGetArrayIndexUndefined() { V8Array undefined = v8.getArray("array"); undefined.getArray(7); }
@Test(expected = UnsupportedOperationException.class) public void testGetArrayUndefined() { V8Array undefined = v8.getArray("array"); undefined.getArray("foo"); }
@Test(expected = V8ResultUndefined.class) public void testArrayGetArrayWrongType() { V8Array array = v8.executeArrayScript("[42];"); try { array.getArray(0); } finally { array.close(); } }
@Test public void testPushList() { V8Array array = new V8Array(v8); List<String> list = new ArrayList<String>(); list.add("one"); V8ObjectUtils.pushValue(v8, array, list); V8Array result = array.getArray(0); assertEquals("one", result.getString(0)); result.close(); array.close(); }
/*** Get Array ***/ @Test public void testArrayGetArray() { V8Array array = v8.executeArrayScript("[[1,2,3],['first','second'],[true]];"); V8Array array1 = array.getArray(0); V8Array array2 = array.getArray(1); V8Array array3 = array.getArray(2); assertEquals(3, array1.length()); assertEquals(2, array2.length()); assertEquals(1, array3.length()); array.close(); array1.close(); array2.close(); array3.close(); }
@Test public void testAddNullAsArray() { V8Array array = new V8Array(v8); array.push((V8Array) null); assertNull(array.getArray(0)); array.close(); }
@Test public void testArrayGetArrayIndexOutOfBounds() { V8Array array = v8.executeArrayScript("[];"); V8Array result = array.getArray(0); assertTrue(result.isUndefined()); 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 testArrayGetArrayChangeValue() { V8Array array = v8.executeArrayScript("foo = []; foo"); v8.executeVoidScript("foo[0] = [1,2,3]"); V8Array array1 = array.getArray(0); assertEquals(3, array1.length()); array.close(); array1.close(); }
@Test public void testGetNestedV8Array() { v8.executeVoidScript("foo = [[1,2]]"); for (int i = 0; i < 1000; i++) { V8Array fooArray = v8.getArray("foo"); V8Array nested = fooArray.getArray(0); assertEquals(1, fooArray.length()); assertEquals(2, nested.length()); fooArray.close(); nested.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; }