def test_alias(self): # Use load_definitions ureg = UnitRegistry([ "canonical = [] = can = alias1 = alias2\n", # overlapping aliases "@alias canonical = alias2 = alias3\n", # Against another alias "@alias alias3 = alias4\n", ]) # Use define ureg.define("@alias canonical = alias5") # Test that new aliases work # Test that pre-existing aliases and symbol are not eliminated for a in ("can", "alias1", "alias2", "alias3", "alias4", "alias5"): self.assertEqual(ureg.Unit(a), ureg.Unit("canonical")) # Test that aliases defined multiple times are not duplicated self.assertEqual( ureg._units["canonical"].aliases, ("alias1", "alias2", "alias3", "alias4", "alias5"), ) # Define against unknown name self.assertRaises(KeyError, ureg.define, "@alias notexist = something")
def test_get_base_units(self): ureg = UnitRegistry() assert ureg.get_base_units("") == (1, ureg.Unit("")) assert ureg.get_base_units("pi") == (math.pi, ureg.Unit("")) assert ureg.get_base_units("ln10") == (math.log(10), ureg.Unit("")) assert ureg.get_base_units("meter") == ureg.get_base_units( ParserHelper(meter=1))
def test_get_base_units(self): ureg = UnitRegistry() self.assertEqual(ureg.get_base_units(''), (1, ureg.Unit(''))) self.assertEqual(ureg.get_base_units('pi'), (math.pi, ureg.Unit(''))) self.assertEqual(ureg.get_base_units('ln10'), (math.log(10), ureg.Unit(''))) self.assertEqual(ureg.get_base_units('meter'), ureg.get_base_units(ParserHelper(meter=1)))
def test_get_base_units(self): ureg = UnitRegistry() self.assertEqual(ureg.get_base_units(""), (1, ureg.Unit(""))) self.assertEqual(ureg.get_base_units("pi"), (math.pi, ureg.Unit(""))) self.assertEqual(ureg.get_base_units("ln10"), (math.log(10), ureg.Unit(""))) self.assertEqual(ureg.get_base_units("meter"), ureg.get_base_units(ParserHelper(meter=1)))
def test_ipython(self): alltext = [] class Pretty: @staticmethod def text(text): alltext.append(text) ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) self.assertEqual(x._repr_html_(), r"\[kilogram\ meter^2/second\]") self.assertEqual( x._repr_latex_(), r"$\frac{\mathrm{kilogram} \cdot " r"\mathrm{meter}^{2}}{\mathrm{second}}$", ) x._repr_pretty_(Pretty, False) self.assertEqual("".join(alltext), "kilogram·meter²/second") ureg.default_format = "~" self.assertEqual(x._repr_html_(), r"\[kg\ m^2/s\]") self.assertEqual( x._repr_latex_(), r"$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$") alltext = [] x._repr_pretty_(Pretty, False) self.assertEqual("".join(alltext), "kg·m²/s")
def test_ipython(self): alltext = [] class Pretty: @staticmethod def text(text): alltext.append(text) ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) assert x._repr_html_() == "kilogram meter<sup>2</sup>/second" assert ( x._repr_latex_() == r"$\frac{\mathrm{kilogram} \cdot " r"\mathrm{meter}^{2}}{\mathrm{second}}$" ) x._repr_pretty_(Pretty, False) assert "".join(alltext) == "kilogram·meter²/second" ureg.default_format = "~" assert x._repr_html_() == "kg m<sup>2</sup>/s" assert ( x._repr_latex_() == r"$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$" ) alltext = [] x._repr_pretty_(Pretty, False) assert "".join(alltext) == "kg·m²/s"
def test_unit_default_formatting(self): ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) for spec, result in (('L', r'\frac{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}'), ('P', 'kilogram·meter²/second'), ('H', 'kilogram meter<sup>2</sup>/second'), ('C', 'kilogram*meter**2/second'), ('~', 'kg * m ** 2 / s'), ('L~', r'\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}'), ('P~', 'kg·m²/s'), ('H~', 'kg m<sup>2</sup>/s'), ('C~', 'kg*m**2/s'), ): ureg.default_format = spec self.assertEqual('{0}'.format(x), result, 'Failed for {0}, {1}'.format(spec, result))
def test_unit_formatting_snake_case(self): # Test that snake_case units are escaped where appropriate ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(oil_barrel=1)) for spec, result in ( ("L", r"\mathrm{oil\_barrel}"), ("P", "oil_barrel"), ("H", r"\[oil\_barrel\]"), ("C", "oil_barrel"), ("~", "oil_bbl"), ("L~", r"\mathrm{oil\_bbl}"), ("P~", "oil_bbl"), ("H~", r"\[oil\_bbl\]"), ("C~", "oil_bbl"), ): with self.subTest(spec): ureg.default_format = spec self.assertEqual(f"{x}", result, f"Failed for {spec}, {result}")
def test_unit_default_formatting(self): ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) for spec, result in ( ( "L", r"\frac{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}", ), ("P", "kilogram·meter²/second"), ("H", r"\[kilogram\ meter^2/second\]"), ("C", "kilogram*meter**2/second"), ("~", "kg * m ** 2 / s"), ("L~", r"\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}"), ("P~", "kg·m²/s"), ("H~", r"\[kg\ m^2/s\]"), ("C~", "kg*m**2/s"), ): with self.subTest(spec): ureg.default_format = spec self.assertEqual(f"{x}", result, f"Failed for {spec}, {result}")
def test_unit_default_formatting(self, subtests): ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) for spec, result in ( ( "L", r"\frac{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}", ), ("P", "kilogram·meter²/second"), ("H", "kilogram meter<sup>2</sup>/second"), ("C", "kilogram*meter**2/second"), ("~", "kg * m ** 2 / s"), ("L~", r"\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}"), ("P~", "kg·m²/s"), ("H~", "kg m<sup>2</sup>/s"), ("C~", "kg*m**2/s"), ): with subtests.test(spec): ureg.default_format = spec assert f"{x}" == result, f"Failed for {spec}, {result}"
def test_ipython(self): alltext = [] class Pretty(object): @staticmethod def text(text): alltext.append(text) ureg = UnitRegistry() x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1)) self.assertEqual(x._repr_html_(), "kilogram meter<sup>2</sup>/second") self.assertEqual(x._repr_latex_(), r'$\frac{\mathrm{kilogram} \cdot ' r'\mathrm{meter}^{2}}{\mathrm{second}}$') x._repr_pretty_(Pretty, False) self.assertEqual("".join(alltext), "kilogram·meter²/second") ureg.default_format = "~" self.assertEqual(x._repr_html_(), "kg m<sup>2</sup>/s") self.assertEqual(x._repr_latex_(), r'$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$') alltext = [] x._repr_pretty_(Pretty, False) self.assertEqual("".join(alltext), "kg·m²/s")
def test_get_base_units(self): ureg = UnitRegistry() self.assertEqual(ureg.get_base_units(''), (1, ureg.Unit(''))) self.assertEqual(ureg.get_base_units('meter'), ureg.get_base_units(ParserHelper(meter=1)))