]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Make test_smoke more thorough 826/head
authorAarni Koskela <akx@iki.fi>
Fri, 28 Jan 2022 11:28:03 +0000 (13:28 +0200)
committerAarni Koskela <akx@iki.fi>
Fri, 8 Apr 2022 10:38:18 +0000 (13:38 +0300)
tests/test_smoke.py

index f5319f21f979c1f6b1d63e9fb917937056d9fac5..052c1cb4c2bc4c3e0820855b1fe324cd2c8a9491 100644 (file)
@@ -6,32 +6,51 @@ operations don't fail due to odd corner cases on any locale that
 we ship.
 """
 import decimal
-from datetime import datetime
-
+import datetime
 import pytest
-from babel import Locale
-from babel import dates
-from babel import numbers
+
+from babel import Locale, units, dates, numbers
+
+NUMBERS = (
+    decimal.Decimal("-33.76"),  # Negative Decimal
+    decimal.Decimal("13.37"),  # Positive Decimal
+    1.2 - 1.0,  # Inaccurate float
+    10,  # Plain old integer
+    0,  # Zero
+)
 
 
 @pytest.mark.all_locales
 def test_smoke_dates(locale):
     locale = Locale.parse(locale)
-    instant = datetime.now()
+    instant = datetime.datetime.now()
     for width in ("full", "long", "medium", "short"):
         assert dates.format_date(instant, format=width, locale=locale)
         assert dates.format_datetime(instant, format=width, locale=locale)
         assert dates.format_time(instant, format=width, locale=locale)
+    # Interval test
+    past = instant - datetime.timedelta(hours=23)
+    assert dates.format_interval(past, instant, locale=locale)
+    # Duration test - at the time of writing, all locales seem to have `short` width,
+    # so let's test that.
+    duration = instant - instant.replace(hour=0, minute=0, second=0)
+    for granularity in ('second', 'minute', 'hour', 'day'):
+        assert dates.format_timedelta(duration, granularity=granularity, format="short", locale=locale)
 
 
 @pytest.mark.all_locales
 def test_smoke_numbers(locale):
     locale = Locale.parse(locale)
-    for number in (
-        decimal.Decimal("-33.76"),  # Negative Decimal
-        decimal.Decimal("13.37"),  # Positive Decimal
-        1.2 - 1.0,  # Inaccurate float
-        10,  # Plain old integer
-        0,  # Zero
-    ):
+    for number in NUMBERS:
         assert numbers.format_decimal(number, locale=locale)
+        assert numbers.format_currency(number, "EUR", locale=locale)
+        assert numbers.format_scientific(number, locale=locale)
+        assert numbers.format_percent(number / 100, locale=locale)
+
+
+@pytest.mark.all_locales
+def test_smoke_units(locale):
+    locale = Locale.parse(locale)
+    for unit in ('length-meter', 'mass-kilogram', 'energy-calorie', 'volume-liter'):
+        for number in NUMBERS:
+            assert units.format_unit(number, measurement_unit=unit, locale=locale)