From 1021067099085d6b8cd7384580ddc83cb696c1d4 Mon Sep 17 00:00:00 2001 From: Tim Nolle Date: Fri, 10 Sep 2021 16:22:20 +0200 Subject: [PATCH 1/5] updated gitignore to ignore the eclipse-files --- .gitignore | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/.gitignore b/.gitignore index a1c2a23..0b4f76c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +ProfCalculator/.classpath +.project # Compiled class file *.class @@ -21,3 +23,101 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + + +# Created by https://www.toptal.com/developers/gitignore/api/java,eclipse +# Edit at https://www.toptal.com/developers/gitignore?templates=java,eclipse + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# End of https://www.toptal.com/developers/gitignore/api/java,eclipse + From fd42db38d38397de789c4b88220c2a9e5336a834 Mon Sep 17 00:00:00 2001 From: Tim Nolle Date: Wed, 15 Sep 2021 13:44:52 +0200 Subject: [PATCH 2/5] updated settings to java11 --- ProfCalculator/.classpath | 2 +- ProfCalculator/.settings/org.eclipse.jdt.core.prefs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ProfCalculator/.classpath b/ProfCalculator/.classpath index 2b1ff5c..333252e 100644 --- a/ProfCalculator/.classpath +++ b/ProfCalculator/.classpath @@ -1,6 +1,6 @@ - + diff --git a/ProfCalculator/.settings/org.eclipse.jdt.core.prefs b/ProfCalculator/.settings/org.eclipse.jdt.core.prefs index ef28d2b..cd8d089 100644 --- a/ProfCalculator/.settings/org.eclipse.jdt.core.prefs +++ b/ProfCalculator/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=13 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=13 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -10,5 +11,5 @@ org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=13 +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=11 From ddf57ca637313846cfbb818d3d557fc482f1f834 Mon Sep 17 00:00:00 2001 From: Tim Nolle Date: Wed, 15 Sep 2021 13:49:09 +0200 Subject: [PATCH 3/5] implemented subtraction-feature and added button for it --- .../sp/swt/profcalculator/ProfCalculator.java | 13 +++++++----- .../expressions/NecessaryBrackets.java | 4 ++-- .../swt/profcalculator/expressions/Sub.java | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Sub.java diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java index 20f6660..e9980c5 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java @@ -20,10 +20,10 @@ import javafx.scene.paint.Color; import javafx.stage.Stage; -public class ProfCalculator extends Application implements EventHandler { +public class ProfCalculator extends Application implements EventHandler { private Expression expression = new CounterValue(this); - + private GUIFactory guiFactory = new BlueFontGUIFactory(); private Label errorLabel = guiFactory.createLabel(); @@ -31,6 +31,7 @@ public class ProfCalculator extends Application implements EventHandler Date: Wed, 15 Sep 2021 14:46:33 +0200 Subject: [PATCH 4/5] added WhioteBox tests for necessaryBrackets with subtraction --- ProfCalculator/.classpath | 1 + .../expressions/NecessaryBrackets.java | 2 +- .../test/TNecessaryBracketsWhiteBox.java | 55 +++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java diff --git a/ProfCalculator/.classpath b/ProfCalculator/.classpath index 333252e..19eb77e 100644 --- a/ProfCalculator/.classpath +++ b/ProfCalculator/.classpath @@ -8,5 +8,6 @@ + diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/NecessaryBrackets.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/NecessaryBrackets.java index 89d56dd..5ebd1c2 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/NecessaryBrackets.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/NecessaryBrackets.java @@ -11,7 +11,7 @@ public NecessaryBrackets(Expression expression) { @Override public String toString(Expression parent) { String childString = expression.toString(parent); - if (parent instanceof Multiplication && expression instanceof Addition) { + if (parent instanceof Multiplication && (expression instanceof Addition || expression instanceof Sub)) { childString = "(" + childString + ")"; } return childString; diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java new file mode 100644 index 0000000..e86c8ad --- /dev/null +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java @@ -0,0 +1,55 @@ +package de.uulm.sp.swt.profcalculator.expressions.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import de.uulm.sp.swt.profcalculator.expressions.Addition; +import de.uulm.sp.swt.profcalculator.expressions.Expression; +import de.uulm.sp.swt.profcalculator.expressions.Multiplication; +import de.uulm.sp.swt.profcalculator.expressions.NecessaryBrackets; +import de.uulm.sp.swt.profcalculator.expressions.Sub; +import de.uulm.sp.swt.profcalculator.expressions.Value; + +class TNecessaryBracketsWhiteBox { + + @Test + void testAdditionWithinMultiplication() { + Expression child = new Addition(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Multiplication(brackets, new Value(3)); + assertEquals(parent.toString(), "(1 + 2) * 3"); + } + + @Test + void testMultiplicationWithinAddition() { + Expression child = new Multiplication(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Addition(brackets, new Value(3)); + assertEquals(parent.toString(), "1 * 2 + 3"); + } + + @Test + void testMultiplicationWithinMultiplication() { + Expression child = new Multiplication(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Multiplication(brackets, new Value(3)); + assertEquals(parent.toString(), "1 * 2 * 3"); + } + + @Test + void testSubtractionWithinMultiplication() { + Expression child = new Sub(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Multiplication(brackets, new Value(3)); + assertEquals(parent.toString(), "(1 - 2) * 3"); + } + + @Test + void testMultiplicationWithinSubtraction() { + Expression child = new Multiplication(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Sub(brackets, new Value(3)); + assertEquals(parent.toString(), "1 * 2 - 3"); + } +} From c6dc83402caa301dd3f86990785e6d2661240deb Mon Sep 17 00:00:00 2001 From: Tim Nolle Date: Tue, 5 Oct 2021 15:40:45 +0200 Subject: [PATCH 5/5] fixed brackets for negative input --- .../sp/swt/profcalculator/ProfCalculator.java | 4 +++- .../profcalculator/expressions/Addition.java | 3 +++ .../expressions/CounterValue.java | 2 +- .../expressions/Multiplication.java | 3 +++ .../swt/profcalculator/expressions/Sub.java | 3 +++ .../test/TNecessaryBracketsWhiteBox.java | 24 +++++++++++++++++++ 6 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java index e9980c5..65819b3 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/ProfCalculator.java @@ -5,6 +5,7 @@ import de.uulm.sp.swt.profcalculator.expressions.Expression; import de.uulm.sp.swt.profcalculator.expressions.Multiplication; import de.uulm.sp.swt.profcalculator.expressions.NecessaryBrackets; +import de.uulm.sp.swt.profcalculator.expressions.Sub; import de.uulm.sp.swt.profcalculator.expressions.Value; import de.uulm.sp.swt.profcalculator.gui.BlueFontGUIFactory; import de.uulm.sp.swt.profcalculator.gui.GUIFactory; @@ -48,6 +49,7 @@ public void start(Stage stage) throws Exception { stage.setScene(scene); stage.show(); additionButton.setOnAction(this); + subButton.setOnAction(this); multiplicationButton.setOnAction(this); updateGUI(); } @@ -60,7 +62,7 @@ public void handle(ActionEvent event) { expression = new Addition(expression, new Value(newValue)); Logger.getLogger().log("+ " + newValue); } else if (event.getSource() == subButton) { - expression = new Multiplication(expression, new Value(newValue)); + expression = new Sub(expression, new Value(newValue)); Logger.getLogger().log("- " + newValue); } else if (event.getSource() == multiplicationButton) { expression = new Multiplication(expression, new Value(newValue)); diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Addition.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Addition.java index 290f903..6b3e437 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Addition.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Addition.java @@ -11,6 +11,9 @@ public Addition(Expression left, Expression right) { } public String toString(Expression parent) { + if (right.evaluate() < 0) { + return left.toString(this) + " + (" + right.toString(this) + ")"; + } return left.toString(this) + " + " + right.toString(this); } diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/CounterValue.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/CounterValue.java index 7262a41..c9424da 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/CounterValue.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/CounterValue.java @@ -15,7 +15,7 @@ public CounterValue(ProfCalculator calc) { @Override public void run() { - while (value < 1) { + while (value < 0) { try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Multiplication.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Multiplication.java index ba5f46e..becbab9 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Multiplication.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Multiplication.java @@ -11,6 +11,9 @@ public Multiplication(Expression left, Expression right) { } public String toString(Expression parent) { + if (right.evaluate() < 0) { + return left.toString(this) + " * (" + right.toString(this) + ")"; + } return left.toString(this) + " * " + right.toString(parent); } diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Sub.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Sub.java index d43cabe..34a6b5a 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Sub.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/Sub.java @@ -11,6 +11,9 @@ public Sub(Expression left, Expression right) { } public String toString(Expression parent) { + if (right.evaluate() < 0) { + return left.toString(this) + " - (" + right.toString(this) + ")"; + } return left.toString(this) + " - " + right.toString(this); } diff --git a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java index e86c8ad..2425feb 100644 --- a/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java +++ b/ProfCalculator/src/de/uulm/sp/swt/profcalculator/expressions/test/TNecessaryBracketsWhiteBox.java @@ -52,4 +52,28 @@ void testMultiplicationWithinSubtraction() { Expression parent = new Sub(brackets, new Value(3)); assertEquals(parent.toString(), "1 * 2 - 3"); } + + @Test + void testMultiplicationWithinSubtractionNegativeNumber() { + Expression child = new Multiplication(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Sub(brackets, new Value(-3)); + assertEquals(parent.toString(), "1 * 2 - (-3)"); + } + + @Test + void testSubtractionWithinMultiplicationWithNegativeNumber() { + Expression child = new Sub(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Multiplication(brackets, new Value(-3)); + assertEquals(parent.toString(), "(1 - 2) * (-3)"); + } + + @Test + void testMultiplicationWithinAdditionWithNegativeNumber() { + Expression child = new Multiplication(new Value(1), new Value(2)); + Expression brackets = new NecessaryBrackets(child); + Expression parent = new Addition(brackets, new Value(-3)); + assertEquals(parent.toString(), "1 * 2 + (-3)"); + } }