From 05c3b530935f0ca2f213fd41a8bfb0c786edf760 Mon Sep 17 00:00:00 2001
From: stepan <stepan.sindelar@oracle.com>
Date: Wed, 30 Aug 2017 16:57:23 +0200
Subject: [PATCH] Update interop tests

---
 .../r/test/engine/interop/AbstractMRTest.java        |  7 +++++++
 .../r/test/engine/interop/RInteropScalarMRTest.java  |  7 ++++++-
 .../truffle/r/test/engine/interop/VectorMRTest.java  | 12 ++++++++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

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 45008be104..3454f3d7ba 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 fbbcd375cc..7f4d397cc3 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 5020e8fb4b..bf7b492695 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);
-- 
GitLab