aboutsummaryrefslogtreecommitdiff
path: root/calculator-java/src/test/java/ExpressionParserTest.java
diff options
context:
space:
mode:
authorMaël Gassmann <mael.gassmann@students.bfh.ch>2021-06-11 11:43:49 +0200
committerMaël Gassmann <mael.gassmann@students.bfh.ch>2021-06-11 11:43:49 +0200
commit49f30529d9cd2ed62902079a45d4d3c1f45afbda (patch)
tree0ec8186d4ad35ee9bfd8077a682b451a1b43951d /calculator-java/src/test/java/ExpressionParserTest.java
parent403c6a951e890d3e1914779ee35576859a38d33e (diff)
[+] Added JUnit tests (only testign valid expressions as of now)
Diffstat (limited to 'calculator-java/src/test/java/ExpressionParserTest.java')
-rw-r--r--calculator-java/src/test/java/ExpressionParserTest.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/calculator-java/src/test/java/ExpressionParserTest.java b/calculator-java/src/test/java/ExpressionParserTest.java
new file mode 100644
index 0000000..8a9814c
--- /dev/null
+++ b/calculator-java/src/test/java/ExpressionParserTest.java
@@ -0,0 +1,115 @@
+import ch.bfh.CalculatorLexer;
+import ch.bfh.parser.ExpressionParser;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+
+public class ExpressionParserTest {
+
+ // Only testing correct expressions first
+ @Test
+ public void emptyExpression() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(0.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void oneFactor() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("10");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(10.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void oneParenthesisedFactor() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("(10)");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(10.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void oneNegativeFactor() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("-10");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(-10.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void oneNegativeParenthesisedFactor() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("-(10)");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(-10.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void oneNegativeParenthesisedNegativeFactor() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("-(-10)");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(10.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorSum() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("2+3");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(5.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorSub() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("2-3");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(-1.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorSumWithSub() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("2--3");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(5.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorSumWithSubParenthesised() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("2-(-3)");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(5.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorMul() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("2*3");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(6.0, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void twoFactorDiv() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("11/4");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(2.75, ep.getValue(), 0.0);
+ }
+
+ @Test
+ public void completeArithmeticOperationWithPriorities() {
+ CalculatorLexer cl = new CalculatorLexer();
+ cl.initLexer("(4+5)*3/4");
+ ExpressionParser ep = new ExpressionParser(cl);
+ assertEquals(6.75, ep.getValue(), 0.0);
+ }
+
+ //TODO - test error messages
+
+}