diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-10-04 18:26:58 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-10-04 18:26:58 -0500 |
commit | b59082c6b558705d4bd5effce2ae4b98c8a3ebe5 (patch) | |
tree | aeb0e9226436fe63e2cd4a558ffa0c4a2a07b7a9 /src/test/java/sevenUnits/unit | |
parent | e35af3d2a4745eca2e6e1a70a694c40ed045617e (diff) |
Added tests for valid & invalid dimension files
Diffstat (limited to 'src/test/java/sevenUnits/unit')
-rw-r--r-- | src/test/java/sevenUnits/unit/UnitDatabaseTest.java | 68 |
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); } |