summaryrefslogtreecommitdiff
path: root/src/test/java/sevenUnits/utils/ExpressionParserTest.java
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-15 19:41:31 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-15 19:41:31 -0500
commit0d4bb6953d34434d1bc9813fa123912e1cf04264 (patch)
tree4c908950d9b049394f8160b8159b498aec586ecc /src/test/java/sevenUnits/utils/ExpressionParserTest.java
parent255a0ac50b07d4fef9664767c4123ecaf4881d55 (diff)
parentbccb5b5e3452421c81c1fb58f83391ba6584807c (diff)
Merge branch 'release-1.0.0' into developdevelop
Diffstat (limited to 'src/test/java/sevenUnits/utils/ExpressionParserTest.java')
-rw-r--r--src/test/java/sevenUnits/utils/ExpressionParserTest.java80
1 files changed, 38 insertions, 42 deletions
diff --git a/src/test/java/sevenUnits/utils/ExpressionParserTest.java b/src/test/java/sevenUnits/utils/ExpressionParserTest.java
index 72d3b19..2e0b4b0 100644
--- a/src/test/java/sevenUnits/utils/ExpressionParserTest.java
+++ b/src/test/java/sevenUnits/utils/ExpressionParserTest.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* A test for the {@code ExpressionParser} class. This is NOT part of this
* program's public API.
- *
+ *
* @author Adrien Hopkins
* @since 2019-03-22
* @since v0.2.0
@@ -45,9 +45,7 @@ class ExpressionParserTest {
.addUnaryOperator("recip", o1 -> 1 / o1, 3)
.addBinaryOperator("^", (o1, o2) -> (int) Math.pow(o1, o2), 4).build();
- /**
- * The expressions used in the expression parsing tests
- */
+ /** The expressions used in the expression parsing tests */
private static final List<String> TEST_EXPRESSIONS = List.of(
// test parsing of expressions
"1 + 2 ^ 5 * 3", "(1 + 2) ^ 5 * 3",
@@ -56,22 +54,9 @@ class ExpressionParserTest {
// ensure it normally goes from left to right
"1 + 2 + 3 + 4", "12 - 4 - 3", "12 - (4 - 3)", "1 / 2 + 3");
- /**
- * The expected results for evaluating these expressions
- */
+ /** The expected results for evaluating these expressions */
private static final int[] RESULTS = { 97, 729, 133, 10, 5, 11, 3 };
- /**
- * @return A stream of objects, where each one is an expression and the
- * expected result
- * @since 2021-09-27
- * @since v0.3.2
- */
- private static final Stream<Arguments> testParseExpressionData() {
- return IntStream.range(0, TEST_EXPRESSIONS.size())
- .mapToObj(i -> Arguments.of(TEST_EXPRESSIONS.get(i), RESULTS[i]));
- }
-
private static final Stream<Arguments> testConvertExpressionToRPN() {
return Stream.of(Arguments.of("1 + 2 ^ 5 * 3", "1 2 5 ^ 3 * +"),
Arguments.of("(1 + 2) ^ 5 * 3", "1 2 + 5 ^ 3 *"),
@@ -91,18 +76,6 @@ class ExpressionParserTest {
Arguments.of("1 + neg 2", "1 2 neg +"));
}
- private static final Stream<Arguments> testParseRPN() {
- return Stream.of(Arguments.of("1 2 5 ^ 3 * +", 97),
- Arguments.of("1 2 + 5 ^ 3 *", 729),
- Arguments.of("12 5 * 3 2 3 * ^ 72 - 3 3 2 * + / +", 133),
- Arguments.of("1 2 + 3 + 4 +", 10), Arguments.of("12 4 - 3 -", 5),
- Arguments.of("12 4 3 - -", 11), Arguments.of("1 2 / 3 +", 3),
- Arguments.of("12", 12), Arguments.of("2 3 * 4 +", 10),
- Arguments.of("2 3 * 4 -", 2), Arguments.of("2 3 4 + *", 14),
- Arguments.of("2 3 4 - *", -2), Arguments.of("2 neg", -2),
- Arguments.of("1 2 neg +", -1));
- }
-
private static final Stream<String> testInvalidExpression() {
return Stream.of("+", "1 +", "1 + * 2", "1 (+ 1)", "neg");
}
@@ -112,13 +85,26 @@ class ExpressionParserTest {
}
/**
- * Test method for
- * {@link sevenUnits.utils.ExpressionParser#parseExpression(java.lang.String)}.
+ * @return A stream of objects, where each one is an expression and the
+ * expected result
+ * @since 2021-09-27
+ * @since v0.3.2
*/
- @ParameterizedTest
- @MethodSource("testParseExpressionData")
- public void testParseExpression(String expression, int value) {
- assertEquals(value, numberParser.parseExpression(expression));
+ private static final Stream<Arguments> testParseExpressionData() {
+ return IntStream.range(0, TEST_EXPRESSIONS.size())
+ .mapToObj(i -> Arguments.of(TEST_EXPRESSIONS.get(i), RESULTS[i]));
+ }
+
+ private static final Stream<Arguments> testParseRPN() {
+ return Stream.of(Arguments.of("1 2 5 ^ 3 * +", 97),
+ Arguments.of("1 2 + 5 ^ 3 *", 729),
+ Arguments.of("12 5 * 3 2 3 * ^ 72 - 3 3 2 * + / +", 133),
+ Arguments.of("1 2 + 3 + 4 +", 10), Arguments.of("12 4 - 3 -", 5),
+ Arguments.of("12 4 3 - -", 11), Arguments.of("1 2 / 3 +", 3),
+ Arguments.of("12", 12), Arguments.of("2 3 * 4 +", 10),
+ Arguments.of("2 3 * 4 -", 2), Arguments.of("2 3 4 + *", 14),
+ Arguments.of("2 3 4 - *", -2), Arguments.of("2 neg", -2),
+ Arguments.of("1 2 neg +", -1));
}
@ParameterizedTest
@@ -138,15 +124,25 @@ class ExpressionParserTest {
@ParameterizedTest
@MethodSource
- public void testParseRPN(String expressionRPN, int value) {
- assertEquals(value,
- numberParser.parseReversePolishExpression(expressionRPN));
+ public void testInvalidRPN(String expressionRPN) {
+ assertThrows(RuntimeException.class,
+ () -> numberParser.parseReversePolishExpression(expressionRPN));
+ }
+
+ /**
+ * Test method for
+ * {@link sevenUnits.utils.ExpressionParser#parseExpression(java.lang.String)}.
+ */
+ @ParameterizedTest
+ @MethodSource("testParseExpressionData")
+ public void testParseExpression(String expression, int value) {
+ assertEquals(value, numberParser.parseExpression(expression));
}
@ParameterizedTest
@MethodSource
- public void testInvalidRPN(String expressionRPN) {
- assertThrows(RuntimeException.class,
- () -> numberParser.parseReversePolishExpression(expressionRPN));
+ public void testParseRPN(String expressionRPN, int value) {
+ assertEquals(value,
+ numberParser.parseReversePolishExpression(expressionRPN));
}
}