Skip to content

Commit bae9744

Browse files
authored
Refactor runtime-integration-tests - move some tests to more dedicated packages (#11720)
* Add TypesExposeConstructorsTest * Move some tests from org.enso.interpreter.test to dedicated packages
1 parent 0b6b1f0 commit bae9744

11 files changed

+116
-10
lines changed

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/HashCodeTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/hash/HashCodeTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.hash;
22

33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertTrue;
@@ -13,6 +13,7 @@
1313
import org.enso.interpreter.node.expression.builtin.meta.HashCodeNodeGen;
1414
import org.enso.interpreter.node.expression.foreign.HostValueToEnsoNode;
1515
import org.enso.interpreter.runtime.EnsoContext;
16+
import org.enso.interpreter.test.ValuesGenerator;
1617
import org.enso.test.utils.ContextUtils;
1718
import org.enso.test.utils.TestRootNode;
1819
import org.graalvm.polyglot.Context;

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/InsightForEnsoTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/instrument/InsightForEnsoTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.instrument;
22

33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotEquals;

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/AtomInteropTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/AtomInteropTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

33
import static org.hamcrest.MatcherAssert.assertThat;
44
import static org.hamcrest.Matchers.containsInAnyOrder;

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/JavaInteropTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/JavaInteropTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

33
import static org.junit.Assert.assertArrayEquals;
44
import static org.junit.Assert.assertEquals;

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/JsInteropTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/JsInteropTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

33
import static org.junit.Assert.assertEquals;
44

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/MetaObjectPolyglotTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/MetaObjectPolyglotTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

3+
import org.enso.interpreter.test.ValuesGenerator;
34
import org.enso.interpreter.test.ValuesGenerator.Language;
45
import org.graalvm.polyglot.Context;
56

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/MetaObjectTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/MetaObjectTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

33
import static org.hamcrest.CoreMatchers.is;
44
import static org.hamcrest.MatcherAssert.assertThat;
@@ -20,6 +20,7 @@
2020
import org.enso.common.MethodNames;
2121
import org.enso.interpreter.runtime.data.Type;
2222
import org.enso.interpreter.runtime.type.ConstantsGen;
23+
import org.enso.interpreter.test.ValuesGenerator;
2324
import org.enso.interpreter.test.ValuesGenerator.Language;
2425
import org.enso.test.utils.ContextUtils;
2526
import org.graalvm.polyglot.Context;

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/TypeMembersTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/interop/TypeMembersTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.interop;
22

33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertFalse;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package org.enso.interpreter.test.interop;
2+
3+
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.is;
5+
import static org.hamcrest.Matchers.notNullValue;
6+
7+
import java.util.ArrayList;
8+
import java.util.Objects;
9+
import org.enso.interpreter.runtime.data.Type;
10+
import org.enso.interpreter.test.ValuesGenerator;
11+
import org.enso.interpreter.test.ValuesGenerator.Language;
12+
import org.enso.test.utils.ContextUtils;
13+
import org.graalvm.polyglot.Context;
14+
import org.graalvm.polyglot.Value;
15+
import org.junit.AfterClass;
16+
import org.junit.Test;
17+
import org.junit.runner.RunWith;
18+
import org.junit.runners.Parameterized;
19+
import org.junit.runners.Parameterized.Parameters;
20+
21+
/**
22+
* Tests that every {@link org.enso.interpreter.runtime.data.Type} exposes its constructors as
23+
* {@link com.oracle.truffle.api.interop.InteropLibrary#getMembers(Object) members}, and that such
24+
* members are {@link com.oracle.truffle.api.interop.InteropLibrary#isInstantiable(Object)
25+
* instantiable}.
26+
*/
27+
@RunWith(Parameterized.class)
28+
public class TypesExposeConstructorsTest {
29+
private static Context ctx;
30+
31+
private final TypeWithWrapper typeWithWrapper;
32+
33+
public TypesExposeConstructorsTest(TypeWithWrapper typeWithWrapper) {
34+
this.typeWithWrapper = typeWithWrapper;
35+
}
36+
37+
private static Context ctx() {
38+
if (ctx == null) {
39+
ctx = ContextUtils.createDefaultContext();
40+
}
41+
return ctx;
42+
}
43+
44+
@AfterClass
45+
public static void disposeCtx() {
46+
if (ctx != null) {
47+
ctx.close();
48+
ctx = null;
49+
}
50+
}
51+
52+
@Parameters(name = "{index}: {0}")
53+
public static Iterable<TypeWithWrapper> collectTypes() {
54+
var collectedTypes = new ArrayList<TypeWithWrapper>();
55+
ContextUtils.executeInContext(
56+
ctx(),
57+
() -> {
58+
var valuesGenerator = ValuesGenerator.create(ctx(), Language.ENSO);
59+
valuesGenerator.allTypes().stream()
60+
.map(
61+
tp -> {
62+
var unwrappedTp = ContextUtils.unwrapValue(ctx(), tp);
63+
if (unwrappedTp instanceof Type type) {
64+
return new TypeWithWrapper(type, tp);
65+
} else {
66+
return null;
67+
}
68+
})
69+
.filter(Objects::nonNull)
70+
.filter(tp -> !tp.type.getConstructors().isEmpty())
71+
.forEach(collectedTypes::add);
72+
return null;
73+
});
74+
return collectedTypes;
75+
}
76+
77+
@Test
78+
public void typesExposeConstructorsAsMembers() {
79+
var type = typeWithWrapper.type;
80+
var typeValue = typeWithWrapper.typeValue;
81+
var consNames = type.getConstructors().keySet();
82+
for (var consName : consNames) {
83+
assertThat(
84+
"Constructor " + consName + " should be exposed as a member",
85+
typeValue.hasMember(consName),
86+
is(true));
87+
var consMember = typeValue.getMember(consName);
88+
assertThat(consMember, is(notNullValue()));
89+
assertThat(
90+
"Constructor " + consName + " should be instantiable",
91+
consMember.canInstantiate(),
92+
is(true));
93+
}
94+
}
95+
96+
/**
97+
* @param type
98+
* @param typeValue The polyglot value of the type (not an object)
99+
*/
100+
public record TypeWithWrapper(Type type, Value typeValue) {}
101+
}

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/MetaIsAPolyglotTest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/meta/MetaIsAPolyglotTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.meta;
22

3+
import org.enso.interpreter.test.ValuesGenerator;
34
import org.enso.interpreter.test.ValuesGenerator.Language;
45
import org.graalvm.polyglot.Context;
56

engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/MetaIsATest.java engine/runtime-integration-tests/src/test/java/org/enso/interpreter/test/meta/MetaIsATest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.enso.interpreter.test;
1+
package org.enso.interpreter.test.meta;
22

33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertFalse;
@@ -10,6 +10,7 @@
1010
import java.util.List;
1111
import java.util.Map;
1212
import org.enso.interpreter.runtime.data.Type;
13+
import org.enso.interpreter.test.ValuesGenerator;
1314
import org.enso.interpreter.test.ValuesGenerator.Language;
1415
import org.enso.test.utils.ContextUtils;
1516
import org.graalvm.polyglot.Context;

0 commit comments

Comments
 (0)