use of org.graalvm.polyglot.Value in project graal by oracle.
the class ValueHostConversionTest method testLongHierarchy.
@Test
public void testLongHierarchy() {
Value hierarchy = context.asValue(new LongHierarchy()).getMember("hierarchy");
assertEquals("long", hierarchy.execute(Long.MIN_VALUE).asString());
assertEquals("long", hierarchy.execute(Long.MAX_VALUE).asString());
// double
assertEquals("long", hierarchy.execute((double) (Integer.MIN_VALUE - 1L)).asString());
assertEquals("long", hierarchy.execute((double) (Integer.MAX_VALUE + 1L)).asString());
double maxSafeInteger = Math.pow(2, 53) - 1;
assertEquals("long", hierarchy.execute(-maxSafeInteger).asString());
assertEquals("long", hierarchy.execute(+maxSafeInteger).asString());
// large double values cannot be safely converted to integer due to lack of precision
assertEquals("number", hierarchy.execute(-maxSafeInteger - 1).asString());
assertEquals("number", hierarchy.execute(+maxSafeInteger + 1).asString());
assertEquals("number", hierarchy.execute((double) Long.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute((double) Long.MAX_VALUE).asString());
// float
assertEquals("int", hierarchy.execute((float) -(Math.pow(2, 24) - 1)).asString());
assertEquals("int", hierarchy.execute((float) +(Math.pow(2, 24) - 1)).asString());
// large float values cannot be safely converted to integer due to lack of precision
assertEquals("number", hierarchy.execute((float) Integer.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute((float) Integer.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute((float) Long.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute((float) Long.MAX_VALUE).asString());
assertEquals("byte", hierarchy.execute(Byte.MIN_VALUE).asString());
assertEquals("byte", hierarchy.execute(Byte.MAX_VALUE).asString());
assertEquals("short", hierarchy.execute(Short.MIN_VALUE).asString());
assertEquals("short", hierarchy.execute(Short.MAX_VALUE).asString());
assertEquals("int", hierarchy.execute(Integer.MIN_VALUE).asString());
assertEquals("int", hierarchy.execute(Integer.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(Float.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Float.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(Double.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Double.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(new BigDecimal("1")).asString());
assertEquals("object", hierarchy.execute("").asString());
assertEquals("object", hierarchy.execute(false).asString());
}
use of org.graalvm.polyglot.Value in project graal by oracle.
the class ValueHostConversionTest method testHostObjectIdentityRestore.
@Test
public void testHostObjectIdentityRestore() {
Object obj = new Object();
Value value = context.asValue(obj);
assertTrue(value.isHostObject());
assertSame(obj, context.asValue(value.as(Object.class)).asHostObject());
assertUnsupported(value, HOST_OBJECT, MEMBERS);
}
use of org.graalvm.polyglot.Value in project graal by oracle.
the class ValueHostConversionTest method testByteHierarchy.
@Test
public void testByteHierarchy() {
Value hierarchy = context.asValue(new ByteHierarchy()).getMember("hierarchy");
final byte minValue = Byte.MIN_VALUE;
final byte maxValue = Byte.MAX_VALUE;
assertEquals("byte", hierarchy.execute(minValue).asString());
assertEquals("byte", hierarchy.execute(maxValue).asString());
assertEquals("byte", hierarchy.execute((short) minValue).asString());
assertEquals("byte", hierarchy.execute((short) maxValue).asString());
assertEquals("byte", hierarchy.execute((int) minValue).asString());
assertEquals("byte", hierarchy.execute((int) maxValue).asString());
assertEquals("byte", hierarchy.execute((long) minValue).asString());
assertEquals("byte", hierarchy.execute((long) maxValue).asString());
assertEquals("byte", hierarchy.execute((float) minValue).asString());
assertEquals("byte", hierarchy.execute((float) maxValue).asString());
assertEquals("byte", hierarchy.execute((double) minValue).asString());
assertEquals("byte", hierarchy.execute((double) maxValue).asString());
assertEquals("number", hierarchy.execute((short) (maxValue + 1)).asString());
assertEquals("number", hierarchy.execute((short) (minValue - 1)).asString());
assertEquals("number", hierarchy.execute(Integer.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Integer.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(Long.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Long.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(Float.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Float.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(Double.MIN_VALUE).asString());
assertEquals("number", hierarchy.execute(Double.MAX_VALUE).asString());
assertEquals("number", hierarchy.execute(new BigDecimal("1")).asString());
assertEquals("object", hierarchy.execute("").asString());
assertEquals("object", hierarchy.execute(false).asString());
}
use of org.graalvm.polyglot.Value in project graal by oracle.
the class ValueHostConversionTest method testCharHierarchy.
@Test
public void testCharHierarchy() {
Value hierarchy = context.asValue(new CharHierarchy()).getMember("hierarchy");
assertEquals("char", hierarchy.execute('a').asString());
assertEquals("char", hierarchy.execute("a").asString());
assertEquals("CharSequence", hierarchy.execute("").asString());
assertEquals("CharSequence", hierarchy.execute("foo").asString());
assertEquals("CharSequence", hierarchy.execute(new StringBuilder("a")).asString());
assertEquals("object", hierarchy.execute(42).asString());
assertEquals("object", hierarchy.execute(false).asString());
}
use of org.graalvm.polyglot.Value in project graal by oracle.
the class ValueHostInteropTest method emptyArrayHasSize.
@Test
public void emptyArrayHasSize() {
Value arrObj = context.asValue(new String[0]);
assertTrue(arrObj.hasArrayElements());
assertEquals(0L, arrObj.getArraySize());
}
Aggregations