summaryrefslogtreecommitdiff
path: root/chapter01/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'chapter01/src/test/java')
-rw-r--r--chapter01/src/test/java/com/seaofnodes/simple/ParserTest.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/chapter01/src/test/java/com/seaofnodes/simple/ParserTest.java b/chapter01/src/test/java/com/seaofnodes/simple/ParserTest.java
index 9f4a9a2e..ad420ece 100644
--- a/chapter01/src/test/java/com/seaofnodes/simple/ParserTest.java
+++ b/chapter01/src/test/java/com/seaofnodes/simple/ParserTest.java
@@ -1,6 +1,9 @@
package com.seaofnodes.simple;
+import com.seaofnodes.simple.node.ConstantNode;
import com.seaofnodes.simple.node.Node;
+import com.seaofnodes.simple.node.ReturnNode;
+import com.seaofnodes.simple.node.StartNode;
import org.junit.Assert;
import org.junit.Test;
@@ -9,7 +12,26 @@ public class ParserTest {
@Test
public void testSimpleProgram() {
Parser parser = new Parser();
- Node startNode = parser.parse("return 1;");
+ StartNode startNode = parser.parse("return 1;");
Assert.assertNotNull(startNode);
+ Assert.assertTrue(startNode.isControl());
+ Assert.assertEquals(2, startNode.numOutputs());
+ for (int i = 0; i < startNode.numOutputs(); i++) {
+ Node out = startNode.out(i);
+ if (out instanceof ReturnNode) {
+ Assert.assertEquals(2, out.numInputs());
+ Assert.assertEquals(startNode, out.in(0));
+ Assert.assertTrue(out.isControl());
+ Assert.assertTrue(out.in(1) instanceof ConstantNode);
+ }
+ else if (out instanceof ConstantNode cn) {
+ Assert.assertEquals(1, cn._value);
+ Assert.assertEquals(1, cn.numInputs());
+ Assert.assertEquals(startNode, cn.in(0));
+ }
+ else {
+ throw new IllegalStateException();
+ }
+ }
}
}