Mercurial > hg > truffle
diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java @ 11544:e5b5a5cb0ac7
Truffle-DSL: polymorphic test asserts now on any child node's parent.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 06 Sep 2013 16:11:15 +0200 |
parents | 80de3bbfa8b9 |
children | 5d1308c78ddc |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java Fri Sep 06 16:10:09 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java Fri Sep 06 16:11:15 2013 +0200 @@ -37,6 +37,17 @@ public class PolymorphicTest { + private static void assertParent(Node expectedParent, Node child) { + Node parent = child.getParent(); + while (parent != null && parent != expectedParent) { + parent = parent.getParent(); + } + + if (parent != expectedParent) { + assertEquals(expectedParent, parent); + } + } + @Test public void testJustSpecialize() { TestRootNode<Node1> node = TestHelper.createRoot(Node1Factory.getInstance()); @@ -45,8 +56,8 @@ assertEquals("(int,boolean)", executeWith(node, 42, false)); assertEquals("(boolean,int)", executeWith(node, false, 42)); assertEquals(Kind.SPECIALIZED, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @Test @@ -55,8 +66,8 @@ assertEquals("(int,boolean)", executeWith(node, 42, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.POLYMORPHIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @Test @@ -66,8 +77,8 @@ assertEquals("(boolean,boolean)", executeWith(node, true, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.POLYMORPHIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @Test @@ -78,17 +89,17 @@ assertEquals("(boolean,boolean)", executeWith(node, true, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @Test public void testGenericInitial() { TestRootNode<Node1> node = TestHelper.createRoot(Node1Factory.getInstance()); - assertEquals("(generic,generic)", executeWith(node, "", "")); + assertEquals("(generic,generic)", executeWith(node, "1", "1")); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @Test @@ -99,8 +110,8 @@ assertEquals("(generic,generic)", executeWith(node, "", "")); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); /* Assertions for bug GRAAL-425 */ - assertEquals(node.getNode(), node.getNode().getLeft().getParent()); - assertEquals(node.getNode(), node.getNode().getRight().getParent()); + assertParent(node.getNode(), node.getNode().getLeft()); + assertParent(node.getNode(), node.getNode().getRight()); } @SuppressWarnings("unused")