diff options
Diffstat (limited to 'src/test/java/sevenUnits/utils/ExpressionParserTest.java')
-rw-r--r-- | src/test/java/sevenUnits/utils/ExpressionParserTest.java | 80 |
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)); } } |