From d5cd0dbdfb478c4170b76466944e3020a9336975 Mon Sep 17 00:00:00 2001
From: qwertzniki6 <104077966+bretzNiklas@users.noreply.github.com>
Date: Thu, 12 Jan 2023 16:09:36 +0100
Subject: [PATCH] Added design by contracts

---
 Aufgabe4Maven/pom.xml             | 11 +++++++----
 Aufgabe4Maven/src/Evaluator.java  |  5 ++++-
 Aufgabe4Maven/src/Lexer.java      | 14 +++++++++-----
 Aufgabe4Maven/src/Parser.java     |  8 +++++++-
 Aufgabe4Maven/src/Plotter.java    |  4 ----
 Aufgabe4Maven/src/dbcTest.java    | 24 ++++++++++++++++++++++++
 Aufgabe4Maven/src/expressions.txt |  1 +
 Aufgabe4Maven/src/main.java       |  8 +++++++-
 8 files changed, 59 insertions(+), 16 deletions(-)
 create mode 100644 Aufgabe4Maven/src/dbcTest.java

diff --git a/Aufgabe4Maven/pom.xml b/Aufgabe4Maven/pom.xml
index ad36081..1456746 100644
--- a/Aufgabe4Maven/pom.xml
+++ b/Aufgabe4Maven/pom.xml
@@ -27,13 +27,16 @@
             <version>5.9.0</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>com.google.java.contract</groupId>
-            <artifactId>cofoja</artifactId>
-            <version>1.1-r150</version>
+            <groupId>org.valid4j</groupId>
+            <artifactId>valid4j</artifactId>
+            <version>0.5.0</version>
         </dependency>
 
 
     </dependencies>
 
