summaryrefslogtreecommitdiff
path: root/chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-22 15:47:50 -0700
committerCliff Click <cliffc@acm.org>2026-10-22 15:47:50 -0700
commitdeafd9a6fa34938c0c8c9589097e8c84e39bfa1b (patch)
treedb39ecbad856f986b84e229dbc4c023473892976 /chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java
parentdbcaebdefff26658debc29cae284ad4aa0da4c65 (diff)
downloadSimple-main.tar.gz
Simple-main.zip
Split out the constructor chaptermain
Diffstat (limited to 'chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java')
-rw-r--r--chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java b/chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java
new file mode 100644
index 00000000..a51ac202
--- /dev/null
+++ b/chapter-construction/src/test/java/com/seaofnodes/simple/Chapter02Test.java
@@ -0,0 +1,61 @@
+package com.seaofnodes.simple;
+
+import com.seaofnodes.simple.codegen.CodeGen;
+import com.seaofnodes.simple.node.*;
+import com.seaofnodes.simple.type.TypeInteger;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class Chapter02Test {
+
+ @Test
+ public void testParseGrammar() {
+ CodeGen code = new CodeGen("return 1+2*3+-5;");
+ code.parse();
+ assertEquals("return 2;", code.print());
+ }
+
+ @Test
+ public void testAddPeephole() {
+ CodeGen code = new CodeGen("return 1+2;");
+ code.parse();
+ assertEquals("return 3;", code.print());
+ }
+
+ @Test
+ public void testSubPeephole() {
+ CodeGen code = new CodeGen("return 1-2;");
+ code.parse();
+ assertEquals("return -1;", code.print());
+ }
+
+ @Test
+ public void testMulPeephole() {
+ CodeGen code = new CodeGen("return 2*3;");
+ code.parse();
+ assertEquals("return 6;", code.print());
+ }
+
+ @Test
+ public void testDivPeephole() {
+ CodeGen code = new CodeGen("return 6/3;");
+ code.parse();
+ assertEquals("return 2;", code.print());
+ }
+
+ @Test
+ public void testMinusPeephole() {
+ CodeGen code = new CodeGen("return 6/-3;");
+ code.parse();
+ assertEquals("return -2;", code.print());
+ }
+
+ @Test
+ public void testExample() {
+ CodeGen code = new CodeGen("return 1+2*3+-5;");
+ code.parse();
+ assertEquals("return 2;", code.print());
+ }
+
+}