diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-09-27 18:29:36 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-09-27 18:29:36 -0500 |
commit | a7584b843a64c806ec965a4f38341eb7dbd86e5f (patch) | |
tree | 1d88d82f7d6a1b0448799d78c2976900544b1e0e /src | |
parent | 544ba103f9903bf885e346d34639c05934655f3f (diff) |
Added a test for evaluating an expression & fixed a bug it found
The bug: non-exact LinearUnitValue instances have their value printed as "(",
i.e. "(5.0 ± 0.1) m" will be printed as "( m"
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/sevenUnits/unit/LinearUnitValue.java | 12 | ||||
-rw-r--r-- | src/test/java/sevenUnits/unit/UnitDatabaseTest.java | 27 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/main/java/sevenUnits/unit/LinearUnitValue.java b/src/main/java/sevenUnits/unit/LinearUnitValue.java index a36d568..2219ffd 100644 --- a/src/main/java/sevenUnits/unit/LinearUnitValue.java +++ b/src/main/java/sevenUnits/unit/LinearUnitValue.java @@ -324,12 +324,12 @@ public final class LinearUnitValue { // get rounded strings // if showUncertainty is true, add brackets around the string - final String valueString = showUncertainty ? "(" - : "" + this.value.toString(showUncertainty) - + (showUncertainty ? ")" : ""); - final String baseValueString = showUncertainty ? "(" - : "" + baseValue.toString(showUncertainty) - + (showUncertainty ? ")" : ""); + final String valueString = (showUncertainty ? "(" : "") + + this.value.toString(showUncertainty) + + (showUncertainty ? ")" : ""); + final String baseValueString = (showUncertainty ? "(" : "") + + baseValue.toString(showUncertainty) + + (showUncertainty ? ")" : ""); // create string if (primaryName.isEmpty() && symbol.isEmpty()) diff --git a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java index 31323a7..7612fc5 100644 --- a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java +++ b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java @@ -36,6 +36,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import sevenUnits.utils.UncertainDouble; + /** * A test for the {@link UnitDatabase} class. This is NOT part of this program's * public API. @@ -88,6 +90,31 @@ class UnitDatabaseTest { } /** + * A test for the {@link UnitDatabase#evaluateUnitExpression(String)} + * function. Simple because the expression parser has its own test. + * + * @since 2021-09-27 + */ + @Test + public void testEvaluateExpression() { + final UnitDatabase database = new UnitDatabase(); + + database.addUnit("J", J); + database.addUnit("K", K); + + database.addPrefix("A", A); + database.addPrefix("B", B); + database.addPrefix("C", C); + + final LinearUnitValue expected = LinearUnitValue.of(J, + UncertainDouble.of(12, Math.sqrt(14.625))); + // note: units are exact, each number has an uncertainty of 1 + final LinearUnitValue actual = database + .evaluateUnitExpression("J + (2 * 3) J + (20 / 4) J"); + assertEquals(expected, actual); + } + + /** * Confirms that operations that shouldn't function for infinite databases * throw an {@code IllegalStateException}. * |