comparison graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java @ 13271:2b9fcffd6f36

Truffle-DSL: added support for generating execute methods with java varargs.
author Christian Humer <christian.humer@gmail.com>
date Sun, 01 Dec 2013 18:18:33 +0100
parents 5fbd1ba4a5f3
children 0b8335a4fb13
comparison
equal deleted inserted replaced
13203:401e1473c546 13271:2b9fcffd6f36
24 24
25 import org.junit.*; 25 import org.junit.*;
26 26
27 import com.oracle.truffle.api.*; 27 import com.oracle.truffle.api.*;
28 import com.oracle.truffle.api.dsl.*; 28 import com.oracle.truffle.api.dsl.*;
29 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.*; 29 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.DoubleEvaluatedNodeFactory;
30 import com.oracle.truffle.api.dsl.test.TypeSystemTest.*; 30 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.EvaluatedNodeFactory;
31 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedGenerationFactory;
32 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs0Factory;
33 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs1Factory;
34 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs2Factory;
35 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseDoubleEvaluatedNodeFactory;
36 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseEvaluatedNodeFactory;
37 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ArgumentNode;
38 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ChildrenNode;
39 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestArguments;
40 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode;
41 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode;
31 import com.oracle.truffle.api.frame.*; 42 import com.oracle.truffle.api.frame.*;
32 import com.oracle.truffle.api.nodes.*; 43 import com.oracle.truffle.api.nodes.*;
33 44
34 public class ExecuteEvaluatedTest { 45 public class ExecuteEvaluatedTest {
35 46
124 int call(int exp0) { 135 int call(int exp0) {
125 return exp0; 136 return exp0;
126 } 137 }
127 } 138 }
128 139
140 @Test
141 public void test0VarArgs1() {
142 TestRootNode<TestEvaluatedVarArgs0> root = TestHelper.createRoot(TestEvaluatedVarArgs0Factory.getInstance());
143 Assert.assertEquals(42, root.getNode().execute1(null));
144 }
145
146 abstract static class TestEvaluatedVarArgs0 extends ChildrenNode {
147
148 public abstract Object execute1(VirtualFrame frame, Object... value);
149
150 @Specialization
151 int call() {
152 return 42;
153 }
154 }
155
156 @Test
157 public void test1VarArgs1() {
158 TestRootNode<TestEvaluatedVarArgs1> root = TestHelper.createRoot(TestEvaluatedVarArgs1Factory.getInstance());
159 Assert.assertEquals(42, root.getNode().execute1(null, 42));
160 }
161
162 @Test(expected = AssertionError.class)
163 public void test1VarArgs2() {
164 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance());
165 Assert.assertEquals(-1, root.getNode().execute1(null));
166 }
167
168 abstract static class TestEvaluatedVarArgs1 extends ChildrenNode {
169
170 public abstract Object execute1(VirtualFrame frame, Object... value);
171
172 @Specialization
173 int call(int exp0) {
174 return exp0;
175 }
176 }
177
178 @Test
179 public void test2VarArgs1() {
180 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance());
181 Assert.assertEquals(42, root.getNode().execute1(null, 21, 21));
182 }
183
184 @Test(expected = AssertionError.class)
185 public void test2VarArgs2() {
186 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance());
187 Assert.assertEquals(-1, root.getNode().execute1(null, 42));
188 }
189
190 @Test(expected = AssertionError.class)
191 public void test2VarArgs3() {
192 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance());
193 Assert.assertEquals(-1, root.getNode().execute1(null));
194 }
195
196 abstract static class TestEvaluatedVarArgs2 extends ChildrenNode {
197
198 public abstract Object execute1(VirtualFrame frame, Object... value);
199
200 @Specialization
201 int call(int exp0, int exp1) {
202 return exp0 + exp1;
203 }
204 }
205
129 } 206 }