diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/sevenUnits/unit/UnitDatabase.java | 13 |
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; } |