Exemplo n.º 1
0
    def test_prefix_definition(self):

        self.assertRaises(ValueError, Definition.from_string, "m- = 1e-3 k")

        for definition in ("m- = 1e-3", "m- = 10**-3", "m- = 0.001"):
            x = Definition.from_string(definition)
            self.assertIsInstance(x, PrefixDefinition)
            self.assertEqual(x.name, "m")
            self.assertEqual(x.aliases, ())
            self.assertEqual(x.converter.to_reference(1000), 1)
            self.assertEqual(x.converter.from_reference(0.001), 1)
            self.assertEqual(str(x), "m")

        x = Definition.from_string("kilo- = 1e-3 = k-")
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, "kilo")
        self.assertEqual(x.aliases, ())
        self.assertEqual(x.symbol, "k")
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(0.001), 1)

        x = Definition.from_string("kilo- = 1e-3 = k- = anotherk-")
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, "kilo")
        self.assertEqual(x.aliases, ("anotherk", ))
        self.assertEqual(x.symbol, "k")
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(0.001), 1)
Exemplo n.º 2
0
    def test_prefix_definition(self):

        with pytest.raises(ValueError):
            Definition.from_string("m- = 1e-3 k")

        for definition in ("m- = 1e-3", "m- = 10**-3", "m- = 0.001"):
            x = Definition.from_string(definition)
            assert isinstance(x, PrefixDefinition)
            assert x.name == "m"
            assert x.aliases == ()
            assert x.converter.to_reference(1000) == 1
            assert x.converter.from_reference(0.001) == 1
            assert str(x) == "m"

        x = Definition.from_string("kilo- = 1e-3 = k-")
        assert isinstance(x, PrefixDefinition)
        assert x.name == "kilo"
        assert x.aliases == ()
        assert x.symbol == "k"
        assert x.converter.to_reference(1000) == 1
        assert x.converter.from_reference(0.001) == 1

        x = Definition.from_string("kilo- = 1e-3 = k- = anotherk-")
        assert isinstance(x, PrefixDefinition)
        assert x.name == "kilo"
        assert x.aliases == ("anotherk",)
        assert x.symbol == "k"
        assert x.converter.to_reference(1000) == 1
        assert x.converter.from_reference(0.001) == 1
Exemplo n.º 3
0
    def test_prefix_definition(self):
        for definition in ('m- = 1e-3', 'm- = 10**-3', 'm- = 0.001'):
            x = Definition.from_string(definition)
            self.assertIsInstance(x, PrefixDefinition)
            self.assertEqual(x.name, 'm')
            self.assertEqual(x.aliases, ())
            self.assertEqual(x.converter.to_reference(1000), 1)
            self.assertEqual(x.converter.from_reference(0.001), 1)
            self.assertEqual(str(x), 'm')

        x = Definition.from_string('kilo- = 1e-3 = k-')
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, 'kilo')
        self.assertEqual(x.aliases, ())
        self.assertEqual(x.symbol, 'k')
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(.001), 1)

        x = Definition.from_string('kilo- = 1e-3 = k- = anotherk-')
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, 'kilo')
        self.assertEqual(x.aliases, ('anotherk', ))
        self.assertEqual(x.symbol, 'k')
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(.001), 1)
Exemplo n.º 4
0
    def test_prefix_definition(self):
        for definition in ('m- = 1e-3', 'm- = 10**-3', 'm- = 0.001'):
            x = Definition.from_string(definition)
            self.assertIsInstance(x, PrefixDefinition)
            self.assertEqual(x.name, 'm')
            self.assertEqual(x.aliases, ())
            self.assertEqual(x.converter.to_reference(1000), 1)
            self.assertEqual(x.converter.from_reference(0.001), 1)
            self.assertEqual(str(x), 'm')

        x = Definition.from_string('kilo- = 1e-3 = k-')
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, 'kilo')
        self.assertEqual(x.aliases, ())
        self.assertEqual(x.symbol, 'k')
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(.001), 1)

        x = Definition.from_string('kilo- = 1e-3 = k- = anotherk-')
        self.assertIsInstance(x, PrefixDefinition)
        self.assertEqual(x.name, 'kilo')
        self.assertEqual(x.aliases, ('anotherk', ))
        self.assertEqual(x.symbol, 'k')
        self.assertEqual(x.converter.to_reference(1000), 1)
        self.assertEqual(x.converter.from_reference(.001), 1)
Exemplo n.º 5
0
    def test_unit_definition(self):
        x = Definition.from_string("coulomb = ampere * second")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.reference, UnitsContainer(ampere=1, second=1))

        x = Definition.from_string("faraday =  96485.3399 * coulomb")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 96485.3399)
        self.assertEqual(x.reference, UnitsContainer(coulomb=1))

        x = Definition.from_string("degF = 9 / 5 * kelvin; offset: 255.372222")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, OffsetConverter)
        self.assertEqual(x.converter.scale, 9 / 5)
        self.assertEqual(x.converter.offset, 255.372222)
        self.assertEqual(x.reference, UnitsContainer(kelvin=1))

        x = Definition.from_string(
            "turn = 6.28 * radian = _ = revolution = = cycle = _")
        self.assertIsInstance(x, UnitDefinition)
        self.assertEqual(x.name, "turn")
        self.assertEqual(x.aliases, ("revolution", "cycle"))
        self.assertEqual(x.symbol, "turn")
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 6.28)
        self.assertEqual(x.reference, UnitsContainer(radian=1))
