Search in sources :

Example 46 with Value

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());
}
Also used : ValueAssert.assertValue(com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue) Value(org.graalvm.polyglot.Value) BigDecimal(java.math.BigDecimal) Test(org.junit.Test)

Example 47 with Value

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);
}
Also used : ValueAssert.assertValue(com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue) Value(org.graalvm.polyglot.Value) TruffleObject(com.oracle.truffle.api.interop.TruffleObject) Test(org.junit.Test)

Example 48 with Value

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());
}
Also used : ValueAssert.assertValue(com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue) Value(org.graalvm.polyglot.Value) BigDecimal(java.math.BigDecimal) Test(org.junit.Test)

Example 49 with Value

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());
}
Also used : ValueAssert.assertValue(com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue) Value(org.graalvm.polyglot.Value) Test(org.junit.Test)

Example 50 with Value

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());
}
Also used : ValueAssert.assertValue(com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue) Value(org.graalvm.polyglot.Value) Test(org.junit.Test)

Aggregations

Value (org.graalvm.polyglot.Value)277 Test (org.junit.Test)203 ValueAssert.assertValue (com.oracle.truffle.api.test.polyglot.ValueAssert.assertValue)65 Context (org.graalvm.polyglot.Context)58 BoxedTestValue (com.oracle.truffle.llvm.test.interop.values.BoxedTestValue)43 PolyglotException (org.graalvm.polyglot.PolyglotException)42 TruffleObject (com.oracle.truffle.api.interop.TruffleObject)34 ProxyObject (org.graalvm.polyglot.proxy.ProxyObject)34 Source (org.graalvm.polyglot.Source)31 ArrayList (java.util.ArrayList)30 CEntryPoint (org.graalvm.nativeimage.c.function.CEntryPoint)23 ProxyExecutable (org.graalvm.polyglot.proxy.ProxyExecutable)18 HashMap (java.util.HashMap)14 TruffleContext (com.oracle.truffle.api.TruffleContext)11 UnsupportedMessageException (com.oracle.truffle.api.interop.UnsupportedMessageException)11 NullValue (com.oracle.truffle.llvm.test.interop.values.NullValue)11 UnsupportedTypeException (com.oracle.truffle.api.interop.UnsupportedTypeException)10 DebugValue (com.oracle.truffle.api.debug.DebugValue)9 LanguageContext (com.oracle.truffle.api.test.polyglot.LanguageSPITestLanguage.LanguageContext)9 List (java.util.List)9