1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
from __future__ import annotations
import pytest
from pint import formatting as fmt
from pint.delegates.formatter._format_helpers import formatter, join_u
from pint.formatting import formatter as pf_formatter
class TestFormatter:
def test_join(self):
for empty in ((), []):
assert join_u("s", empty) == ""
assert join_u("*", "1 2 3".split()) == "1*2*3"
assert join_u("{0}*{1}", "1 2 3".split()) == "1*2*3"
def test_formatter(self):
assert formatter({}.items(), ()) == ""
assert formatter(dict(meter=1).items(), ()) == "meter"
assert formatter((), dict(meter=-1).items()) == "1 / meter"
assert formatter((), dict(meter=-1).items(), as_ratio=False) == "meter ** -1"
assert (
formatter((), dict(meter=-1, second=-1).items(), as_ratio=False)
== "meter ** -1 * second ** -1"
)
assert (
formatter(
(),
dict(meter=-1, second=-1).items(),
)
== "1 / meter / second"
)
assert (
formatter((), dict(meter=-1, second=-1).items(), single_denominator=True)
== "1 / (meter * second)"
)
assert (
formatter((), dict(meter=-1, second=-2).items())
== "1 / meter / second ** 2"
)
assert (
formatter((), dict(meter=-1, second=-2).items(), single_denominator=True)
== "1 / (meter * second ** 2)"
)
def testparse_spec(self):
assert fmt._parse_spec("") == ""
assert fmt._parse_spec("") == ""
with pytest.raises(ValueError):
fmt._parse_spec("W")
with pytest.raises(ValueError):
fmt._parse_spec("PL")
def test_format_unit(self):
assert fmt.format_unit("", "C") == "dimensionless"
with pytest.raises(ValueError):
fmt.format_unit("m", "W")
def test_pf_formatter(self):
assert pf_formatter({}.items()) == ""
assert pf_formatter(dict(meter=1).items()) == "meter"
assert pf_formatter(dict(meter=-1).items()) == "1 / meter"
assert pf_formatter(dict(meter=-1).items(), as_ratio=False) == "meter ** -1"
assert (
pf_formatter(dict(meter=-1, second=-1).items(), as_ratio=False)
== "meter ** -1 * second ** -1"
)
assert (
pf_formatter(
dict(meter=-1, second=-1).items(),
)
== "1 / meter / second"
)
assert (
pf_formatter(dict(meter=-1, second=-1).items(), single_denominator=True)
== "1 / (meter * second)"
)
assert (
pf_formatter(dict(meter=-1, second=-2).items()) == "1 / meter / second ** 2"
)
assert (
pf_formatter(dict(second=-2, meter=-1).items(), sort=False)
== "1 / second ** 2 / meter"
)
assert (
pf_formatter(dict(meter=-1, second=-2).items(), single_denominator=True)
== "1 / (meter * second ** 2)"
)
|