Skip to content
Snippets Groups Projects
Commit 7762e930 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

[GR-5181] Do not create new engines for message resolution tests.

PullRequest: fastr/1105
parents a0ba635d 6093e52e
No related branches found
No related tags found
No related merge requests found
Showing
with 54 additions and 63 deletions
......@@ -27,16 +27,33 @@ import com.oracle.truffle.api.interop.InteropException;
import com.oracle.truffle.api.interop.Message;
import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.ffi.impl.interop.NativePointer;
import java.util.HashSet;
import java.util.Set;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public abstract class AbstractMRTest {
protected static PolyglotEngine engine;
@BeforeClass
public static void before() {
engine = PolyglotEngine.newBuilder().build();
}
@AfterClass
public static void after() {
engine.dispose();
}
/**
* Create TruffleObject-s to be rudimentary tested for IS_NULL, IS_BOXED/UNBOX, IS_EXECUTABLE,
* IS_POINTER, HAS_SIZE/GET_SIZE/KEYS behavior.
......
......@@ -43,7 +43,6 @@ public class ActiveBindingMRTest extends AbstractMRTest {
@Override
protected TruffleObject[] createTruffleObjects() throws Exception {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
Source src = Source.newBuilder("f=function() {}").mimeType("text/x-r").name("test.R").build();
PolyglotEngine.Value result = engine.eval(src);
RFunction fn = result.as(RFunction.class);
......
......@@ -22,6 +22,12 @@
*/
package com.oracle.truffle.r.test.engine.interop;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.KeyInfo;
import com.oracle.truffle.api.interop.Message;
......@@ -30,9 +36,6 @@ import com.oracle.truffle.api.interop.UnknownIdentifierException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.interop.UnsupportedTypeException;
import com.oracle.truffle.api.interop.java.JavaInterop;
import org.junit.Test;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.ffi.impl.interop.NativePointer;
......@@ -40,18 +43,10 @@ import com.oracle.truffle.r.runtime.data.RList;
import com.oracle.truffle.r.runtime.data.RNull;
import com.oracle.truffle.r.runtime.data.RPairList;
import com.oracle.truffle.r.runtime.data.model.RAbstractContainer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ListMRTest extends AbstractMRTest {
private String testValues = "i=1L, d=2.1, b=TRUE, fn=function() {}, n=NULL, 4";
private final PolyglotEngine engine;
public ListMRTest() {
engine = PolyglotEngine.newBuilder().build();
}
@Override
@Test
......@@ -157,7 +152,7 @@ public class ListMRTest extends AbstractMRTest {
assertFalse(KeyInfo.isInternal(info));
}
private RAbstractContainer create(String createFun, String values) {
private static RAbstractContainer create(String createFun, String values) {
Source src = Source.newBuilder(createFun + "(" + values + ")").mimeType("text/x-r").name("test.R").build();
PolyglotEngine.Value result = engine.eval(src);
return result.as(RAbstractContainer.class);
......@@ -188,5 +183,4 @@ public class ListMRTest extends AbstractMRTest {
protected int getSize(TruffleObject obj) {
return obj instanceof RList ? ((RList) obj).getLength() : ((RPairList) obj).getLength();
}
}
......@@ -132,7 +132,6 @@ public class RArgsValuesAndNamesMRTest extends AbstractMRTest {
@Override
protected TruffleObject[] createTruffleObjects() throws Exception {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
Source src = Source.newBuilder("f=function() {}").mimeType("text/x-r").name("test.R").build();
PolyglotEngine.Value result = engine.eval(src);
RFunction fn = result.as(RFunction.class);
......@@ -159,5 +158,4 @@ public class RArgsValuesAndNamesMRTest extends AbstractMRTest {
protected int getSize(TruffleObject obj) {
return ((RArgsValuesAndNames) obj).getLength();
}
}
......@@ -22,6 +22,12 @@
*/
package com.oracle.truffle.r.test.engine.interop;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.KeyInfo;
import com.oracle.truffle.api.interop.Message;
......@@ -29,15 +35,8 @@ import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.interop.UnknownIdentifierException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.interop.java.JavaInterop;
import org.junit.Test;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.runtime.env.REnvironment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class REnvironmentMRTest extends AbstractMRTest {
......@@ -133,7 +132,6 @@ public class REnvironmentMRTest extends AbstractMRTest {
@Override
protected TruffleObject[] createTruffleObjects() throws Exception {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
Source src = Source.newBuilder("e <- new.env(); e$s <- 'aaa'; e$i <- 123L; e$d <- 123.1; e$b <- TRUE; e$fn <- function() {}; e$n <- NULL; e$l <- 666; lockBinding('l', e); e").mimeType(
"text/x-r").name("test.R").build();
return new TruffleObject[]{engine.eval(src).as(REnvironment.class)};
......@@ -146,9 +144,7 @@ public class REnvironmentMRTest extends AbstractMRTest {
@Override
protected TruffleObject createEmptyTruffleObject() throws Exception {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
Source src = Source.newBuilder("new.env()").mimeType("text/x-r").name("test.R").build();
return engine.eval(src).as(REnvironment.class);
}
}
......@@ -22,19 +22,20 @@
*/
package com.oracle.truffle.r.test.engine.interop;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.oracle.truffle.api.interop.ArityException;
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.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.interop.UnsupportedTypeException;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.runtime.data.RFunction;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class RFunctionMRTest extends AbstractMRTest {
......@@ -72,7 +73,6 @@ public class RFunctionMRTest extends AbstractMRTest {
}
private static RFunction create(String fun) {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
Source src = Source.newBuilder(fun).mimeType("text/x-r").name("test.R").build();
PolyglotEngine.Value result = engine.eval(src);
return result.as(RFunction.class);
......
......@@ -22,20 +22,21 @@
*/
package com.oracle.truffle.r.test.engine.interop;
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.KeyInfo;
import com.oracle.truffle.api.interop.Message;
import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.interop.UnknownIdentifierException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.runtime.data.RLanguage;
import org.junit.Assert;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class RLanguageMRTest extends AbstractMRTest {
......@@ -92,7 +93,6 @@ public class RLanguageMRTest extends AbstractMRTest {
@Override
protected TruffleObject[] createTruffleObjects() {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
// TODO any simpler way to create a RLanguage ?
String srcTxt = "ne <- new.env(); delayedAssign('x', 1 + 2, assign.env = ne); substitute(x, ne)";
Source src = Source.newBuilder(srcTxt).mimeType("text/x-r").name("test.R").build();
......@@ -114,5 +114,4 @@ public class RLanguageMRTest extends AbstractMRTest {
protected int getSize(TruffleObject obj) {
return ((RLanguage) obj).getLength();
}
}
......@@ -22,26 +22,24 @@
*/
package com.oracle.truffle.r.test.engine.interop;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.KeyInfo;
import com.oracle.truffle.api.interop.Message;
import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.interop.UnknownIdentifierException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
import com.oracle.truffle.r.runtime.data.RS4Object;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class RS4ObjectMRTest extends AbstractMRTest {
public RS4ObjectMRTest() {
}
@Test
public void testKeysInfo() throws Exception {
TruffleObject s4 = createTruffleObjects()[0];
......@@ -118,7 +116,6 @@ public class RS4ObjectMRTest extends AbstractMRTest {
@Override
protected TruffleObject[] createTruffleObjects() {
PolyglotEngine engine = PolyglotEngine.newBuilder().build();
String srcTxt = "setClass('test', representation(s = 'character', d = 'numeric', i = 'integer', b = 'logical', fn = 'function'));" +
"new('test', s = 'aaa', d = 1.1, i=123L, b = TRUE, fn = function() {})";
Source src = Source.newBuilder(srcTxt).mimeType("text/x-r").name("test.R").build();
......
......@@ -22,6 +22,12 @@
*/
package com.oracle.truffle.r.test.engine.interop;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.oracle.truffle.api.interop.ForeignAccess;
import com.oracle.truffle.api.interop.KeyInfo;
import com.oracle.truffle.api.interop.Message;
......@@ -29,26 +35,13 @@ import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.interop.UnknownIdentifierException;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.interop.java.JavaInterop;
import org.junit.Test;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.vm.PolyglotEngine;
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;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class VectorMRTest extends AbstractMRTest {
private final PolyglotEngine engine;
public VectorMRTest() {
engine = PolyglotEngine.newBuilder().build();
}
@Test
public void testReadWrite() throws Exception {
final TruffleObject vi = create("1L:10L");
......@@ -79,7 +72,6 @@ public class VectorMRTest extends AbstractMRTest {
RAbstractVector vec = JavaInterop.asJavaObject(RAbstractVector.class, nvi);
assertTrue(vec instanceof RAbstractStringVector);
assertEquals("abc", ForeignAccess.sendRead(Message.READ.createNode(), nvi, 0));
}
@Test
......@@ -123,9 +115,8 @@ public class VectorMRTest extends AbstractMRTest {
return ((RAbstractVector) obj).getLength();
}
private TruffleObject create(String createTxt) throws Exception {
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment