summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2024-08-16 18:17:50 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2024-08-22 11:45:36 -0500
commitcc5f9b27c403f0ebc4b5682964fb54e73f87df58 (patch)
treee8865ec4ffcd4cdbe3f31afbb0e0b4b8c9d4769f
parent72ca258d06c51e55c9fa5983bb11186250eb24b0 (diff)
Validate unit set non-emptiness & dimension
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index 58c5cac..05c31c4 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -1501,7 +1501,13 @@ public final class UnitDatabase {
unitName));
}
}
- this.addUnitSet(name, units);
+
+ try {
+ this.addUnitSet(name, units);
+ } catch (final IllegalArgumentException e) {
+ System.err.printf("Parsing error on line %d:%n", lineCounter);
+ throw e;
+ }
} else {
// it's a unit, get the unit
final Unit unit;
@@ -1525,6 +1531,15 @@ public final class UnitDatabase {
* @since 2024-08-16
*/
public void addUnitSet(String name, List<LinearUnit> value) {
+ if (value.isEmpty())
+ throw new IllegalArgumentException("Unit sets must not be empty.");
+ for (final LinearUnit unit : value.subList(1, value.size())) {
+ if (!Objects.equals(unit.getDimension(), value.get(0).getDimension()))
+ throw new IllegalArgumentException(
+ "Unit sets must be all the same dimension, " + value
+ + " is not.");
+ }
+
this.unitSets.put(name, value);
}