summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2021-09-27 18:29:36 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2021-09-27 18:29:36 -0500
commita7584b843a64c806ec965a4f38341eb7dbd86e5f (patch)
tree1d88d82f7d6a1b0448799d78c2976900544b1e0e /src
parent544ba103f9903bf885e346d34639c05934655f3f (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.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}.
*