def test__dimension_equal(self): time_dim = Dimension(1, 2, -3, 0, -1, 0, 1) dim1 = Dimension(1, 0, 3, 0, 2, 1, 0) dim2 = Dimension(1, 0, 3, 0, 2, 1, 0) self.assertEqual(dim2, dim1) self.assertNotEqual(dim1, time_dim) self.assertNotEqual(dim2, time_dim)
def test__unit_exponentiation(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') m3 = UnitExponentiation(m, 3) m3_dim = Dimension(0, 3, 0, 0, 0, 0, 0) self.assertTrue(m3.label() is None) self.assertEqual('m3', m3.symbol().value) self.assertEqual(m3_dim, m3.dimensions)
def test__unit_division(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') km = PrefixedUnit(SI.KILO, m, OM.NAMESPACE + 'kilometre') m_per_km = UnitDivision(m, km) m_per_km_dim = Dimension(0, 0, 0, 0, 0, 0, 0) self.assertTrue(m_per_km.label() is None) self.assertEqual('m/km', m_per_km.symbol().value) self.assertEqual(m_per_km_dim, m_per_km.dimensions)
def test__dimension_subtraction(self): dim1 = Dimension(1, 0, 3, 0, 2, 1, 0) dim2 = Dimension(1, 0, 3, 0, 2, 1, 0) dim_sub = Dimension(1, 0, 3, 0, 2, 1, 0) dim3 = Dimension(1, 2, -3, 0, -1, 0, 1) self.assertEqual(dim_sub, dim1) self.assertEqual(dim_sub, dim2) try: dim4 = dim3 - dim2 self.fail("Dimensions should not be allowed to be subtracted.") except DimensionalException as error: self.assertTrue(True)
def test__unit_multiplication(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) t_dim = Dimension(1, 0, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') s = SingularUnit('second', 's', t_dim, identifier=OM.NAMESPACE + 'second') ms = UnitMultiplication(m, s) ms_dim = Dimension(1, 1, 0, 0, 0, 0, 0) self.assertTrue(ms.label() is None) self.assertEqual('m.s', ms.symbol().value) self.assertEqual(ms_dim, ms.dimensions)
def test__unit_compound_1(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) t_dim = Dimension(1, 0, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') s = SingularUnit('second', 's', t_dim, identifier=OM.NAMESPACE + 'second') ss = UnitMultiplication(s, s) ms2 = UnitDivision(m, ss) ms2_dim = Dimension(-2, 1, 0, 0, 0, 0, 0) self.assertTrue(ms2.label() is None) self.assertEqual('m/(s.s)', ms2.symbol().value) self.assertEqual(ms2_dim, ms2.dimensions)
def __init__(self, label=None, symbol=None, dimensions=Dimension(), identifier=None): super().__init__(label, symbol, identifier) self.dimensions = dimensions Unit.__add_unit(self)
def __init__(self, base, exponent, symbol=None, identifier=None): dimensions = Dimension.pow(base.dimensions, exponent) if symbol is None: base_str = str(base.symbol()) if isinstance(base, CompoundUnit): base_str = f'({base_str})' symbol = f'{base_str}{exponent}' super().__init__(symbol, dimensions, identifier) self.base = base self.exponent = exponent
def test_unit_get(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) t_dim = Dimension(1, 0, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') s = SingularUnit('second', 's', t_dim, identifier=OM.NAMESPACE + 'second') units = Unit.with_label("metre") self.assertEqual(1, len(units)) self.assertEqual('metre', units[0].label().value) self.assertEqual('m', units[0].symbol().value) self.assertEqual( 'http://www.ontology-of-units-of-measure.org/resource/om-2/metre', str(units[0].identifier)) self.assertEqual(m_dim, units[0].dimensions)
def test__unit_multiple(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') km = PrefixedUnit(SI.KILO, m, OM.NAMESPACE + 'kilometre') km100 = UnitMultiple(km, 100.0, symbol='100km') self.assertEqual('100.0 kilometre', km100.label().value) self.assertEqual('100km', km100.symbol().value) self.assertEqual(m_dim, km100.dimensions)
def test__singular_unit(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') self.assertEqual('metre', m.label().value) self.assertEqual('m', m.symbol().value) self.assertEqual( 'http://www.ontology-of-units-of-measure.org/resource/om-2/metre', str(m.identifier)) self.assertEqual(m_dim, m.dimensions)
def __init__(self, label, symbol, dimensions=Dimension(), base_unit=None, factor=1.0, identifier=None): if base_unit is not None: dimensions = base_unit.dimensions super().__init__(label, symbol, dimensions, identifier) self.factor = factor self.baseUnit = base_unit
def test__prefixed_unit(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') km = PrefixedUnit(SI.KILO, m, OM.NAMESPACE + 'kilometre') self.assertEqual('kilometre', km.label().value) self.assertEqual('km', km.symbol().value) self.assertEqual( 'http://www.ontology-of-units-of-measure.org/resource/om-2/kilometre', str(km.identifier)) self.assertEqual(m_dim, km.dimensions)
def test_singular_unit_conversion(self): m_dim = Dimension(0, 1, 0, 0, 0, 0, 0) m = SingularUnit('metre', 'm', m_dim, identifier=OM.NAMESPACE + 'metre') inch = SingularUnit('inch', '\'', base_unit=m, factor=2.54e-2, identifier=OM.NAMESPACE + 'inch') m_to_inch_factor = Unit.conversion_factor(m, inch) self.assertEqual(2.54e-2, m_to_inch_factor) inch_to_m_factor = Unit.conversion_factor(inch, m) self.assertEqual(39.3700787, inch_to_m_factor)
def test__dimension_print(self): time_dim = Dimension(1, 2, -3, 0, -1, 0, 1) result_str = time_dim.__str__() self.assertEqual("(T=1, L=2, M=-3, I=0, θ=-1, N=0, J=1)", result_str)
def test__dimension_division(self): dim1 = Dimension(1, 2, 3, 0, 2, 1, -3) dim2 = Dimension(1, 0, 3, 0, 2, 1, 1) dim_div = Dimension(0, 2, 0, 0, 0, 0, -4) dim4 = dim1 / dim2 self.assertEqual(dim_div, dim4)
def test__dimension_multiplication(self): dim1 = Dimension(1, 2, 3, 0, 2, 1, -3) dim2 = Dimension(1, 0, 3, 0, 2, 1, 0) dim_mul = Dimension(2, 2, 6, 0, 4, 2, -3) dim4 = dim1 * dim2 self.assertEqual(dim_mul, dim4)
from exceptions.dimensionexception import DimensionalException from omlib.constants import OM, SI from omlib.dimension import Dimension from omlib.unit import Unit, PrefixedUnit, SingularUnit, UnitMultiple, UnitDivision if __name__ == '__main__': print( 'This is the Python library for applying the Ontology of Units of Measure (OM).' ) unit = Unit('metre', 'm') unit.add_preferred_label('meter', 'nl') print('Created unit {} with symbol {}'.format(unit.prefLabels, unit.symbols)) print('\tDutch name: {}'.format(unit.preferred_label('nl'))) time_dim = Dimension(1, 0, 0, 0, 0, 0, 0) print('Created time dimension: {}'.format(time_dim)) dim1 = Dimension(1, 0, 3, 0, 2, 1, 0) dim2 = Dimension(1, 0, 3, 0, 2, 1, 0) print('Compare dimensions: {} =?= {} {}'.format(time_dim, dim2, time_dim == dim2)) print('Compare dimensions: {} =?= {} {}'.format(dim1, dim2, dim1 == dim2)) dim3 = dim1 + dim2 print('Added dimensions: {}'.format(dim3)) try: dim4 = time_dim + dim2 print('Added dimensions: {}'.format(dim4)) except DimensionalException as error: print(error)