summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/sevenUnits/unit/UnitDatabaseTest.java68
1 files changed, 66 insertions, 2 deletions
diff --git a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
index 7612fc5..ed3b6b5 100644
--- a/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
+++ b/src/test/java/sevenUnits/unit/UnitDatabaseTest.java
@@ -73,6 +73,23 @@ class UnitDatabaseTest {
private static final UnitPrefix BC = UnitPrefix.valueOf(11);
/**
+ * Loads the dimensionfile at src/test/resources/[path] to the database
+ * {@code loadTo}.
+ *
+ * @param loadTo database to load to
+ * @param path path of file to load
+ * @since 2021-10-04
+ */
+ private static void loadDimensionFile(UnitDatabase loadTo, String path) {
+ try (final InputStream testFile = UnitDatabaseTest.class
+ .getResourceAsStream(path)) {
+ loadTo.loadDimensionsFromStream(testFile);
+ } catch (final IOException e) {
+ fail(e.getClass() + " occurred upon loading file \"" + path + "\".");
+ }
+ }
+
+ /**
* Loads the unitfile at src/test/resources/[path] to the database
* {@code loadTo}.
*
@@ -141,6 +158,27 @@ class UnitDatabaseTest {
}
/**
+ * A bunch of tests for invalid dimension files
+ *
+ * @param num which file to test
+ * @since 2021-10-04
+ */
+ @ParameterizedTest
+ @ValueSource(ints = { 1, 2, 3 })
+ public void testLoadingInvalidDimensionFile(int num) {
+ final UnitDatabase database = new UnitDatabase();
+ database.addDimension("LENGTH", Metric.Dimensions.LENGTH);
+ database.addDimension("MASS", Metric.Dimensions.MASS);
+ database.addDimension("TIME", Metric.Dimensions.TIME);
+ final String filename = String.format("/test-dimensionfile-invalid%d.txt",
+ num);
+ final RuntimeException e = assertThrows(RuntimeException.class,
+ () -> loadDimensionFile(database, filename));
+ assertTrue(e instanceof IllegalArgumentException
+ || e instanceof NoSuchElementException);
+ }
+
+ /**
* A bunch of tests for invalid unit files
*
* @param num which file to test
@@ -148,12 +186,32 @@ class UnitDatabaseTest {
*/
@ParameterizedTest
@ValueSource(ints = { 1, 2, 3, 4, 5 })
- public void testLoadingInvalidFile(int num) {
+ public void testLoadingInvalidUnitFile(int num) {
final UnitDatabase database = new UnitDatabase();
final String filename = String.format("/test-unitsfile-invalid%d.txt",
num);
- assertThrows(IllegalArgumentException.class,
+ final RuntimeException e = assertThrows(RuntimeException.class,
() -> loadUnitsFile(database, filename));
+ assertTrue(e instanceof IllegalArgumentException
+ || e instanceof NoSuchElementException);
+ }
+
+ /**
+ * Tests loading a valid dimension-file with some derived dimensions.
+ *
+ * @since 2021-10-04
+ */
+ @Test
+ public void testLoadingValidDimensions() {
+ final UnitDatabase database = new UnitDatabase();
+ database.addDimension("LENGTH", Metric.Dimensions.LENGTH);
+ database.addDimension("MASS", Metric.Dimensions.MASS);
+ database.addDimension("TIME", Metric.Dimensions.TIME);
+
+ loadDimensionFile(database, "/test-dimensionfile-valid1.txt");
+ assertEquals(Metric.Dimensions.ENERGY, database.getDimension("ENERGY"));
+ assertEquals(Metric.Dimensions.POWER, database.getDimension("POWER"));
+
}
/**
@@ -207,6 +265,12 @@ class UnitDatabaseTest {
final Unit actual3 = database.getUnit("test3");
assertEquals(expected3, actual3);
+ final UnitValue expected4 = UnitValue.of(U, 1);
+ final UnitValue actual4 = database
+ .evaluateUnitExpression("-5 * U + -3 * U + 12 * U - 3 * U")
+ .asUnitValue();
+ assertEquals(expected4, actual4);
+
assertTrue(System.err.toString().length() > 0);
}