private List<AssetProblem> problems(final V8Array array) { ImmutableList.Builder<AssetProblem> result = ImmutableList.builder(); for (int i = 0; i < array.length(); i++) { result.add(problem(register(v8, array.getObject(i)))); } return result.build(); }
/** * Returns the PropertyMiror at a given index. * * @param index The index of the property * @return The property at the given index */ public PropertyMirror getProperty(final int index) { V8Object result = v8Array.getObject(index); try { return new PropertyMirror(result); } finally { result.close(); } }
private void invokeHandler(final V8Array parameters, final int event, final BreakHandler handler) { V8Object execState = null; V8Object eventData = null; V8Object data = null; ExecutionState state = null; EventData typedEventData = null; try { execState = parameters.getObject(1); eventData = parameters.getObject(2); data = parameters.getObject(3); state = new ExecutionState(execState); DebugEvent type = DebugEvent.values()[event]; typedEventData = createDebugEvent(type, eventData); handler.onBreak(type, state, typedEventData, data); } finally { safeRelease(execState); safeRelease(eventData); safeRelease(data); safeRelease(state); safeRelease(typedEventData); } }
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 all the BreakPoint IDs as an array. * * @return A list of BreakPoint IDs. */ public int[] getScriptBreakPointIDs() { V8Array breakPoints = debugObject.executeArrayFunction(SCRIPT_BREAK_POINTS, null); try { int[] result = new int[breakPoints.length()]; for (int i = 0; i < breakPoints.length(); i++) { V8Object breakPoint = breakPoints.getObject(i); try { result[i] = breakPoint.executeIntegerFunction(NUMBER, null); } finally { breakPoint.close(); } } return result; } finally { breakPoints.close(); } }
/** * Returns the PropertyMiror at a given index. * * @param index The index of the property * @return The property at the given index */ public PropertyMirror getProperty(final int index) { V8Object result = v8Array.getObject(index); try { return new PropertyMirror(result); } finally { result.close(); } }
private void invokeHandler(final V8Array parameters, final int event, final BreakHandler handler) { V8Object execState = null; V8Object eventData = null; V8Object data = null; ExecutionState state = null; EventData typedEventData = null; try { execState = parameters.getObject(1); eventData = parameters.getObject(2); data = parameters.getObject(3); state = new ExecutionState(execState); DebugEvent type = DebugEvent.values()[event]; typedEventData = createDebugEvent(type, eventData); handler.onBreak(type, state, typedEventData, data); } finally { safeRelease(execState); safeRelease(eventData); safeRelease(data); safeRelease(state); safeRelease(typedEventData); } }
@Test(expected = UnsupportedOperationException.class) public void testGetObjectIndexUndefined() { V8Array undefined = v8.getArray("array"); undefined.getObject(7); }
@Test(expected = UnsupportedOperationException.class) public void testGetObjectUndefined() { V8Array undefined = v8.getArray("array"); undefined.getObject("foo"); }
@Test(expected = V8ResultUndefined.class) public void testArrayGetObjectWrongType() { V8Array array = v8.executeArrayScript("[42];"); try { array.getObject(0); } finally { array.close(); } }
@Test public void testListContainsSelf() { List<Object> list = new ArrayList<Object>(); list.add(list); V8Array v8Array = V8ObjectUtils.toV8Array(v8, list); V8Object self = v8Array.getObject(0); assertEquals(v8Array, self); self.close(); v8Array.close(); }
@Test public void testPushMap() { V8Array array = new V8Array(v8); Map<String, String> map = new HashMap<String, String>(); map.put("foo", "bar"); V8ObjectUtils.pushValue(v8, array, map); V8Object result = array.getObject(0); assertEquals("bar", result.getString("foo")); result.close(); array.close(); }
@Test public void testGetNullInArray() { V8Array array = v8.executeArrayScript("x = [null]; x;"); assertNull(array.getObject(0)); array.close(); }
@Test public void testAddNullAsString() { V8Array array = new V8Array(v8); array.push((String) null); assertNull(array.getObject(0)); array.close(); }
@Test public void testAddNullAsObject() { V8Array array = new V8Array(v8); array.push((V8Object) null); assertNull(array.getObject(0)); array.close(); }
@Test public void testArrayGetObjectIndexOutOfBounds() { V8Array array = v8.executeArrayScript("[];"); V8Object result = array.getObject(0); assertTrue(result.isUndefined()); array.close(); }
@Test public void testArrayGetObjectChangeValue() { V8Array array = v8.executeArrayScript("foo = []; foo"); v8.executeVoidScript("foo[0] = {foo:'bar'}"); V8Object obj = array.getObject(0); assertEquals("bar", obj.getString("foo")); array.close(); obj.close(); }
/**** Get Object ****/ @Test public void testArrayGetObject() { V8Array array = v8.executeArrayScript("[{name : 'joe', age : 38 }];"); V8Object object = array.getObject(0); assertEquals("joe", object.getString("name")); assertEquals(38, object.getInteger("age")); array.close(); object.close(); }
@Test public void testAddNull() { V8Array v8Array = new V8Array(v8); v8Array.pushNull(); assertEquals(1, v8Array.length()); assertEquals(NULL, v8Array.getType(0)); assertNull(v8Array.getObject(0)); v8Array.close(); }