Exemplo n.º 6
0
    def test_dimension_definition(self):
        x = DimensionDefinition('[time]', '', (), converter='')
        self.assertTrue(x.is_base)
        self.assertEqual(x.name, '[time]')

        x = Definition.from_string('[speed] = [length]/[time]')
        self.assertIsInstance(x, DimensionDefinition)
        self.assertEqual(x.reference, UnitsContainer({'[length]': 1, '[time]': -1}))
Exemplo n.º 7
0
    def test_dimension_definition(self):
        x = DimensionDefinition("[time]", "", (), None, is_base=True)
        assert x.is_base
        assert x.name == "[time]"

        x = Definition.from_string("[speed] = [length]/[time]")
        assert isinstance(x, DimensionDefinition)
        assert x.reference == UnitsContainer({"[length]": 1, "[time]": -1})
Exemplo n.º 8
0
    def test_dimension_definition(self):
        x = DimensionDefinition("[time]", "", (), converter="")
        self.assertTrue(x.is_base)
        self.assertEqual(x.name, "[time]")

        x = Definition.from_string("[speed] = [length]/[time]")
        self.assertIsInstance(x, DimensionDefinition)
        self.assertEqual(x.reference,
                         UnitsContainer({
                             "[length]": 1,
                             "[time]": -1
                         }))
Exemplo n.º 9
0
    def test_dimension_definition(self):
        x = DimensionDefinition('[time]', '', (), converter='')
        self.assertTrue(x.is_base)
        self.assertEqual(x.name, '[time]')

        x = Definition.from_string('[speed] = [length]/[time]')
        self.assertIsInstance(x, DimensionDefinition)
        self.assertEqual(x.reference,
                         UnitsContainer({
                             '[length]': 1,
                             '[time]': -1
                         }))
Exemplo n.º 10
0
    def test_log_unit_definition(self):

        x = Definition.from_string(
            "decibelmilliwatt = 1e-3 watt; logbase: 10; logfactor: 10 = dBm")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1e-3)
        self.assertEqual(x.converter.logbase, 10)
        self.assertEqual(x.converter.logfactor, 10)
        self.assertEqual(x.reference, UnitsContainer(watt=1))

        x = Definition.from_string(
            "decibel = 1 ; logbase: 10; logfactor: 10 = dB")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.converter.logbase, 10)
        self.assertEqual(x.converter.logfactor, 10)
        self.assertEqual(x.reference, UnitsContainer())

        x = Definition.from_string("bell = 1 ; logbase: 10; logfactor: 1 = B")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.converter.logbase, 10)
        self.assertEqual(x.converter.logfactor, 1)
        self.assertEqual(x.reference, UnitsContainer())

        x = Definition.from_string("decade = 1 ; logbase: 10; logfactor: 1")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.converter.logbase, 10)
        self.assertEqual(x.converter.logfactor, 1)
        self.assertEqual(x.reference, UnitsContainer())

        eulersnumber = 2.71828182845904523536028747135266249775724709369995
        x = Definition.from_string(
            "neper = 1 ; logbase: %1.50f; logfactor: 0.5 = Np" % eulersnumber)
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.converter.logbase, eulersnumber)
        self.assertEqual(x.converter.logfactor, 0.5)
        self.assertEqual(x.reference, UnitsContainer())

        x = Definition.from_string(
            "octave = 1 ; logbase: 2; logfactor: 1 = oct")
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, LogarithmicConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.converter.logbase, 2)
        self.assertEqual(x.converter.logfactor, 1)
        self.assertEqual(x.reference, UnitsContainer())
Exemplo n.º 11
0
    def test_log_unit_definition(self):

        x = Definition.from_string(
            "decibelmilliwatt = 1e-3 watt; logbase: 10; logfactor: 10 = dBm"
        )
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1e-3
        assert x.converter.logbase == 10
        assert x.converter.logfactor == 10
        assert x.reference == UnitsContainer(watt=1)

        x = Definition.from_string("decibel = 1 ; logbase: 10; logfactor: 10 = dB")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1
        assert x.converter.logbase == 10
        assert x.converter.logfactor == 10
        assert x.reference == UnitsContainer()

        x = Definition.from_string("bell = 1 ; logbase: 10; logfactor: 1 = B")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1
        assert x.converter.logbase == 10
        assert x.converter.logfactor == 1
        assert x.reference == UnitsContainer()

        x = Definition.from_string("decade = 1 ; logbase: 10; logfactor: 1")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1
        assert x.converter.logbase == 10
        assert x.converter.logfactor == 1
        assert x.reference == UnitsContainer()

        eulersnumber = 2.71828182845904523536028747135266249775724709369995
        x = Definition.from_string(
            "neper = 1 ; logbase: %1.50f; logfactor: 0.5 = Np" % eulersnumber
        )
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1
        assert x.converter.logbase == eulersnumber
        assert x.converter.logfactor == 0.5
        assert x.reference == UnitsContainer()

        x = Definition.from_string("octave = 1 ; logbase: 2; logfactor: 1 = oct")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, LogarithmicConverter)
        assert x.converter.scale == 1
        assert x.converter.logbase == 2
        assert x.converter.logfactor == 1
        assert x.reference == UnitsContainer()
