summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2021-09-27 17:31:22 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2021-09-27 17:34:21 -0500
commit544ba103f9903bf885e346d34639c05934655f3f (patch)
tree2acb842e36f6098bf4bfd2a397a395af77a62164 /src/main
parent54e36eda34a508379915b270f4a234693aa1775b (diff)
Added some tests for invalid unitfiles
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java9
-rw-r--r--src/main/java/sevenUnits/utils/ExpressionParser.java8
2 files changed, 13 insertions, 4 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index b45d9cf..a1dbb0a 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -1427,10 +1427,11 @@ public final class UnitDatabase {
final String expression = lineMatcher.group(2);
- if (name.endsWith(" ")) {
- System.err.printf("Warning - line %d's unit name ends in a space",
- lineCounter);
- }
+ // this code should never occur
+ // if (name.endsWith(" ")) {
+ // System.err.printf("Warning - line %d's unit name ends in a space",
+ // lineCounter);
+ // }
// if expression is "!", search for an existing unit
// if no unit found, throw an error
diff --git a/src/main/java/sevenUnits/utils/ExpressionParser.java b/src/main/java/sevenUnits/utils/ExpressionParser.java
index 1d3d44d..3c4abad 100644
--- a/src/main/java/sevenUnits/utils/ExpressionParser.java
+++ b/src/main/java/sevenUnits/utils/ExpressionParser.java
@@ -461,6 +461,8 @@ public final class ExpressionParser<T> {
*
* @param expression expression
* @return expression in RPN
+ * @throws IllegalArgumentException if expression is invalid (e.g.
+ * "{@code 3 *}")
* @since 2019-03-17
* @since v0.2.0
*/
@@ -541,6 +543,9 @@ public final class ExpressionParser<T> {
switch (this
.getTokenType(components.get(highestPriorityOperatorPosition))) {
case UNARY_OPERATOR:
+ if (components.size() < 2)
+ throw new IllegalArgumentException(
+ "Invalid expression \"" + expression + "\"");
final String unaryOperator = components
.remove(highestPriorityOperatorPosition);
final String operand = components
@@ -549,6 +554,9 @@ public final class ExpressionParser<T> {
operand + " " + unaryOperator);
break;
case BINARY_OPERATOR:
+ if (components.size() < 3)
+ throw new IllegalArgumentException(
+ "Invalid expression \"" + expression + "\"");
final String binaryOperator = components
.remove(highestPriorityOperatorPosition);
final String operand1 = components