1import os 2 3import pytest 4 5from pint import UnitRegistry 6from pint.testsuite import helpers 7 8 9@helpers.requires_not_babel() 10def test_no_babel(sess_registry): 11 ureg = sess_registry 12 distance = 24.0 * ureg.meter 13 with pytest.raises(Exception): 14 distance.format_babel(locale="fr_FR", length="long") 15 16 17@helpers.requires_babel() 18def test_format(sess_registry): 19 ureg = sess_registry 20 dirname = os.path.dirname(__file__) 21 ureg.load_definitions(os.path.join(dirname, "../xtranslated.txt")) 22 23 distance = 24.0 * ureg.meter 24 assert distance.format_babel(locale="fr_FR", length="long") == "24.0 mètres" 25 time = 8.0 * ureg.second 26 assert time.format_babel(locale="fr_FR", length="long") == "8.0 secondes" 27 assert time.format_babel(locale="ro", length="short") == "8.0 s" 28 acceleration = distance / time ** 2 29 assert ( 30 acceleration.format_babel(locale="fr_FR", length="long") 31 == "0.375 mètre par seconde²" 32 ) 33 mks = ureg.get_system("mks") 34 assert mks.format_babel(locale="fr_FR") == "métrique" 35 36 37@helpers.requires_babel() 38def test_registry_locale(): 39 ureg = UnitRegistry(fmt_locale="fr_FR") 40 dirname = os.path.dirname(__file__) 41 ureg.load_definitions(os.path.join(dirname, "../xtranslated.txt")) 42 43 distance = 24.0 * ureg.meter 44 assert distance.format_babel(length="long") == "24.0 mètres" 45 time = 8.0 * ureg.second 46 assert time.format_babel(length="long") == "8.0 secondes" 47 assert time.format_babel(locale="ro", length="short") == "8.0 s" 48 acceleration = distance / time ** 2 49 assert acceleration.format_babel(length="long") == "0.375 mètre par seconde²" 50 mks = ureg.get_system("mks") 51 assert mks.format_babel(locale="fr_FR") == "métrique" 52 53 54@helpers.requires_babel() 55def test_unit_format_babel(): 56 ureg = UnitRegistry(fmt_locale="fr_FR") 57 volume = ureg.Unit("ml") 58 assert volume.format_babel() == "millilitre" 59 60 61@helpers.requires_babel() 62def test_no_registry_locale(sess_registry): 63 ureg = sess_registry 64 distance = 24.0 * ureg.meter 65 with pytest.raises(Exception): 66 distance.format_babel() 67 68 69@helpers.requires_babel() 70def test_str(func_registry): 71 ureg = func_registry 72 d = 24.0 * ureg.meter 73 74 s = "24.0 meter" 75 assert str(d) == s 76 assert "%s" % d == s 77 assert "{}".format(d) == s 78 79 ureg.set_fmt_locale("fr_FR") 80 s = "24.0 mètres" 81 assert str(d) == s 82 assert "%s" % d == s 83 assert "{}".format(d) == s 84 85 ureg.set_fmt_locale(None) 86 s = "24.0 meter" 87 assert str(d) == s 88 assert "%s" % d == s 89 assert "{}".format(d) == s 90