-</project>
\ No newline at end of file
+
+</project>
+
diff --git a/Aufgabe4Maven/src/Evaluator.java b/Aufgabe4Maven/src/Evaluator.java
index 8dfd35b..5204369 100644
--- a/Aufgabe4Maven/src/Evaluator.java
+++ b/Aufgabe4Maven/src/Evaluator.java
@@ -1,3 +1,4 @@
+import static org.valid4j.Assertive.*;
 
 
 public class Evaluator {
@@ -29,7 +30,8 @@ public class Evaluator {
 
     public float visit(AstBinaryOp node) {
 
-        visit(node.astExpression1);
+
+        //visit(node.astExpression1);
 
         switch(node.astOperator.astOperatorContent) {
 
@@ -45,6 +47,7 @@ public class Evaluator {
                 return (float) Math.pow(visit(node.astExpression1), visit(node.astExpression2));
         }
 
+        neverGetHere();
         return -111;
     }
 
diff --git a/Aufgabe4Maven/src/Lexer.java b/Aufgabe4Maven/src/Lexer.java
index 73240a0..873e208 100644
--- a/Aufgabe4Maven/src/Lexer.java
+++ b/Aufgabe4Maven/src/Lexer.java
@@ -1,21 +1,25 @@
 import java.util.ArrayList;
 import java.util.Objects;
-import com.google.java.contract.*;
+
+
 
 public class Lexer {
 
 
-    @Requires({"s != null"})
+
+
     public ArrayList<Token> lex(String s) {
+        require(s != null);
+        require(s.length() > 0);
 
         ArrayList<String> separatedChars = separateChars(s);
 
         ArrayList<String> tokensAsStrings = buildSubstringsFromSeparatedChars(separatedChars);
 
-        return constructTokenList(tokensAsStrings);
-
-
+        ArrayList<Token> tokenList = constructTokenList(tokensAsStrings);
 
+        ensure(tokenList.size() > 0);
+        return tokenList;
     }
 
     private ArrayList<String> separateChars(String stringToTokenize) {
diff --git a/Aufgabe4Maven/src/Parser.java b/Aufgabe4Maven/src/Parser.java
index 1bfbca2..0287bed 100644
--- a/Aufgabe4Maven/src/Parser.java
+++ b/Aufgabe4Maven/src/Parser.java
@@ -1,16 +1,20 @@
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import static org.valid4j.Assertive.*;
 
 public class Parser {
 
-    public AstExpression parse (ArrayList<Token> tokenList) throws Exception {
+    public AstExpression parse(ArrayList<Token> tokenList) throws Exception {
+        require(tokenList.size() > 0);
 
         AstExpression root;
 
         root = parseAstExpression(tokenList);
 
+        ensure(root.astBinaryOp != null || root.astExpression != null || root.astValue != null);
         return root;
     }
 
@@ -25,6 +29,7 @@ public class Parser {
         if(tokenList.size() == 1 ) {
 
             toReturn.astValue = parseValue(tokenList);
+
             return toReturn;
 
         }
@@ -283,6 +288,7 @@ public class Parser {
     }
 
     private AstDigitWoZ parseDigitWoZ (Token digitWoZ) {
+        require(!Objects.equals(digitWoZ.tokenString, "0"));
 
         AstDigitWoZ toReturn = new AstDigitWoZ();
 
diff --git a/Aufgabe4Maven/src/Plotter.java b/Aufgabe4Maven/src/Plotter.java
index 9737b0d..5036fd7 100644
--- a/Aufgabe4Maven/src/Plotter.java
+++ b/Aufgabe4Maven/src/Plotter.java
@@ -68,24 +68,20 @@ class PlotterPanel extends JPanel {
                 int[] xCords = valuesToDraw.getXCords();
 
                 for(int cord : xCords) {
-
                     yCordsWithOffset[i] = (ZERO_POINT_Y + (cord * -1 * 10));
                     i++;
                 }
 
-                System.out.println(Arrays.toString(yCordsWithOffset));
 
                 int j = 0;
 
                 int[] yCords = valuesToDraw.getYCords();
 
                 for(int cord : yCords) {
-                    System.out.print("cords=" + cord);
                     xCordsWithOffset[j] = ZERO_POINT_X + (cord * 10);
                     j++;
                 }
 
-                System.out.println(Arrays.toString(xCordsWithOffset));
 
 
                 PlotterPanel.this.yCords = yCordsWithOffset;
diff --git a/Aufgabe4Maven/src/dbcTest.java b/Aufgabe4Maven/src/dbcTest.java
new file mode 100644
index 0000000..f1b5899
--- /dev/null
+++ b/Aufgabe4Maven/src/dbcTest.java
@@ -0,0 +1,24 @@
+import com.google.java.contract.Invariant;
+
+import static org.valid4j.Assertive.*;
+
+public class dbcTest {
+
+    public static void main(String[] args) {
+
+        print(null);
+
+    }
+
+    public static void print(String s) {
+
+        System.out.println(s);
+
+        int i = 5;
+
+        ensure(i > 6);
+
+
+    }
+
+}
diff --git a/Aufgabe4Maven/src/expressions.txt b/Aufgabe4Maven/src/expressions.txt
index 5c449bf..593ba55 100644
--- a/Aufgabe4Maven/src/expressions.txt
+++ b/Aufgabe4Maven/src/expressions.txt
@@ -1,3 +1,4 @@
+11111111111111111111111111111111111
 x
 x^2
 4+3+x
diff --git a/Aufgabe4Maven/src/main.java b/Aufgabe4Maven/src/main.java
index 4442789..e720b34 100644
--- a/Aufgabe4Maven/src/main.java
+++ b/Aufgabe4Maven/src/main.java
@@ -51,7 +51,13 @@ public class main {
 
 
         for(ArrayList<Token> tokenList : tokenListList) {
-            rootAstExpressions.add(p.parse(tokenList));
+
+            try {
+                rootAstExpressions.add(p.parse(tokenList));
+            } catch (Exception e) {
+                System.out.println("Invalid function received");
+            }
+
         }
 
 
-- 
GitLab