summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/sevenUnits/unit/LinearUnitValue.java12
-rw-r--r--src/test/java/sevenUnits/unit/UnitDatabaseTest.java27
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}.
*