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