Exemplo n.º 12
0
    def test_unit_definition(self):
        x = Definition.from_string('coulomb = ampere * second')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.reference, UnitsContainer(ampere=1, second=1))

        x = Definition.from_string('faraday =  96485.3399 * coulomb')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 96485.3399)
        self.assertEqual(x.reference, UnitsContainer(coulomb=1))

        x = Definition.from_string('degF = 9 / 5 * kelvin; offset: 255.372222')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, OffsetConverter)
        self.assertEqual(x.converter.scale, 9 / 5)
        self.assertEqual(x.converter.offset, 255.372222)
        self.assertEqual(x.reference, UnitsContainer(kelvin=1))
Exemplo n.º 13
0
    def test_unit_definition(self):
        x = Definition.from_string('coulomb = ampere * second')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale, 1)
        self.assertEqual(x.reference, UnitsContainer(ampere=1, second=1))

        x = Definition.from_string('faraday =  96485.3399 * coulomb')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, ScaleConverter)
        self.assertEqual(x.converter.scale,  96485.3399)
        self.assertEqual(x.reference, UnitsContainer(coulomb=1))

        x = Definition.from_string('degF = 9 / 5 * kelvin; offset: 255.372222')
        self.assertIsInstance(x, UnitDefinition)
        self.assertFalse(x.is_base)
        self.assertIsInstance(x.converter, OffsetConverter)
        self.assertEqual(x.converter.scale, 9/5)
        self.assertEqual(x.converter.offset, 255.372222)
        self.assertEqual(x.reference, UnitsContainer(kelvin=1))
Exemplo n.º 14
0
    def test_unit_definition(self):
        x = Definition.from_string("coulomb = ampere * second")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, ScaleConverter)
        assert x.converter.scale == 1
        assert x.reference == UnitsContainer(ampere=1, second=1)

        x = Definition.from_string("faraday =  96485.3399 * coulomb")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, ScaleConverter)
        assert x.converter.scale == 96485.3399
        assert x.reference == UnitsContainer(coulomb=1)

        x = Definition.from_string("degF = 9 / 5 * kelvin; offset: 255.372222")
        assert isinstance(x, UnitDefinition)
        assert not x.is_base
        assert isinstance(x.converter, OffsetConverter)
        assert x.converter.scale == 9 / 5
        assert x.converter.offset == 255.372222
        assert x.reference == UnitsContainer(kelvin=1)

        x = Definition.from_string(
            "turn = 6.28 * radian = _ = revolution = = cycle = _"
        )
        assert isinstance(x, UnitDefinition)
        assert x.name == "turn"
        assert x.aliases == ("revolution", "cycle")
        assert x.symbol == "turn"
        assert not x.is_base
        assert isinstance(x.converter, ScaleConverter)
        assert x.converter.scale == 6.28
        assert x.reference == UnitsContainer(radian=1)

        with pytest.raises(ValueError):
            Definition.from_string(
                "degF = 9 / 5 * kelvin; offset: 255.372222 bla",
            )
Exemplo n.º 15
0
 def test_baseunit_definition(self):
     x = Definition.from_string('meter = [length]')
     self.assertIsInstance(x, UnitDefinition)
     self.assertTrue(x.is_base)
     self.assertEqual(x.reference, UnitsContainer({'[length]': 1}))
Exemplo n.º 16
0
 def test_alias_definition(self):
     x = Definition.from_string("@alias meter = metro = metr")
     assert isinstance(x, AliasDefinition)
     assert x.name == "meter"
     assert x.aliases == ("metro", "metr")
Exemplo n.º 17
0
 def test_baseunit_definition(self):
     x = Definition.from_string("meter = [length]")
     self.assertIsInstance(x, UnitDefinition)
     self.assertTrue(x.is_base)
     self.assertEqual(x.reference, UnitsContainer({"[length]": 1}))
Exemplo n.º 18
0
 def test_baseunit_definition(self):
     x = Definition.from_string("meter = [length]")
     assert isinstance(x, UnitDefinition)
     assert x.is_base
     assert x.reference == UnitsContainer({"[length]": 1})
Exemplo n.º 19
0
 def test_invalid(self):
     with self.assertRaises(DefinitionSyntaxError):
         Definition.from_string("x = [time] * meter")
     with self.assertRaises(DefinitionSyntaxError):
         Definition.from_string("[x] = [time] * meter")
Exemplo n.º 20
0
 def test_alias_definition(self):
     x = Definition.from_string("@alias meter = metro = metr")
     self.assertIsInstance(x, AliasDefinition)
     self.assertEqual(x.name, "meter")
     self.assertEqual(x.aliases, ("metro", "metr"))