summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnits/unit/UnitDatabase.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/sevenUnits/unit/UnitDatabase.java')
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index dc81aca..690430b 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -1905,18 +1905,23 @@ public final class UnitDatabase {
*
* @since 2024-08-22
*/
- private List<LinearUnit> getUnitSetFromExpression(String expression) {
+ List<LinearUnit> getUnitSetFromExpression(String expression) {
final String[] parts = expression.split(";");
final List<LinearUnit> units = new ArrayList<>(parts.length);
for (final String unitName : parts) {
final Unit unit = this.getUnitFromExpression(unitName.trim());
- if (unit instanceof LinearUnit) {
- units.add((LinearUnit) unit);
- } else
+ if (!(unit instanceof LinearUnit)) {
throw new IllegalArgumentException(String.format(
"Unit '%s' is in a unit-set expression, but is not linear.",
unitName));
+ } else if (units.size() > 0 && !unit.canConvertTo(units.get(0))) {
+ throw new IllegalArgumentException(String.format(
+ "Units in expression '%s' have different dimensions.",
+ expression));
+ }
+
+ units.add((LinearUnit) unit);
}
return units;
}