summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-07 22:11:45 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-07 22:26:49 -0500
commita00ad7ca48928a30ae577aeaed0345680df0a3fe (patch)
tree02a096b9f5c54775605cd648d8cd1c0a5e65a742 /src/test/java
parent06192835ea97a657da1e5bd160686d21c097cbf5 (diff)
Fix e-notation & consolidate expression parsing
This commit moves all of the expression formatting code to one method, and changes it so that it works with things like '1e+2'. This does mean that I had to require spaces for addition and subtraction, but without that, the rules would be complicated.
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/sevenUnits/unit/UnitDatabaseTest.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
index c78837f..800d13d 100644
--- a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
+++ b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
@@ -190,14 +190,35 @@ class UnitDatabaseTest {
}
private static final Stream<Arguments> testEvaluateExpressionValid() {
+ UncertainDouble uncertainTwoThirds = UncertainDouble.of(2.0, 1.0)
+ .dividedBy(UncertainDouble.of(3.0, 1.0));
return Stream.of(
Arguments.of("J + (2 * 3) J + (20 / 4) J",
LinearUnitValue.of(J,
UncertainDouble.of(12, Math.sqrt(14.625)))),
+ Arguments.of("J + 2 * 3 * J + 20 / 4 * J",
+ LinearUnitValue.of(J,
+ UncertainDouble.of(12, Math.sqrt(14.625)))),
Arguments.of("J - -1 * J",
LinearUnitValue.of(J, UncertainDouble.of(2, 1))),
Arguments.of("K^2",
- LinearUnitValue.of(K.times(K), UncertainDouble.of(1, 0))));
+ LinearUnitValue.of(K.times(K), UncertainDouble.of(1, 0))),
+ Arguments.of("2 J / 3 J",
+ LinearUnitValue.of(J.dividedBy(J), uncertainTwoThirds)));
+ }
+
+ private static final Stream<Arguments> testFormatExpression() {
+ return Stream.of(
+ Arguments.of("1*2", "1 * 2"),
+ Arguments.of("1/2", "1 / 2"),
+ Arguments.of("1|2", "1 | 2"),
+ Arguments.of("1^2", "1 ^ 2"),
+ Arguments.of("1 * 2", "1 * 2"),
+ Arguments.of("+1", "+1"),
+ Arguments.of("-1", "-1"),
+ Arguments.of("1.1e+5", "1.1e+5"),
+ Arguments.of("1.25e-5", "1.25e-5")
+ );
}
/**
@@ -253,6 +274,12 @@ class UnitDatabaseTest {
final var actualU = database.getUnitFromExpression(expression);
assertEquals(expectedU, actualU);
}
+
+ @ParameterizedTest
+ @MethodSource
+ public void testFormatExpression(String expression, String expected) {
+ assertEquals(expected, UnitDatabase.formatExpression(expression));
+ }
/**
* Test for {@link UnitDatabase#getUnit}, {@link UnitDatabase#getLinearUnit}