summaryrefslogtreecommitdiff
path: root/src/test/java/sevenUnits
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/sevenUnits')
-rw-r--r--src/test/java/sevenUnits/unit/UnitDatabaseTest.java27
1 files changed, 27 insertions, 0 deletions
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}.
*