summaryrefslogtreecommitdiff
path: root/chapter-interprocedural-sccp/src/test/java/com/seaofnodes/simple/Chapter02Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'chapter-interprocedural-sccp/src/test/java/com/seaofnodes/simple/Chapter02Test.java')
-rw-r--r--chapter-interprocedural-sccp/src/test/java/com/seaofnodes/simple/Chapter02Test.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/chapter-interprocedural-sccp/src/test/java/com/seaofnodes/simple/Chapter02Test.java b/chapter-interprocedural-sccp/src/test/java/com/seaofnodes/simple/Chapter02Test.java
new file mode 100644
index 00000000..a51ac202
--- /dev/null
+++ b/chapter-interprocedural-sccp/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());
+ }
+
+}