evalPoints);
}
diff --git a/src/main/java/calculator/service/impl/CalculatorServiceImpl.java b/src/main/java/calculator/service/impl/CalculatorServiceImpl.java
index 97b1fe3..4369ff9 100644
--- a/src/main/java/calculator/service/impl/CalculatorServiceImpl.java
+++ b/src/main/java/calculator/service/impl/CalculatorServiceImpl.java
@@ -3,31 +3,34 @@
import calculator.DTO.DerivativeResponse;
import calculator.service.CalculatorService;
-import calculator.util.ast.AbstractSyntaxTree;
import calculator.util.StringToStream;
+import calculator.util.ast.AbstractSyntaxTree;
import calculator.util.terms.Term;
-import java.util.List;
+import com.google.common.collect.ImmutableList;
import org.springframework.stereotype.Service;
/**
- * TO USE: 1) create the Parser using an input stream 2) Call get root to get the term at the
- * base of the AST.
+ * TO USE: 1) create the Parser using an input stream 2) Call get root to get the term at the base
+ * of the AST.
*
* TO GET DERIVATIVE: call getDerivative on the term returned from getRoot()
*/
@Service
public class CalculatorServiceImpl implements CalculatorService {
@Override
- public DerivativeResponse evaluateDerivative(String expression, List evalPoints) {
- AbstractSyntaxTree abstractSyntaxTree = new AbstractSyntaxTree(StringToStream.convertStringToStream(expression));
+ public DerivativeResponse evaluateDerivative(
+ String expression, ImmutableList evalPoints) {
+ AbstractSyntaxTree abstractSyntaxTree =
+ new AbstractSyntaxTree(StringToStream.convertStringToStream(expression));
Term derivative = abstractSyntaxTree.getDeriv();
return new DerivativeResponse(derivative.toString(), derivative.evaluate(evalPoints));
}
@Override
- public double evaluateExpression(String expression) {
- AbstractSyntaxTree abstractSyntaxTree = new AbstractSyntaxTree(StringToStream.convertStringToStream(expression));
+ public double evaluateExpression(String expression, ImmutableList evalPoints) {
+ AbstractSyntaxTree abstractSyntaxTree =
+ new AbstractSyntaxTree(StringToStream.convertStringToStream(expression));
Term root = abstractSyntaxTree.getRoot();
- return root.evaluate(null);
+ return root.evaluate(evalPoints);
}
}
diff --git a/src/main/java/calculator/util/rules/AdditionRule.java b/src/main/java/calculator/util/rules/AdditionRule.java
index 2a1c779..8a530c7 100644
--- a/src/main/java/calculator/util/rules/AdditionRule.java
+++ b/src/main/java/calculator/util/rules/AdditionRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.makeAdditionRule;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
import java.util.stream.Collectors;
/**
@@ -50,7 +50,7 @@ public AdditionRule addTerm(Term t) {
* @param dims the variable values to use when evaulating
* @return the result
*/
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return this.terms.stream().map(x -> x.evaluate(dims)).reduce(0.0, Double::sum);
}
diff --git a/src/main/java/calculator/util/rules/ArcCosRule.java b/src/main/java/calculator/util/rules/ArcCosRule.java
index f7ebcde..f608616 100644
--- a/src/main/java/calculator/util/rules/ArcCosRule.java
+++ b/src/main/java/calculator/util/rules/ArcCosRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class ArcCosRule extends TrigRule {
@@ -28,7 +28,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/ArcCotRule.java b/src/main/java/calculator/util/rules/ArcCotRule.java
index 297f2c1..fa1778c 100644
--- a/src/main/java/calculator/util/rules/ArcCotRule.java
+++ b/src/main/java/calculator/util/rules/ArcCotRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class ArcCotRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/ArcSinRule.java b/src/main/java/calculator/util/rules/ArcSinRule.java
index f7e843e..f832bfa 100644
--- a/src/main/java/calculator/util/rules/ArcSinRule.java
+++ b/src/main/java/calculator/util/rules/ArcSinRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class ArcSinRule extends TrigRule {
@@ -28,7 +28,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/ArcTanRule.java b/src/main/java/calculator/util/rules/ArcTanRule.java
index f27bbe5..2be3cd0 100644
--- a/src/main/java/calculator/util/rules/ArcTanRule.java
+++ b/src/main/java/calculator/util/rules/ArcTanRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class ArcTanRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/ChainRule.java b/src/main/java/calculator/util/rules/ChainRule.java
index dd90dc8..d689664 100644
--- a/src/main/java/calculator/util/rules/ChainRule.java
+++ b/src/main/java/calculator/util/rules/ChainRule.java
@@ -2,8 +2,8 @@
package calculator.util.rules;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class ChainRule extends DerivationRule {
@@ -26,7 +26,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return this.terms.get(0).evaluate(dims);
}
diff --git a/src/main/java/calculator/util/rules/CosRule.java b/src/main/java/calculator/util/rules/CosRule.java
index 4f5e3a8..31f6315 100644
--- a/src/main/java/calculator/util/rules/CosRule.java
+++ b/src/main/java/calculator/util/rules/CosRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CosRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.cos(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/CoshRule.java b/src/main/java/calculator/util/rules/CoshRule.java
index bd41f22..7fb402c 100644
--- a/src/main/java/calculator/util/rules/CoshRule.java
+++ b/src/main/java/calculator/util/rules/CoshRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CoshRule extends TrigRule {
@@ -23,7 +23,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.cosh(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/CotRule.java b/src/main/java/calculator/util/rules/CotRule.java
index ba2a998..b166497 100644
--- a/src/main/java/calculator/util/rules/CotRule.java
+++ b/src/main/java/calculator/util/rules/CotRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CotRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 1.0 / Math.tan(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/CothRule.java b/src/main/java/calculator/util/rules/CothRule.java
index 8ff5cd3..b0429ed 100644
--- a/src/main/java/calculator/util/rules/CothRule.java
+++ b/src/main/java/calculator/util/rules/CothRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CothRule extends TrigRule {
@@ -25,7 +25,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/CscRule.java b/src/main/java/calculator/util/rules/CscRule.java
index eaf93f7..0f3cd01 100644
--- a/src/main/java/calculator/util/rules/CscRule.java
+++ b/src/main/java/calculator/util/rules/CscRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CscRule extends TrigRule {
@@ -25,7 +25,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 1.0 / Math.sin(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/CschRule.java b/src/main/java/calculator/util/rules/CschRule.java
index a95991b..34744be 100644
--- a/src/main/java/calculator/util/rules/CschRule.java
+++ b/src/main/java/calculator/util/rules/CschRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class CschRule extends TrigRule {
@@ -23,7 +23,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/LogRule.java b/src/main/java/calculator/util/rules/LogRule.java
index 46a62e1..1286633 100644
--- a/src/main/java/calculator/util/rules/LogRule.java
+++ b/src/main/java/calculator/util/rules/LogRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
/**
* Log Rule
@@ -37,7 +37,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.log(this.terms.get(BASE_INDEX).evaluate(dims))
/ Math.log(this.terms.get(ARGUMENT_INDEX).evaluate(dims));
}
diff --git a/src/main/java/calculator/util/rules/NaturalLogRule.java b/src/main/java/calculator/util/rules/NaturalLogRule.java
index 3b2741e..684a97b 100644
--- a/src/main/java/calculator/util/rules/NaturalLogRule.java
+++ b/src/main/java/calculator/util/rules/NaturalLogRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class NaturalLogRule extends DerivationRule {
public static final int ARGUMENT_INDEX = 0;
@@ -27,7 +27,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.log(this.terms.get(ARGUMENT_INDEX).evaluate(dims));
}
diff --git a/src/main/java/calculator/util/rules/PowerFracRule.java b/src/main/java/calculator/util/rules/PowerFracRule.java
index 2e6d22a..929d796 100644
--- a/src/main/java/calculator/util/rules/PowerFracRule.java
+++ b/src/main/java/calculator/util/rules/PowerFracRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class PowerFracRule extends DerivationRule {
@@ -28,7 +28,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
diff --git a/src/main/java/calculator/util/rules/PowerRule.java b/src/main/java/calculator/util/rules/PowerRule.java
index 46308dc..a00ccf1 100644
--- a/src/main/java/calculator/util/rules/PowerRule.java
+++ b/src/main/java/calculator/util/rules/PowerRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
/**
* POWER RULE
@@ -45,7 +45,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.pow(this.terms.get(1).evaluate(dims), this.terms.get(0).evaluate(dims));
}
diff --git a/src/main/java/calculator/util/rules/ProductRule.java b/src/main/java/calculator/util/rules/ProductRule.java
index 024698a..060c789 100644
--- a/src/main/java/calculator/util/rules/ProductRule.java
+++ b/src/main/java/calculator/util/rules/ProductRule.java
@@ -6,8 +6,8 @@
import calculator.util.ast.Tokenizer;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
import java.util.stream.Collectors;
/**
@@ -58,7 +58,7 @@ public ProductRule addTerm(Term t) {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return this.terms.stream().map(x -> x.evaluate(dims)).reduce((x, y) -> x * y).get();
}
diff --git a/src/main/java/calculator/util/rules/QuotientRule.java b/src/main/java/calculator/util/rules/QuotientRule.java
index 6f402dd..a4c5cdd 100644
--- a/src/main/java/calculator/util/rules/QuotientRule.java
+++ b/src/main/java/calculator/util/rules/QuotientRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
/**
* QUOTIENT RULE
@@ -51,7 +51,7 @@ public Term getDerivative() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
double numeratorEvaluated = this.terms.get(NUMERATOR_POS).evaluate(dims);
double denominatorEvaluated = this.terms.get(DENOM_POS).evaluate(dims);
return numeratorEvaluated / denominatorEvaluated;
diff --git a/src/main/java/calculator/util/rules/Rule.java b/src/main/java/calculator/util/rules/Rule.java
index a7b8ae4..3dfac17 100644
--- a/src/main/java/calculator/util/rules/Rule.java
+++ b/src/main/java/calculator/util/rules/Rule.java
@@ -1,40 +1,39 @@
package calculator.util.rules;
import calculator.util.terms.Term;
-
-import java.util.List;
+import com.google.common.collect.ImmutableList;
public abstract sealed class Rule extends Term permits DerivationRule, TrigRule {
- /**
- * gets the result of the expression using {@link calculator.util.rules.DerivationRule#getResult(List)}
- * and negates it if necessary.
- *
- * @param dims values to use for the variables
- * @return the result
- */
- public double evaluate(List dims){
- double toReturn = this.getResult(dims);
- if(this.negative){
- toReturn = toReturn * -1;
- }
- return toReturn;
+ /**
+ * gets the result of the expression using {@link Rule#getResult(ImmutableList)} and negates it if
+ * necessary.
+ *
+ * @param dims values to use for the variables
+ * @return the result
+ */
+ public double evaluate(ImmutableList dims) {
+ double toReturn = this.getResult(dims);
+ if (this.negative) {
+ toReturn = toReturn * -1;
}
+ return toReturn;
+ }
- /**
- * getResult
- *
- * returns the result after evaluating the expression. Does not account for the negative flag and that is why this
- * method is not intended to be called publicly.
- *
- * @param dims values to use for the variables
- * @return evaluated expression for dims
- */
- abstract double getResult(List dims);
+ /**
+ * getResult
+ *
+ * returns the result after evaluating the expression. Does not account for the negative flag
+ * and that is why this method is not intended to be called publicly.
+ *
+ * @param dims values to use for the variables
+ * @return evaluated expression for dims
+ */
+ abstract double getResult(ImmutableList dims);
- @Override
- public abstract Term getDerivative();
+ @Override
+ public abstract Term getDerivative();
- @Override
- public abstract String toString();
+ @Override
+ public abstract String toString();
}
diff --git a/src/main/java/calculator/util/rules/SecRule.java b/src/main/java/calculator/util/rules/SecRule.java
index e1c78b1..11f6547 100644
--- a/src/main/java/calculator/util/rules/SecRule.java
+++ b/src/main/java/calculator/util/rules/SecRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class SecRule extends TrigRule {
@@ -25,7 +25,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 1.0 / Math.cos(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/SechRule.java b/src/main/java/calculator/util/rules/SechRule.java
index 55fa11a..b0b86a2 100644
--- a/src/main/java/calculator/util/rules/SechRule.java
+++ b/src/main/java/calculator/util/rules/SechRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class SechRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return 0;
}
}
diff --git a/src/main/java/calculator/util/rules/SinRule.java b/src/main/java/calculator/util/rules/SinRule.java
index 5ed255e..8a08649 100644
--- a/src/main/java/calculator/util/rules/SinRule.java
+++ b/src/main/java/calculator/util/rules/SinRule.java
@@ -4,8 +4,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class SinRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.sin(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/SinhRule.java b/src/main/java/calculator/util/rules/SinhRule.java
index 32f7c46..94996d6 100644
--- a/src/main/java/calculator/util/rules/SinhRule.java
+++ b/src/main/java/calculator/util/rules/SinhRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class SinhRule extends TrigRule {
@@ -23,7 +23,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.sinh(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/TanRule.java b/src/main/java/calculator/util/rules/TanRule.java
index f70f003..245ba5a 100644
--- a/src/main/java/calculator/util/rules/TanRule.java
+++ b/src/main/java/calculator/util/rules/TanRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class TanRule extends TrigRule {
@@ -24,7 +24,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.tan(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/rules/TanhRule.java b/src/main/java/calculator/util/rules/TanhRule.java
index 39e40be..52081d8 100644
--- a/src/main/java/calculator/util/rules/TanhRule.java
+++ b/src/main/java/calculator/util/rules/TanhRule.java
@@ -3,8 +3,8 @@
import static calculator.util.rules.RuleFactory.*;
import calculator.util.terms.Term;
+import com.google.common.collect.ImmutableList;
import java.util.LinkedList;
-import java.util.List;
public final class TanhRule extends TrigRule {
@@ -23,7 +23,7 @@ public Term getDerivPart() {
}
@Override
- public double getResult(List dims) {
+ public double getResult(ImmutableList dims) {
return Math.tanh(this.t.evaluate(dims));
}
}
diff --git a/src/main/java/calculator/util/terms/Term.java b/src/main/java/calculator/util/terms/Term.java
index 9d5c372..15c5815 100644
--- a/src/main/java/calculator/util/terms/Term.java
+++ b/src/main/java/calculator/util/terms/Term.java
@@ -1,6 +1,6 @@
package calculator.util.terms;
-import java.util.List;
+import com.google.common.collect.ImmutableList;
public class Term {
private int num;
@@ -52,7 +52,7 @@ public Term flipSign() {
* @param dims evaluation dims
* @return the evaluated expression
*/
- public double evaluate(List dims) {
+ public double evaluate(ImmutableList dims) {
return this.getNum();
}
diff --git a/src/main/java/calculator/util/terms/Variable.java b/src/main/java/calculator/util/terms/Variable.java
index 3cd9e67..05681bf 100644
--- a/src/main/java/calculator/util/terms/Variable.java
+++ b/src/main/java/calculator/util/terms/Variable.java
@@ -2,7 +2,7 @@
package calculator.util.terms;
import calculator.util.token.AbstractMath;
-import java.util.List;
+import com.google.common.collect.ImmutableList;
public class Variable extends Term implements AbstractMath {
@@ -23,7 +23,7 @@ public Term getTermFromOp(Term one, Term two) {
return this;
}
- public double evaluate(List dims) {
+ public double evaluate(ImmutableList dims) {
return (this.negative ? dims.get(0) * -1 : dims.get(0));
}
diff --git a/src/test/java/DerivativeTester.java b/src/test/java/DerivativeTester.java
index 42f1146..f92bc41 100644
--- a/src/test/java/DerivativeTester.java
+++ b/src/test/java/DerivativeTester.java
@@ -1,8 +1,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import calculator.service.CalculatorService;
+import com.google.common.collect.ImmutableList;
import java.util.Collections;
-import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -26,7 +26,7 @@ public class DerivativeTester {
@DisplayName("Single Derivative Testing")
@ParameterizedTest(name = "{0}")
@MethodSource("singleVariable")
- public void test1(String inputString, List evaluationPoints, double expected) {
+ public void test1(String inputString, ImmutableList evaluationPoints, double expected) {
double result =
(calculatorServiceImpl.evaluateDerivative(inputString, evaluationPoints)).result;
assertEquals(expected, result);
@@ -36,11 +36,13 @@ private static Stream singleVariable() {
return Stream.of(
// first test the polynomials
Arguments.of(" 1 ", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
- Arguments.of(" - 1 ", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
+ Arguments.of(
+ " - 1 ", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
Arguments.of("1", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
Arguments.of("10", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
Arguments.of("-100", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
- Arguments.of("1000 + 10000 - 1 + 0", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
+ Arguments.of(
+ "1000 + 10000 - 1 + 0", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
Arguments.of("0", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 0.0),
Arguments.of("x", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 1.0),
Arguments.of("- x", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), -1.0),
@@ -54,7 +56,8 @@ private static Stream singleVariable() {
Arguments.of("2 * x", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 2.0),
Arguments.of("2x - 3x", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), -1.0),
Arguments.of("2x + 3x - 16", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 5.0),
- Arguments.of("- 2x + 3x - 16", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 1.0),
+ Arguments.of(
+ "- 2x + 3x - 16", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 1.0),
Arguments.of("- 2x - - 3x", createSingleList(DOES_NOT_AFFECT_DERIVATIVE_CALCULATION), 1.0),
Arguments.of("2x + 3x * 5x", createSingleList(1), 32.0),
Arguments.of("2x * 3x * 5x", createSingleList(2), 360.0),
@@ -119,17 +122,19 @@ private static Stream singleVariable() {
createSingleList(3),
(1 + Math.sin(3.0)) * Math.pow(1.0 / Math.cos(Math.cos(3.0) - 3.0), 2)),
Arguments.of(
- "14x^3 + 135x - sin x + cos(x^4)",
- createSingleList(3),
- (-4.0 * Math.pow(3.0, 3) * Math.sin(Math.pow(3.0, 4))) - Math.cos(3.0) + (42 * Math.pow(3.0, 2)) + 135),
+ "14x^3 + 135x - sin x + cos(x^4)",
+ createSingleList(3),
+ (-4.0 * Math.pow(3.0, 3) * Math.sin(Math.pow(3.0, 4)))
+ - Math.cos(3.0)
+ + (42 * Math.pow(3.0, 2))
+ + 135),
Arguments.of(
- "135x - sin x + cos(x^4)",
- createSingleList(3),
- (-4.0 * Math.pow(3.0, 3) * Math.sin(Math.pow(3.0, 4))) - Math.cos(3.0) + 135)
- );
+ "135x - sin x + cos(x^4)",
+ createSingleList(3),
+ (-4.0 * Math.pow(3.0, 3) * Math.sin(Math.pow(3.0, 4))) - Math.cos(3.0) + 135));
}
- private static List createSingleList(Integer xVal) {
- return Collections.singletonList(xVal);
+ private static ImmutableList createSingleList(Integer xVal) {
+ return ImmutableList.copyOf(Collections.singletonList(xVal));
}
}
diff --git a/src/test/java/ExpressionTester.java b/src/test/java/ExpressionTester.java
index 4703d1f..3bfe2d1 100644
--- a/src/test/java/ExpressionTester.java
+++ b/src/test/java/ExpressionTester.java
@@ -1,6 +1,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import calculator.service.CalculatorService;
+import com.google.common.collect.ImmutableList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;
@@ -25,7 +26,7 @@ public class ExpressionTester {
@ParameterizedTest(name = "{0}")
@MethodSource("expression")
public void test(String inputString, double expected) {
- double result = calculatorServiceImpl.evaluateExpression(inputString);
+ double result = calculatorServiceImpl.evaluateExpression(inputString, ImmutableList.of());
assertEquals(result, expected);
}