public void testMultiDimensionalArrayWithUnfilledDimensions() { // Set up array type TyClass objectClass = makeStubObjectClass(); TyJavaArray tax = new TyJavaArray("", objectClass); TyJavaArray tay = new TyJavaArray("", objectClass); TyJavaArray taz = new TyJavaArray("", objectClass); TyPointer tpx = new TyPointer(); TyPointer tpy = new TyPointer(); TyInt intType = TyInt.get(); taz.addToEnd(intType); tpy.addToEnd(taz); tay.addToEnd(tpy); tpx.addToEnd(tay); tax.addToEnd(tpx); // Set up NodeList NodeList dimensions = new NodeList(); ConstInt x = new ConstInt(TyInt.get(), "3", 3); ConstInt y = new ConstInt(TyInt.get(), "4", 4); dimensions.addLastChild(x); dimensions.addLastChild(y); TyPointer tp = new TyPointer(); tp.addToEnd(tax); ExpNewArray exp = new ExpNewArray(tp, dimensions); PointerDatum thePointer = runTest(exp); assertTrue(thePointer.deref() != null); assertTrue(thePointer.deref() instanceof ArrayDatum); ArrayDatum ax = (ArrayDatum) thePointer.deref(); assertEquals(3, ((IntDatum) ax.getLength()).getValue()); for (int i = 0; i < 3; i++) { assertTrue(ax.getElement(i) instanceof PointerDatum); PointerDatum px = (PointerDatum) ax.getElement(i); assertTrue(px.deref() instanceof ArrayDatum); ArrayDatum ay = (ArrayDatum) px.deref(); assertEquals(4, ((IntDatum) ay.getLength()).getValue()); for (int j = 0; j < 4; j++) { assertTrue(ay.getElement(j) instanceof PointerDatum); PointerDatum py = (PointerDatum) ay.getElement(j); assertTrue(py.isNull()); } } }