annotate truffle/com.oracle.truffle.tck/src/com/oracle/truffle/tck/TruffleTCK.java @ 22523:6ab540203853

Expanding TCK to cover reading and writing of object properties with various primitive types
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Tue, 22 Dec 2015 18:00:04 +0100
parents b3569a53c24c
children 579d21e36582
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
1 /*
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2015, 2015, Oracle and/or its affiliates. All rights reserved.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
4 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation. Oracle designates this
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
8 * particular file as subject to the "Classpath" exception as provided
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
9 * by Oracle in the LICENSE file that accompanied this code.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
10 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
11 * This code is distributed in the hope that it will be useful, but WITHOUT
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
14 * version 2 for more details (a copy is included in the LICENSE file that
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
15 * accompanied this code).
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
16 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License version
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
18 * 2 along with this work; if not, write to the Free Software Foundation,
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
20 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
22 * or visit www.oracle.com if you need additional information or have any
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
23 * questions.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
24 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
25 package com.oracle.truffle.tck;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
26
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
27 import static org.junit.Assert.assertEquals;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
28 import static org.junit.Assert.assertNotNull;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
29 import static org.junit.Assert.assertNotSame;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
30 import static org.junit.Assert.assertNull;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
31 import static org.junit.Assert.assertSame;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
32 import static org.junit.Assert.assertTrue;
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
33 import static org.junit.Assert.fail;
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
34
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
35 import java.io.IOException;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
36 import java.lang.reflect.Field;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
37 import java.nio.ByteBuffer;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
38 import java.util.Arrays;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
39 import java.util.Random;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
40
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
41 import org.junit.Assert;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
42 import org.junit.Test;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
43
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
44 import com.oracle.truffle.api.TruffleLanguage;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
45 import com.oracle.truffle.api.interop.TruffleObject;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
46 import com.oracle.truffle.api.interop.java.JavaInterop;
22523
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
47 import com.oracle.truffle.api.interop.java.MethodMessage;
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
48 import com.oracle.truffle.api.source.Source;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
49 import com.oracle.truffle.api.vm.PolyglotEngine;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
50 import com.oracle.truffle.api.vm.PolyglotEngine.Language;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
51 import com.oracle.truffle.tck.Schema.Type;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
52
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
53 /**
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
54 * A collection of tests that can certify language implementation to be compliant with most recent
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
55 * requirements of the Truffle infrastructure and tooling. Subclass, implement abstract methods and
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
56 * include in your test suite.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
57 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
58 public abstract class TruffleTCK {
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
59 private static final Random RANDOM = new Random();
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
60 private PolyglotEngine tckVM;
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
61
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
62 protected TruffleTCK() {
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
63 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
64
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
65 /**
22172
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
66 * This methods is called before first test is executed. It's purpose is to set a
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
67 * {@link PolyglotEngine} with your language up, so it is ready for testing.
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
68 * {@link PolyglotEngine#eval(com.oracle.truffle.api.source.Source) Execute} any scripts you
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
69 * need, and prepare global symbols with proper names. The symbols will then be looked up by the
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
70 * infrastructure (using the names provided by you from methods like {@link #plusInt()}) and
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
71 * used for internal testing.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
72 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
73 * @return initialized Truffle virtual machine
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
74 * @throws java.lang.Exception thrown when the VM preparation fails
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
75 */
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
76 protected abstract PolyglotEngine prepareVM() throws Exception;
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
77
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
78 /**
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
79 * MIME type associated with your language. The MIME type will be passed to
22172
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
80 * {@link PolyglotEngine#eval(com.oracle.truffle.api.source.Source)} method of the
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
81 * {@link #prepareVM() created engine}.
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
82 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
83 * @return mime type of the tested language
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
84 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
85 protected abstract String mimeType();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
86
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
87 /**
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
88 * Name of function which will return value 42 as a number. The return value of the method
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
89 * should be instance of {@link Number} and its {@link Number#intValue()} should return
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
90 * <code>42</code>.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
91 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
92 * @return name of globally exported symbol
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
93 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
94 protected abstract String fourtyTwo();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
95
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
96 /**
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
97 * Name of a function that returns <code>null</code>. Truffle languages are encouraged to have
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
98 * their own type representing <code>null</code>, but when such value is returned from
22172
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
99 * {@link PolyglotEngine#eval}, it needs to be converted to real Java <code>null</code> by
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
100 * sending a foreign access <em>isNull</em> message. There is a test to verify it is really
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
101 * true.
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
102 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
103 * @return name of globally exported symbol
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
104 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
105 protected abstract String returnsNull();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
106
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
107 /**
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
108 * Name of function to add two integer values together. The symbol will be invoked with two
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
109 * parameters of type {@link Integer} and expects result of type {@link Number} which's
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
110 * {@link Number#intValue()} is equivalent of <code>param1 + param2</code>.
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
111 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
112 * @return name of globally exported symbol
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
113 */
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
114 protected String plusInt() {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
115 throw new UnsupportedOperationException("Override plus(Class,Class) method!");
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
116 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
117
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
118 /**
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
119 * Name of function to add two numbers together. The symbol will be invoked with two parameters
22523
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
120 * of <code>type1</code> and <code>type2</code> and expects result of type {@link Number}
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
121 * which's {@link Number#intValue()} is equivalent of <code>param1 + param2</code>. As some
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
122 * languages may have different operations for different types of numbers, the actual types are
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
123 * passed to the method and the implementation can decide to return different symbol based on
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
124 * the parameters.
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
125 *
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
126 * @param type1 one of byte, short, int, long, float, double class
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
127 * @param type2 one of byte, short, int, long, float, double class
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
128 * @return name of globally exported symbol
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
129 */
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
130 protected String plus(Class<?> type1, Class<?> type2) {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
131 return plusInt();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
132 }
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
133
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
134 /**
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
135 * Name of a function in your language to perform a callback to foreign function. Your function
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
136 * should prepare two numbers (18 and 32) and apply them to the function passed in as an
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
137 * argument of your function. It should then add 10 to the returned value and return the result
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
138 * back to its caller.
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
139 *
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
140 * @return name of globally exported symbol
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
141 */
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
142 protected abstract String applyNumbers();
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
143
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
144 /**
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
145 * Name of identity function. The identity function accepts one argument and returns it. The
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
146 * argument should go through without any modification, e.g. the input should result in
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
147 * identical output.
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
148 *
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
149 * @return name of globally exported symbol
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
150 */
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
151 protected String identity() {
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
152 throw new UnsupportedOperationException("identity() method not implemented");
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
153 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
154
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
155 /**
22488
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
156 * Name of a function that adds up two complex numbers. The function accepts two arguments and
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
157 * provides no return value. The arguments are complex numbers with members called real and
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
158 * imaginary. The first argument contains the result of the addition.
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
159 *
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
160 * @return name of globally exported symbol
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
161 */
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
162 protected String complexAdd() {
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
163 throw new UnsupportedOperationException("complexAdd() method not implemented");
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
164 }
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
165
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
166 /**
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
167 * Name of a function that adds up the real part of complex numbers. The function accepts one
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
168 * argument and provides the sum of all real parts. The argument is an array/buffer of complex
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
169 * numbers.
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
170 *
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
171 * @return name of globally exported symbol
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
172 */
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
173 protected String complexSumReal() {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
174 throw new UnsupportedOperationException("complexSumReal() method not implemented");
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
175 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
176
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
177 /**
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
178 * Name of a function that copies a list of complex numbers. The function accepts two arguments
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
179 * and provides no return value. The arguments are two lists of complex numbers with members
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
180 * called real and imaginary. The first argument is the destination, the second argument is the
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
181 * source.
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
182 *
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
183 * @return name of globally exported symbol
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
184 */
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
185 protected String complexCopy() {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
186 throw new UnsupportedOperationException("complexCopy() method not implemented");
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
187 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
188
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
189 /**
22278
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
190 * Name of a function to return global object. The function can be executed without providing
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
191 * any arguments and should return global object of the language, if the language supports it.
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
192 * Global object is the one accessible via
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
193 * {@link TruffleLanguage#getLanguageGlobal(java.lang.Object)}.
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
194 *
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
195 * @return name of globally exported symbol, return <code>null</code> if the language doesn't
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
196 * support the concept of global object
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
197 */
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
198 protected String globalObject() {
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
199 throw new UnsupportedOperationException("globalObject() method not implemented");
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
200 }
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
201
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
202 /**
22375
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
203 * Name of a function to parse source written in some other language. When the function is
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
204 * executed, it expects two arguments. First one is MIME type identifying
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
205 * {@link TruffleLanguage} and the second one is the source code to parse in that language and
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
206 * execute it. The result of the execution is then returned back to the caller.
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
207 *
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
208 * @return name of globally exported symbol to invoke when one wants to execute some code
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
209 */
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
210 protected String evaluateSource() {
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
211 throw new UnsupportedOperationException("evaluateSource() method not implemented");
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
212 }
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
213
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
214 /**
22382
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
215 * Code snippet to multiplyCode two two variables. The test uses the snippet as a parameter to
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
216 * your language's
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
217 * {@link TruffleLanguage#parse(com.oracle.truffle.api.source.Source, com.oracle.truffle.api.nodes.Node, java.lang.String...)}
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
218 * method.
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
219 *
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
220 * @param firstName name of the first variable to multiplyCode
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
221 * @param secondName name of the second variable to multiplyCode
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
222 * @return code snippet that multiplies the two variables in your language
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
223 */
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
224 protected String multiplyCode(String firstName, String secondName) {
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
225 throw new UnsupportedOperationException("multiply(String,String) method not implemeted!");
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
226 }
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
227
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
228 /**
22172
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
229 * Name of a function that counts number of its invocations in current {@link PolyglotEngine}
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
230 * context. Your function should somehow keep a counter to remember number of its invocations
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
231 * and always increment it. The first invocation should return <code>1</code>, the second
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
232 * <code>2</code> and so on. The returned values are expected to be instances of {@link Number}.
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
233 * <p>
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
234 * The function will be used to test that two instances of your language can co-exist next to
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
235 * each other. Without being mutually influenced.
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
236 *
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
237 * @return name of globally expected symbol
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
238 */
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
239 protected abstract String countInvocations();
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
240
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
241 /**
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
242 * Return a code snippet that is invalid in your language. Its
22172
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
243 * {@link PolyglotEngine#eval(com.oracle.truffle.api.source.Source) evaluation} should fail and
b31dcacfc8ff Replacing more TruffleVM references in comments with the new PolyglotEngine name
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22170
diff changeset
244 * yield an exception.
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
245 *
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
246 * @return code snippet invalid in the tested language
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
247 */
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
248 protected abstract String invalidCode();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
249
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
250 /**
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
251 * Name of a function that returns a compound object with members representing certain
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
252 * operations. In the JavaScript the object should look like:
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
253 *
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
254 * <pre>
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
255 * <b>var</b> obj = {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
256 * 'fourtyTwo': function {@link #fourtyTwo()},
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
257 * 'plus': function {@link #plusInt()},
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
258 * 'returnsNull': function {@link #returnsNull()},
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
259 * 'returnsThis': function() { return obj; }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
260 * };
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
261 * <b>return</b> obj;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
262 * </pre>
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
263 *
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
264 * The returned object shall have three functions that will be obtained and used exactly as
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
265 * described in their Javadoc - e.g. {@link #fourtyTwo()}, {@link #plusInt()} and
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
266 * {@link #returnsNull()}. In addition to that there should be one more function
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
267 * <b>returnsThis</b> that will return the object itself again.
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
268 *
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
269 * @return name of a function that returns such compound object
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
270 */
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
271 protected String compoundObject() {
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
272 throw new UnsupportedOperationException("compoundObject() method not implemented");
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
273 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
274
22523
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
275 /**
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
276 * Name of a function that returns a compound object with members representing certain primitive
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
277 * types. In the JavaScript the object should look like:
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
278 *
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
279 * <pre>
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
280 * <b>var</b> obj = {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
281 * 'byteValue': 0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
282 * 'shortValue': 0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
283 * 'intValue': 0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
284 * 'longValue': 0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
285 * 'floatValue': 0.0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
286 * 'doubleValue': 0.0,
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
287 * 'charValue': '0',
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
288 * 'stringValue': '',
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
289 * 'booleanVlaue': false
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
290 * };
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
291 * <b>return</b> obj;
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
292 * </pre>
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
293 *
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
294 * The returned object shall have slots for these values that can be read and written to.
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
295 * Various test methods try to read and modify the values. Each invocation of the function
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
296 * should yield new object.
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
297 *
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
298 * @return name of a function that returns such values object
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
299 */
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
300 protected String valuesObject() {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
301 throw new UnsupportedOperationException("valuesObject() method not implemented");
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
302 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
303
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
304 private PolyglotEngine vm() throws Exception {
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
305 if (tckVM == null) {
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
306 tckVM = prepareVM();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
307 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
308 return tckVM;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
309 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
310
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
311 //
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
312 // The tests
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
313 //
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
314
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
315 @Test
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
316 public void testFortyTwo() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
317 PolyglotEngine.Value fourtyTwo = findGlobalSymbol(fourtyTwo());
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
318
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
319 Object res = fourtyTwo.execute().get();
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
320
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
321 assert res instanceof Number : "should yield a number, but was: " + res;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
322
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
323 Number n = (Number) res;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
324
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
325 assert 42 == n.intValue() : "The value is 42 = " + n.intValue();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
326 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
327
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
328 @Test
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
329 public void testFortyTwoWithCompoundObject() throws Exception {
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
330 CompoundObject obj = findCompoundSymbol();
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
331 if (obj == null) {
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
332 return;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
333 }
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
334 Number res = obj.fourtyTwo();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
335 assertEquals("Should be 42", 42, res.intValue());
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
336 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
337
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
338 @Test
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
339 public void testNull() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
340 PolyglotEngine.Value retNull = findGlobalSymbol(returnsNull());
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
341
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
342 Object res = retNull.execute().get();
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
343
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
344 assertNull("Should yield real Java null", res);
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
345 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
346
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
347 @Test
22279
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
348 public void testNullCanBeCastToAnything() throws Exception {
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
349 PolyglotEngine.Value retNull = findGlobalSymbol(returnsNull());
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
350
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
351 Object res = retNull.execute().as(CompoundObject.class);
22279
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
352
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
353 assertNull("Should yield real Java null", res);
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
354 }
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
355
0fc995134ff3 asJavaObject can work with null value
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22278
diff changeset
356 @Test
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
357 public void testNullInCompoundObject() throws Exception {
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
358 CompoundObject obj = findCompoundSymbol();
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
359 if (obj == null) {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
360 return;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
361 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
362 Object res = obj.returnsNull();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
363 assertNull("Should yield real Java null", res);
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
364 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
365
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
366 @Test
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
367 public void testPlusWithInts() throws Exception {
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
368 int a = RANDOM.nextInt(100);
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
369 int b = RANDOM.nextInt(100);
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
370
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
371 PolyglotEngine.Value plus = findGlobalSymbol(plus(int.class, int.class));
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
372
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
373 Number n = plus.execute(a, b).as(Number.class);
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
374 assert a + b == n.intValue() : "The value is correct: (" + a + " + " + b + ") = " + n.intValue();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
375 }
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
376
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
377 @Test
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
378 public void testPlusWithBytes() throws Exception {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
379 int a = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
380 int b = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
381
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
382 PolyglotEngine.Value plus = findGlobalSymbol(plus(byte.class, byte.class));
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
383
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
384 Number n = plus.execute((byte) a, (byte) b).as(Number.class);
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
385 assert a + b == n.intValue() : "The value is correct: (" + a + " + " + b + ") = " + n.intValue();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
386 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
387
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
388 @Test
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
389 public void testPlusWithShort() throws Exception {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
390 int a = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
391 int b = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
392
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
393 PolyglotEngine.Value plus = findGlobalSymbol(plus(short.class, short.class));
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
394
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
395 Number n = plus.execute((short) a, (short) b).as(Number.class);
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
396 assert a + b == n.intValue() : "The value is correct: (" + a + " + " + b + ") = " + n.intValue();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
397 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
398
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
399 @Test
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
400 public void testPlusWithLong() throws Exception {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
401 long a = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
402 long b = RANDOM.nextInt(100);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
403
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
404 PolyglotEngine.Value plus = findGlobalSymbol(plus(long.class, long.class));
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
405
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
406 Number n = plus.execute(a, b).as(Number.class);
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
407 assert a + b == n.longValue() : "The value is correct: (" + a + " + " + b + ") = " + n.longValue();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
408 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
409
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
410 @Test
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
411 public void testPlusWithFloat() throws Exception {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
412 float a = RANDOM.nextFloat();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
413 float b = RANDOM.nextFloat();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
414
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
415 PolyglotEngine.Value plus = findGlobalSymbol(plus(float.class, float.class));
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
416
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
417 Number n = plus.execute(a, b).as(Number.class);
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
418 assertEquals("Correct value computed", a + b, n.floatValue(), 0.01f);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
419 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
420
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
421 @Test
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
422 public void testPlusWithDouble() throws Exception {
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
423 double a = RANDOM.nextDouble();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
424 double b = RANDOM.nextDouble();
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
425
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
426 PolyglotEngine.Value plus = findGlobalSymbol(plus(float.class, float.class));
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
427
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
428 Number n = plus.execute(a, b).as(Number.class);
22138
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
429 assertEquals("Correct value computed", a + b, n.doubleValue(), 0.01);
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
430 }
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
431
a583d7ffd285 Enhancing TCK to pass in all Java number types and see whether they result in something meaningful.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22135
diff changeset
432 @Test
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
433 public void testPlusWithIntsOnCompoundObject() throws Exception {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
434 int a = RANDOM.nextInt(100);
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
435 int b = RANDOM.nextInt(100);
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
436
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
437 CompoundObject obj = findCompoundSymbol();
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
438 if (obj == null) {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
439 return;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
440 }
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
441
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
442 Number n = obj.plus(a, b);
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
443 assert a + b == n.intValue() : "The value is correct: (" + a + " + " + b + ") = " + n.intValue();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
444 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
445
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
446 @Test(expected = IOException.class)
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
447 public void testInvalidTestMethod() throws Exception {
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
448 String mime = mimeType();
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
449 String code = invalidCode();
22121
d045a505c2b3 Asynchronous TruffleVM can be created by providing own Executor when configuring the TruffleVM.Builder
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22104
diff changeset
450 Object ret = vm().eval(Source.fromText(code, "Invalid code").withMimeType(mime)).get();
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
451 fail("Should yield IOException, but returned " + ret);
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
452 }
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
453
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
454 @Test
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
455 public void testMaxOrMinValue() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
456 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
457
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
458 TruffleObject fn = JavaInterop.asTruffleFunction(LongBinaryOperation.class, new MaxMinObject(true));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
459 Object res = apply.execute(fn).get();
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
460
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
461 assert res instanceof Number : "result should be a number: " + res;
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
462
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
463 Number n = (Number) res;
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
464
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
465 assert 42 == n.intValue() : "32 > 18 and plus 10";
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
466 }
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
467
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
468 @Test
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
469 public void testMaxOrMinValue2() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
470 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
471
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
472 TruffleObject fn = JavaInterop.asTruffleFunction(LongBinaryOperation.class, new MaxMinObject(false));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
473 final PolyglotEngine.Value result = apply.execute(fn);
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
474
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
475 try {
22284
33d49924a921 PolyglotEngine.Value.as(String.class) gives the language that produced the value a chance to do its conversion to appropriate textual representation.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22279
diff changeset
476 Boolean res = result.as(Boolean.class);
33d49924a921 PolyglotEngine.Value.as(String.class) gives the language that produced the value a chance to do its conversion to appropriate textual representation.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22279
diff changeset
477 fail("Cannot be converted to Boolean: " + res);
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
478 } catch (ClassCastException ex) {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
479 // correct
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
480 }
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
481
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
482 Number n = result.as(Number.class);
21960
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
483 assert 28 == n.intValue() : "18 < 32 and plus 10";
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
484 }
a88981c5ce8b Initial test for Java Interop: Perform callback to Math.min and Math.max via TruffleObject and Message.createExecute(2).
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
485
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
486 @Test
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
487 public void testPrimitiveReturnTypeByte() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
488 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
489
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
490 byte value = (byte) RANDOM.nextInt(100);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
491
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
492 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
493 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
494 assertEquals("The same value returned", value + 10, n.byteValue());
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
495 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
496
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
497 @Test
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
498 public void testPrimitiveReturnTypeShort() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
499 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
500
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
501 short value = (short) RANDOM.nextInt(100);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
502
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
503 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
504 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
505 assertEquals("The same value returned", value + 10, n.shortValue());
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
506 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
507
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
508 @Test
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
509 public void testPrimitiveReturnTypeInt() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
510 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
511
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
512 int value = RANDOM.nextInt(100);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
513
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
514 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
515 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
516 assertEquals("The same value returned", value + 10, n.intValue());
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
517 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
518
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
519 @Test
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
520 public void testPrimitiveReturnTypeLong() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
521 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
522
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
523 long value = RANDOM.nextInt(1000);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
524
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
525 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
526 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
527 assertEquals("The same value returned", value + 10, n.longValue());
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
528 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
529
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
530 @Test
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
531 public void testPrimitiveReturnTypeFloat() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
532 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
533
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
534 float value = RANDOM.nextInt(1000) + RANDOM.nextFloat();
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
535
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
536 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
537 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
538 assertEquals("The same value returned", value + 10, n.floatValue(), 0.01);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
539 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
540
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
541 @Test
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
542 public void testPrimitiveReturnTypeDouble() throws Exception {
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
543 PolyglotEngine.Value apply = findGlobalSymbol(applyNumbers());
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
544
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
545 double value = RANDOM.nextInt(1000) + RANDOM.nextDouble();
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
546
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
547 TruffleObject fn = JavaInterop.asTruffleFunction(ObjectBinaryOperation.class, new ConstantFunction(value));
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
548 Number n = apply.execute(fn).as(Number.class);
22139
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
549 assertEquals("The same value returned", value + 10, n.doubleValue(), 0.01);
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
550 }
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
551
597953a8e6f0 Testing behavior of primitive types returned from an interop method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22138
diff changeset
552 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
553 public void testPrimitiveidentityByte() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
554 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
555 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
556 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
557 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
558 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
559
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
560 byte value = (byte) RANDOM.nextInt(100);
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
561
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
562 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
563 assertEquals("The same value returned", value, n.byteValue());
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
564 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
565
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
566 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
567 public void testPrimitiveidentityBoxedByte() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
568 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
569 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
570 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
571 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
572 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
573
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
574 byte value = (byte) RANDOM.nextInt(100);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
575 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
576
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
577 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
578 assertEquals("The same value returned", value, n.byteValue());
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
579 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
580
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
581 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
582 public void testPrimitiveidentityShort() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
583 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
584 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
585 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
586 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
587 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
588
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
589 short value = (short) RANDOM.nextInt(100);
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
590 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
591 assertEquals("The same value returned", value, n.shortValue());
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
592 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
593
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
594 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
595 public void testPrimitiveidentityBoxedShort() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
596 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
597 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
598 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
599 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
600 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
601
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
602 short value = (short) RANDOM.nextInt(100);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
603 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
604
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
605 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
606 assertEquals("The same value returned", value, n.shortValue());
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
607 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
608
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
609 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
610 public void testPrimitiveidentityInt() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
611 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
612 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
613 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
614 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
615 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
616
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
617 int value = RANDOM.nextInt(100);
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
618
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
619 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
620 assertEquals("The same value returned", value, n.intValue());
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
621 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
622
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
623 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
624 public void testPrimitiveidentityBoxedInt() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
625 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
626 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
627 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
628 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
629 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
630
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
631 int value = RANDOM.nextInt(100);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
632 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
633
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
634 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
635 assertEquals("The same value returned", value, n.intValue());
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
636 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
637
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
638 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
639 public void testPrimitiveidentityLong() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
640 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
641 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
642 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
643 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
644 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
645
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
646 long value = RANDOM.nextInt(1000);
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
647
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
648 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
649 assertEquals("The same value returned", value, n.longValue());
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
650 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
651
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
652 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
653 public void testPrimitiveidentityBoxedLong() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
654 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
655 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
656 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
657 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
658 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
659
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
660 long value = RANDOM.nextInt(1000);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
661 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
662
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
663 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
664 assertEquals("The same value returned", value, n.longValue());
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
665 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
666
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
667 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
668 public void testPrimitiveidentityFloat() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
669 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
670 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
671 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
672 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
673 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
674
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
675 float value = RANDOM.nextInt(1000) + RANDOM.nextFloat();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
676
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
677 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
678 assertEquals("The same value returned", value, n.floatValue(), 0.01);
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
679 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
680
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
681 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
682 public void testPrimitiveidentityBoxedFloat() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
683 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
684 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
685 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
686 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
687 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
688
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
689 float value = RANDOM.nextInt(1000) + RANDOM.nextFloat();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
690 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
691
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
692 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
693 assertEquals("The same value returned", value, n.floatValue(), 0.01);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
694 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
695
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
696 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
697 public void testPrimitiveidentityDouble() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
698 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
699 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
700 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
701 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
702 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
703
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
704 double value = RANDOM.nextInt(1000) + RANDOM.nextDouble();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
705
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
706 Number n = (Number) apply.execute(value).get();
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
707 assertEquals("The same value returned", value, n.doubleValue(), 0.01);
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
708 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
709
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
710 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
711 public void testPrimitiveidentityBoxedDouble() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
712 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
713 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
714 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
715 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
716 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
717
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
718 double value = RANDOM.nextInt(1000) + RANDOM.nextDouble();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
719 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
720
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
721 Number n = (Number) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
722 assertEquals("The same value returned", value, n.doubleValue(), 0.01);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
723 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
724
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
725 @Test
22422
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
726 public void testPrimitiveidentityString() throws Exception {
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
727 String id = identity();
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
728 if (id == null) {
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
729 return;
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
730 }
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
731 PolyglotEngine.Value apply = findGlobalSymbol(id);
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
732
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
733 String value = "Value" + RANDOM.nextInt(1000) + RANDOM.nextDouble();
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
734
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
735 String ret = (String) apply.execute(value).get();
22422
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
736 assertEquals("The same value returned", value, ret);
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
737 }
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
738
30644770899d Testing identity behavior for String values
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22382
diff changeset
739 @Test
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
740 public void testPrimitiveidentityBoxedString() throws Exception {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
741 String id = identity();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
742 if (id == null) {
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
743 return;
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
744 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
745 PolyglotEngine.Value apply = findGlobalSymbol(id);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
746
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
747 String value = "Value" + RANDOM.nextInt(1000) + RANDOM.nextDouble();
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
748 BoxedValue boxed = new BoxedValue(value);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
749
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
750 String ret = (String) apply.execute(boxed).get();
22423
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
751 assertEquals("The same value returned", value, ret);
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
752 }
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
753
70a10a9f28ad Verify that primitive data (numbers as well as String) can be passed into a language as boxed TruffleObject instances
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22422
diff changeset
754 @Test
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
755 public void testPrimitiveIdentityForeignObject() throws Exception {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
756 String id = identity();
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
757 if (id == null) {
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
758 return;
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
759 }
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
760 PolyglotEngine.Value apply = findGlobalSymbol(id);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
761
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
762 TruffleObject fn = JavaInterop.asTruffleFunction(LongBinaryOperation.class, new MaxMinObject(true));
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
763
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
764 Object ret = apply.execute(fn).get();
22200
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
765 assertSameTruffleObject("The same value returned", fn, ret);
22140
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
766 }
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
767
92906003d607 Adding check of behavior of identity function into the TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22139
diff changeset
768 @Test
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
769 public void testCoExistanceOfMultipleLanguageInstances() throws Exception {
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
770 final String countMethod = countInvocations();
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
771 PolyglotEngine.Value count1 = findGlobalSymbol(countMethod);
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
772 PolyglotEngine vm1 = tckVM;
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
773 tckVM = null; // clean-up
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
774 PolyglotEngine.Value count2 = findGlobalSymbol(countMethod);
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
775 PolyglotEngine vm2 = tckVM;
22076
f54d7e045a37 Verify the two TruffleVM instances are different - otherwise the isolation cannot work
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22046
diff changeset
776
f54d7e045a37 Verify the two TruffleVM instances are different - otherwise the isolation cannot work
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22046
diff changeset
777 assertNotSame("Two virtual machines allocated", vm1, vm2);
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
778
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
779 int prev1 = 0;
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
780 int prev2 = 0;
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
781 for (int i = 0; i < 10; i++) {
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
782 int quantum = RANDOM.nextInt(10);
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
783 for (int j = 0; j < quantum; j++) {
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
784 Object res = count1.execute().get();
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
785 assert res instanceof Number : "expecting number: " + res;
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
786 ++prev1;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
787 assert ((Number) res).intValue() == prev1 : "expecting " + prev1 + " but was " + res;
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
788 }
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
789 for (int j = 0; j < quantum; j++) {
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
790 Object res = count2.execute().get();
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
791 assert res instanceof Number : "expecting number: " + res;
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
792 ++prev2;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
793 assert ((Number) res).intValue() == prev2 : "expecting " + prev2 + " but was " + res;
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
794 }
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
795 assert prev1 == prev2 : "At round " + i + " the same number of invocations " + prev1 + " vs. " + prev2;
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
796 }
22278
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
797 }
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
798
22278
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
799 @Test
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
800 public void testGlobalObjectIsAccessible() throws Exception {
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
801 String globalObjectFunction = globalObject();
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
802 if (globalObjectFunction == null) {
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
803 return;
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
804 }
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
805
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
806 Language language = vm().getLanguages().get(mimeType());
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
807 assertNotNull("Langugage for " + mimeType() + " found", language);
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
808
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
809 PolyglotEngine.Value function = vm().findGlobalSymbol(globalObjectFunction);
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
810 Object global = function.execute().get();
22278
85a6db6624ab Simplifying the way to obtain Language.globalObject
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22200
diff changeset
811 assertEquals("Global from the language same with Java obtained one", language.getGlobalObject().get(), global);
22046
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
812 }
e7c2d36daf72 TruffleLanguage.parse method to convert a source to CallTarget. Basic caching to make sure the code is shared among tenants in one JVM.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21960
diff changeset
813
22375
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
814 @Test
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
815 public void testEvaluateSource() throws Exception {
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
816 Language language = vm().getLanguages().get(mimeType());
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
817 assertNotNull("Langugage for " + mimeType() + " found", language);
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
818
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
819 PolyglotEngine.Value function = vm().findGlobalSymbol(evaluateSource());
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
820 assertNotNull(evaluateSource() + " found", function);
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
821
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
822 double expect = Math.floor(RANDOM.nextDouble() * 100000.0) / 10.0;
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
823 Object parsed = function.execute("application/x-tck", "" + expect).get();
22375
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
824 assertTrue("Expecting numeric result, was:" + expect, parsed instanceof Number);
22382
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
825 double value = ((Number) parsed).doubleValue();
22375
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
826 assertEquals("Gets the double", expect, value, 0.01);
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
827 }
78594d342228 Give Truffle languages access to evaluation functions of other languages.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22284
diff changeset
828
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
829 @Test
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
830 public void multiplyTwoVariables() throws Exception {
22382
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
831 final String firstVar = "var" + (char) ('A' + RANDOM.nextInt(24));
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
832 final String secondVar = "var" + (char) ('0' + RANDOM.nextInt(10));
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
833 String mulCode = multiplyCode(firstVar, secondVar);
22382
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
834 Source source = Source.fromText("TCK42:" + mimeType() + ":" + mulCode, "evaluate " + firstVar + " * " + secondVar).withMimeType("application/x-tck");
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
835 final PolyglotEngine.Value evalSource = vm().eval(source);
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
836 final PolyglotEngine.Value invokeMul = evalSource.execute(firstVar, secondVar);
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
837 Object result = invokeMul.get();
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
838 assertTrue("Expecting numeric result, was:" + result, result instanceof Number);
22382
fb607f23d1eb Apply formating rules
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22381
diff changeset
839 assertEquals("Right value", 42, ((Number) result).intValue());
22378
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
840 }
06bdf4a43126 Adding parse with argument names into the API and TCK
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22375
diff changeset
841
22488
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
842 @Test
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
843 public void testAddComplexNumbers() throws Exception {
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
844 String id = complexAdd();
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
845 if (id == null) {
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
846 return;
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
847 }
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
848 PolyglotEngine.Value apply = findGlobalSymbol(id);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
849
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
850 ComplexNumber a = new ComplexNumber(32, 10);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
851 ComplexNumber b = new ComplexNumber(10, 32);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
852
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
853 apply.execute(a, b);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
854
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
855 assertEquals(42.0, a.get(ComplexNumber.REAL_IDENTIFIER), 0.1);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
856 assertEquals(42.0, a.get(ComplexNumber.IMAGINARY_IDENTIFIER), 0.1);
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
857 }
fa7b15454c66 Add ComplexNumber test to TCK
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22437
diff changeset
858
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
859 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
860 public void testSumRealOfComplexNumbersA() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
861 String id = complexSumReal();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
862 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
863 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
864 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
865 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
866
22496
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
867 ComplexNumbersRowBased numbers = new ComplexNumbersRowBased(new double[]{2, -1, 30, -1, 10, -1});
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
868
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
869 Number n = (Number) apply.execute(numbers).get();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
870 assertEquals("The same value returned", 42.0, n.doubleValue(), 0.01);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
871 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
872
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
873 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
874 public void testSumRealOfComplexNumbersB() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
875 String id = complexSumReal();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
876 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
877 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
878 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
879 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
880
22496
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
881 ComplexNumbersColumnBased numbers = new ComplexNumbersColumnBased(new double[]{2, 30, 10}, new double[]{-1, -1, -1});
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
882
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
883 Number n = (Number) apply.execute(numbers).get();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
884 assertEquals("The same value returned", 42.0, n.doubleValue(), 0.01);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
885 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
886
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
887 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
888 public void testSumRealOfComplexNumbersAsStructuredDataRowBased() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
889 String id = complexSumReal();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
890 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
891 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
892 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
893 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
894
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
895 Schema schema = new Schema(3, true, Arrays.asList(ComplexNumber.REAL_IDENTIFIER, ComplexNumber.IMAGINARY_IDENTIFIER), Arrays.asList(Type.DOUBLE, Type.DOUBLE));
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
896 byte[] buffer = new byte[(6 * Double.SIZE / Byte.SIZE)];
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
897 putDoubles(buffer, new double[]{2, -1, 30, -1, 10, -1});
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
898 StructuredData numbers = new StructuredData(buffer, schema);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
899
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
900 Number n = (Number) apply.execute(numbers).get();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
901 assertEquals("The same value returned", 42.0, n.doubleValue(), 0.01);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
902 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
903
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
904 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
905 public void testSumRealOfComplexNumbersAsStructuredDataColumnBased() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
906 String id = complexSumReal();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
907 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
908 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
909 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
910 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
911
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
912 Schema schema = new Schema(3, false, Arrays.asList(ComplexNumber.REAL_IDENTIFIER, ComplexNumber.IMAGINARY_IDENTIFIER), Arrays.asList(Type.DOUBLE, Type.DOUBLE));
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
913 byte[] buffer = new byte[6 * Double.SIZE / Byte.SIZE];
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
914 putDoubles(buffer, new double[]{2, 30, 10, -1, -1, -1});
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
915
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
916 StructuredData numbers = new StructuredData(buffer, schema);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
917
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
918 Number n = (Number) apply.execute(numbers).get();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
919 assertEquals("The same value returned", 42.0, n.doubleValue(), 0.01);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
920 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
921
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
922 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
923 public void testCopyComplexNumbersA() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
924 String id = complexCopy();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
925 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
926 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
927 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
928 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
929
22496
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
930 ComplexNumbersRowBased a = new ComplexNumbersRowBased(new double[]{-1, -1, -1, -1, -1, -1});
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
931 ComplexNumbersRowBased b = new ComplexNumbersRowBased(new double[]{41, 42, 43, 44, 45, 46});
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
932
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
933 apply.execute(a, b);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
934
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
935 Assert.assertArrayEquals(new double[]{41, 42, 43, 44, 45, 46}, a.getData(), 0.1);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
936 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
937
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
938 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
939 public void testCopyComplexNumbersB() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
940 String id = complexCopy();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
941 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
942 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
943 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
944 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
945
22496
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
946 ComplexNumbersColumnBased a = new ComplexNumbersColumnBased(new double[]{-1, -1, -1}, new double[]{-1, -1, -1});
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
947 ComplexNumbersColumnBased b = new ComplexNumbersColumnBased(new double[]{41, 43, 45}, new double[]{42, 44, 46});
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
948
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
949 apply.execute(a, b);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
950
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
951 Assert.assertArrayEquals(new double[]{41, 42, 43, 44, 45, 46}, a.getData(), 0.1);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
952 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
953
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
954 @Test
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
955 public void testCopyStructuredComplexToComplexNumbersA() throws Exception {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
956 String id = complexCopy();
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
957 if (id == null) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
958 return;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
959 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
960 PolyglotEngine.Value apply = findGlobalSymbol(id);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
961
22496
b3569a53c24c Refactor and improve ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22495
diff changeset
962 ComplexNumbersRowBased a = new ComplexNumbersRowBased(new double[]{-1, -1, -1, -1, -1, -1});
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
963
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
964 Schema schema = new Schema(3, true, Arrays.asList(ComplexNumber.REAL_IDENTIFIER, ComplexNumber.IMAGINARY_IDENTIFIER), Arrays.asList(Type.DOUBLE, Type.DOUBLE));
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
965 byte[] buffer = new byte[6 * Double.SIZE / Byte.SIZE];
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
966 putDoubles(buffer, new double[]{41, 42, 43, 44, 45, 46});
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
967
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
968 StructuredData b = new StructuredData(buffer, schema);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
969
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
970 apply.execute(a, b);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
971
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
972 Assert.assertArrayEquals(new double[]{41, 42, 43, 44, 45, 46}, a.getData(), 0.1);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
973 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
974
22523
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
975 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
976 public void readWriteByteValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
977 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
978 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
979 assertEquals("Zero", 0, values.byteValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
980 final byte value = (byte) RANDOM.nextInt(128);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
981 values.byteValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
982 assertEquals("Correct value", value, values.byteValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
983 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
984
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
985 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
986 public void readWriteShortValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
987 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
988 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
989 assertEquals("Zero", 0, values.shortValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
990 final short value = (short) RANDOM.nextInt(32768);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
991 values.shortValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
992 assertEquals("Correct value", value, values.shortValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
993 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
994
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
995 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
996 public void readWriteIntValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
997 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
998 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
999 assertEquals("Zero", 0, values.intValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1000 final int value = RANDOM.nextInt();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1001 values.intValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1002 assertEquals("Correct value", value, values.intValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1003 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1004
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1005 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1006 public void readWriteFloatValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1007 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1008 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1009 assertEquals("Zero", 0, values.floatValue(), 0.1);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1010 final float value = RANDOM.nextFloat() * 1000.0f;
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1011 values.floatValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1012 assertEquals("Correct value", value, values.floatValue(), 0.1);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1013 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1014
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1015 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1016 public void readWriteDoubleValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1017 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1018 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1019 assertEquals("Zero", 0, values.doubleValue(), 0.1);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1020 final double value = RANDOM.nextDouble() * 1000.0;
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1021 values.doubleValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1022 assertEquals("Correct value", value, values.doubleValue(), 0.1);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1023 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1024
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1025 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1026 public void readWriteCharValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1027 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1028 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1029 assertEquals("Zero", '0', values.charValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1030 String letters = "P\u0159\u00EDli\u0161 \u017Elu\u0165ou\u010Dk\u00FD k\u016F\u0148 \u00FAp\u011Bl \u010F\u00E1belsk\u00E9 \u00F3dy";
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1031 final char value = letters.charAt(RANDOM.nextInt(letters.length()));
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1032 values.charValue(value);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1033 assertEquals("Correct value", value, values.charValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1034 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1035
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1036 @Test
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1037 public void readWriteBooleanValue() throws Exception {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1038 String id = valuesObject();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1039 ValuesObject values = findGlobalSymbol(id).execute().as(ValuesObject.class);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1040 assertEquals("False", false, values.booleanValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1041 values.booleanValue(true);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1042 assertEquals("Correct value", true, values.booleanValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1043 values.booleanValue(false);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1044 assertEquals("Correct value2", false, values.booleanValue());
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1045 }
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1046
22495
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1047 private static void putDoubles(byte[] buffer, double[] values) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1048 for (int index = 0; index < values.length; index++) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1049 int doubleSize = Double.SIZE / Byte.SIZE;
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1050 byte[] bytes = new byte[doubleSize];
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1051 ByteBuffer.wrap(bytes).putDouble(values[index]);
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1052 for (int i = 0; i < doubleSize; i++) {
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1053 buffer[index * doubleSize + i] = bytes[i];
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1054 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1055 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1056 }
aeba89e1d8da Add ComplexNumber sequence tests
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22488
diff changeset
1057
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
1058 private PolyglotEngine.Value findGlobalSymbol(String name) throws Exception {
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
1059 PolyglotEngine.Value s = vm().findGlobalSymbol(name);
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
1060 assert s != null : "Symbol " + name + " is not found!";
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
1061 return s;
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
1062 }
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1063
22156
50056a161d7f Replacing time out associated warnings by UnsupportedOperationException. Meaning of exception is probably more straightforward than a soft hint attempted before. Shouldn't influence the way things are build, if tests are skipped.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22142
diff changeset
1064 private CompoundObject findCompoundSymbol() throws Exception {
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1065 final String compoundObjectName = compoundObject();
22170
796f0fef110e Renaming to PolyglotEngine
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22168
diff changeset
1066 PolyglotEngine.Value s = vm().findGlobalSymbol(compoundObjectName);
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1067 assert s != null : "Symbol " + compoundObjectName + " is not found!";
22436
46a6d3eb790c Adopt TCK and Polyglot after changes to execute and invoke message
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 22382
diff changeset
1068 final PolyglotEngine.Value value = s.execute();
22141
46384e637592 Make sure the proper TruffleVM execution context is re-set before invoking an operation on a JavaInterop wrapper obtained via Symbol.as method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22140
diff changeset
1069 CompoundObject obj = value.as(CompoundObject.class);
46384e637592 Make sure the proper TruffleVM execution context is re-set before invoking an operation on a JavaInterop wrapper obtained via Symbol.as method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22140
diff changeset
1070 assertNotNull("Compound object for " + value + " found", obj);
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1071 int traverse = RANDOM.nextInt(10);
22141
46384e637592 Make sure the proper TruffleVM execution context is re-set before invoking an operation on a JavaInterop wrapper obtained via Symbol.as method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22140
diff changeset
1072 for (int i = 1; i <= traverse; i++) {
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1073 obj = obj.returnsThis();
22141
46384e637592 Make sure the proper TruffleVM execution context is re-set before invoking an operation on a JavaInterop wrapper obtained via Symbol.as method.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22140
diff changeset
1074 assertNotNull("Remains non-null even after " + i + " iteration", obj);
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1075 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1076 return obj;
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1077 }
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1078
22200
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1079 private static void assertSameTruffleObject(String msg, Object expected, Object actual) {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1080 Object unExpected = unwrapTruffleObject(expected);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1081 Object unAction = unwrapTruffleObject(actual);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1082 assertSame(msg, unExpected, unAction);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1083 }
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1084
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1085 private static Object unwrapTruffleObject(Object obj) {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1086 try {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1087 if (obj instanceof TruffleObject) {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1088 Class<?> eto = Class.forName("com.oracle.truffle.api.vm.EngineTruffleObject");
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1089 if (eto.isInstance(obj)) {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1090 final Field field = eto.getDeclaredField("delegate");
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1091 field.setAccessible(true);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1092 return field.get(obj);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1093 }
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1094 }
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1095 return obj;
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1096 } catch (Exception ex) {
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1097 throw new IllegalStateException(ex);
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1098 }
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1099 }
7abcbeb12d08 Creating a TruffleObject that knows its PolyglotEngine and wrapping all values returned from the engine by it, so it is always clear into which engine context an object belongs.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22173
diff changeset
1100
22135
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1101 interface CompoundObject {
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1102 Number fourtyTwo();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1103
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1104 Number plus(int x, int y);
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1105
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1106 Object returnsNull();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1107
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1108 CompoundObject returnsThis();
e70b20f4bb00 Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22121
diff changeset
1109 }
22523
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1110
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1111 interface ValuesObject {
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1112 byte byteValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1113
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1114 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1115 void byteValue(byte v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1116
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1117 short shortValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1118
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1119 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1120 void shortValue(short v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1121
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1122 int intValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1123
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1124 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1125 void intValue(int v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1126
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1127 long longValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1128
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1129 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1130 void longValue(long v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1131
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1132 float floatValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1133
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1134 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1135 void floatValue(float v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1136
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1137 double doubleValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1138
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1139 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1140 void doubleValue(double v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1141
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1142 char charValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1143
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1144 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1145 void charValue(char v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1146
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1147 boolean booleanValue();
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1148
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1149 @MethodMessage(message = "WRITE")
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1150 void booleanValue(boolean v);
6ab540203853 Expanding TCK to cover reading and writing of object properties with various primitive types
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22496
diff changeset
1151 }
21938
0a6e10379b9b Keeping only Truffle-related modules in this repository
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
diff changeset
1152 }