示例#1
0
    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")
示例#2
0
 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))
示例#3
0
 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)))
示例#4
0
 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)))
示例#5
0
    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")
示例#6
0
    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"
示例#7
0
 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))
示例#8
0
 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}")
示例#9
0
 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}")
示例#10
0
 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}"
示例#11
0
    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")
示例#12
0
 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)))