diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java index 45008be104c4d2adfb65bbbe0a174ed2fd1fb3f4..3454f3d7ba20a1cf4e18f8cd0aff8b9712811f65 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/AbstractMRTest.java @@ -91,6 +91,10 @@ public abstract class AbstractMRTest { return false; } + protected boolean testToNative(TruffleObject obj) { + return true; + } + protected int getSize(@SuppressWarnings("unused") TruffleObject obj) { throw new UnsupportedOperationException("override if hasSize returns true"); } @@ -123,6 +127,9 @@ public abstract class AbstractMRTest { @Test public void testNativePointer() throws Exception { for (TruffleObject obj : createTruffleObjects()) { + if (!testToNative(obj)) { + continue; + } try { assertTrue(obj.getClass().getSimpleName(), ForeignAccess.sendToNative(Message.TO_NATIVE.createNode(), obj) == obj); } catch (UnsupportedMessageException unsupportedMessageException) { diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RInteropScalarMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RInteropScalarMRTest.java index fbbcd375cc9765f0ccca69862527eacc5a4cc9d0..7f4d397cc389a4befc9e5744089326c739c8644b 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RInteropScalarMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/RInteropScalarMRTest.java @@ -26,13 +26,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import org.junit.Assert; import org.junit.Test; import com.oracle.truffle.api.interop.ForeignAccess; import com.oracle.truffle.api.interop.Message; import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.r.runtime.data.RInteropScalar; -import org.junit.Assert; public class RInteropScalarMRTest extends AbstractMRTest { @@ -67,6 +67,11 @@ public class RInteropScalarMRTest extends AbstractMRTest { return true; } + @Override + protected boolean isPointer(TruffleObject obj) { + return false; + } + @Override protected Object getUnboxed(TruffleObject obj) { RInteropScalar is = (RInteropScalar) obj; diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/VectorMRTest.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/VectorMRTest.java index 5020e8fb4b505e5a7a3f448230aa5856b89fb6a6..bf7b4926955fd311f382f063bc3d9a1500c0ec2c 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/VectorMRTest.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/interop/VectorMRTest.java @@ -37,6 +37,8 @@ import com.oracle.truffle.api.interop.UnsupportedMessageException; import com.oracle.truffle.api.interop.java.JavaInterop; import com.oracle.truffle.api.source.Source; import com.oracle.truffle.r.runtime.data.RDataFactory; +import com.oracle.truffle.r.runtime.data.RObject; +import com.oracle.truffle.r.runtime.data.RVector; import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector; import com.oracle.truffle.r.runtime.data.model.RAbstractVector; @@ -101,6 +103,11 @@ public class VectorMRTest extends AbstractMRTest { return create("as.numeric()"); } + @Override + protected boolean testToNative(TruffleObject obj) { + return obj instanceof RObject; + } + @Override protected boolean isBoxed(TruffleObject obj) { return ((RAbstractVector) obj).getLength() == 1; @@ -122,6 +129,11 @@ public class VectorMRTest extends AbstractMRTest { return ((RAbstractVector) obj).getLength(); } + @Override + protected boolean isPointer(TruffleObject obj) { + return obj instanceof RVector<?>; + } + private static TruffleObject create(String createTxt) throws Exception { Source src = Source.newBuilder(createTxt).mimeType("text/x-r").name("test.R").build(); return engine.eval(src).as(RAbstractVector.class);