Merge #524
524: Fix for Issue #523 r=hgrecco Conversion to/from offset units was not checking for compatibility of dimensions. A test for the issue was added.
This commit is contained in:
commit
6e2b69ea32
|
@ -935,6 +935,11 @@ class NonMultiplicativeRegistry(BaseRegistry):
|
|||
src_dim = self._get_dimensionality(src)
|
||||
dst_dim = self._get_dimensionality(dst)
|
||||
|
||||
# If the source and destination dimensionality are different,
|
||||
# then the conversion cannot be performed.
|
||||
if src_dim != dst_dim:
|
||||
raise DimensionalityError(src, dst, src_dim, dst_dim)
|
||||
|
||||
# For offset units we need to check if the conversion is allowed.
|
||||
if src_offset_units or dst_offset_units:
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from pint.unit import UnitsContainer
|
|||
from pint.util import ParserHelper
|
||||
|
||||
from pint.compat import np, long_type
|
||||
from pint.errors import UndefinedUnitError
|
||||
from pint.errors import UndefinedUnitError, DimensionalityError
|
||||
from pint.testsuite import QuantityTestCase, helpers
|
||||
from pint.testsuite.compat import unittest
|
||||
|
||||
|
@ -205,6 +205,14 @@ class TestIssues(QuantityTestCase):
|
|||
self.assertQuantityAlmostEqual(x + y, 5.1 * ureg.meter)
|
||||
self.assertQuantityAlmostEqual(z, 5.1 * ureg.meter)
|
||||
|
||||
def test_issue523(self):
|
||||
ureg = UnitRegistry()
|
||||
src, dst = UnitsContainer({'meter': 1}), UnitsContainer({'degF': 1})
|
||||
value = 10.
|
||||
convert = self.ureg.convert
|
||||
self.assertRaises(DimensionalityError, convert, value, src, dst)
|
||||
self.assertRaises(DimensionalityError, convert, value, dst, src)
|
||||
|
||||
def _test_issueXX(self):
|
||||
ureg = UnitRegistry()
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue