]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
copy babel.dates doctests as unit tests
authorAlex Morega <alex@grep.ro>
Sat, 6 Jul 2013 08:37:05 +0000 (10:37 +0200)
committerAlex Morega <alex@grep.ro>
Sat, 6 Jul 2013 12:54:57 +0000 (14:54 +0200)
tests/test_dates.py

index 75e7e11902280634087a12c997122586ae81ab8c..07ef390d4362f4f1fdbb4d46cfb71da97fff9ddf 100644 (file)
@@ -19,7 +19,7 @@ import unittest
 
 from pytz import timezone
 
-from babel import dates
+from babel import dates, Locale
 from babel.util import FixedOffsetTimezone
 
 
@@ -331,9 +331,191 @@ class TimeZoneAdjustTestCase(unittest.TestCase):
         self.assertEqual('3:30:00 PM +0000', formatted_time)
 
 
+def test_get_period_names():
+    assert dates.get_period_names(locale='en_US')['am'] == u'AM'
+
+
+def test_get_day_names():
+    assert dates.get_day_names('wide', locale='en_US')[1] == u'Tuesday'
+    assert dates.get_day_names('abbreviated', locale='es')[1] == u'mar'
+    de = dates.get_day_names('narrow', context='stand-alone', locale='de_DE')
+    assert de[1] == u'D'
+
+
+def test_get_month_names():
+    assert dates.get_month_names('wide', locale='en_US')[1] == u'January'
+    assert dates.get_month_names('abbreviated', locale='es')[1] == u'ene'
+    de = dates.get_month_names('narrow', context='stand-alone', locale='de_DE')
+    assert de[1] == u'J'
+
+
+def test_get_quarter_names():
+    assert dates.get_quarter_names('wide', locale='en_US')[1] == u'1st quarter'
+    assert dates.get_quarter_names('abbreviated', locale='de_DE')[1] == u'Q1'
+
+
+def test_get_era_names():
+    assert dates.get_era_names('wide', locale='en_US')[1] == u'Anno Domini'
+    assert dates.get_era_names('abbreviated', locale='de_DE')[1] == u'n. Chr.'
+
+
+def test_get_date_format():
+    us = dates.get_date_format(locale='en_US')
+    assert us.pattern == u'MMM d, y'
+    de = dates.get_date_format('full', locale='de_DE')
+    assert de.pattern == u'EEEE, d. MMMM y'
+
+
+def test_get_datetime_format():
+    assert dates.get_datetime_format(locale='en_US') == u'{1}, {0}'
+
+
+def test_get_time_format():
+    assert dates.get_time_format(locale='en_US').pattern == u'h:mm:ss a'
+    assert (dates.get_time_format('full', locale='de_DE').pattern ==
+            u'HH:mm:ss zzzz')
+
+
+def test_get_timezone_gmt():
+    dt = datetime(2007, 4, 1, 15, 30)
+    assert dates.get_timezone_gmt(dt, locale='en') == u'GMT+00:00'
+
+    tz = timezone('America/Los_Angeles')
+    dt = datetime(2007, 4, 1, 15, 30, tzinfo=tz)
+    assert dates.get_timezone_gmt(dt, locale='en') == u'GMT-08:00'
+    assert dates.get_timezone_gmt(dt, 'short', locale='en') == u'-0800'
+
+    assert dates.get_timezone_gmt(dt, 'long', locale='fr_FR') == u'UTC-08:00'
+
+
+def test_get_timezone_location():
+    tz = timezone('America/St_Johns')
+    assert (dates.get_timezone_location(tz, locale='de_DE') ==
+            u"Kanada (St. John's) Zeit")
+    tz = timezone('America/Mexico_City')
+    assert (dates.get_timezone_location(tz, locale='de_DE') ==
+            u'Mexiko (Mexiko-Stadt) Zeit')
+
+    tz = timezone('Europe/Berlin')
+    assert (dates.get_timezone_name(tz, locale='de_DE') ==
+            u'Mitteleurop\xe4ische Zeit')
+
+
+def test_get_timezone_name():
+    dt = time(15, 30, tzinfo=timezone('America/Los_Angeles'))
+    assert (dates.get_timezone_name(dt, locale='en_US') ==
+            u'Pacific Standard Time')
+    assert dates.get_timezone_name(dt, width='short', locale='en_US') == u'PST'
+
+    tz = timezone('America/Los_Angeles')
+    assert dates.get_timezone_name(tz, locale='en_US') == u'Pacific Time'
+    assert dates.get_timezone_name(tz, 'short', locale='en_US') == u'PT'
+
+    tz = timezone('Europe/Berlin')
+    assert (dates.get_timezone_name(tz, locale='de_DE') ==
+            u'Mitteleurop\xe4ische Zeit')
+    assert (dates.get_timezone_name(tz, locale='pt_BR') ==
+            u'Hor\xe1rio da Europa Central')
+
+    tz = timezone('America/St_Johns')
+    assert dates.get_timezone_name(tz, locale='de_DE') == u'Neufundland-Zeit'
+
+
+def test_format_date():
+    d = date(2007, 04, 01)
+    assert dates.format_date(d, locale='en_US') == u'Apr 1, 2007'
+    assert (dates.format_date(d, format='full', locale='de_DE') ==
+            u'Sonntag, 1. April 2007')
+    assert (dates.format_date(d, "EEE, MMM d, ''yy", locale='en') ==
+            u"Sun, Apr 1, '07")
+
+
+def test_format_datetime():
+    dt = datetime(2007, 04, 01, 15, 30)
+    assert (dates.format_datetime(dt, locale='en_US') ==
+            u'Apr 1, 2007, 3:30:00 PM')
+
+    full = dates.format_datetime(dt, 'full', tzinfo=timezone('Europe/Paris'),
+                                 locale='fr_FR')
+    assert full == (u'dimanche 1 avril 2007 17:30:00 heure '
+                    u'avanc\xe9e d\u2019Europe centrale')
+    custom = dates.format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
+                                   tzinfo=timezone('US/Eastern'), locale='en')
+    assert custom == u'2007.04.01 AD at 11:30:00 EDT'
+
+
+def test_format_time():
+    t = time(15, 30)
+    assert dates.format_time(t, locale='en_US') == u'3:30:00 PM'
+    assert dates.format_time(t, format='short', locale='de_DE') == u'15:30'
+
+    assert (dates.format_time(t, "hh 'o''clock' a", locale='en') ==
+            u"03 o'clock PM")
+
+    t = datetime(2007, 4, 1, 15, 30)
+    tzinfo = timezone('Europe/Paris')
+    t = tzinfo.localize(t)
+    fr = dates.format_time(t, format='full', tzinfo=tzinfo, locale='fr_FR')
+    assert fr == u'15:30:00 heure avanc\xe9e d\u2019Europe centrale'
+    custom = dates.format_time(t, "hh 'o''clock' a, zzzz",
+                               tzinfo=timezone('US/Eastern'), locale='en')
+    assert custom == u"09 o'clock AM, Eastern Daylight Time"
+
+    t = time(15, 30)
+    paris = dates.format_time(t, format='full',
+                              tzinfo=timezone('Europe/Paris'), locale='fr_FR')
+    assert paris == u'15:30:00 heure normale de l\u2019Europe centrale'
+    us_east = dates.format_time(t, format='full',
+                                tzinfo=timezone('US/Eastern'), locale='en_US')
+    assert us_east == u'3:30:00 PM Eastern Standard Time'
+
+
+def test_format_timedelta():
+    assert (dates.format_timedelta(timedelta(weeks=12), locale='en_US')
+            == u'3 months')
+    assert (dates.format_timedelta(timedelta(seconds=1), locale='es')
+            == u'1 segundo')
+
+    assert (dates.format_timedelta(timedelta(hours=3), granularity='day',
+                                   locale='en_US')
+            == u'1 day')
+
+    assert (dates.format_timedelta(timedelta(hours=23), threshold=0.9,
+                                   locale='en_US')
+            == u'1 day')
+    assert (dates.format_timedelta(timedelta(hours=23), threshold=1.1,
+                                   locale='en_US')
+            == u'23 hours')
+
+
+def test_parse_date():
+    assert dates.parse_date('4/1/04', locale='en_US') == date(2004, 4, 1)
+    assert dates.parse_date('01.04.2004', locale='de_DE') == date(2004, 4, 1)
+
+
+def test_parse_time():
+    assert dates.parse_time('15:30:00', locale='en_US') == time(15, 30)
+
+
+def test_datetime_format_get_week_number():
+    format = dates.DateTimeFormat(date(2006, 1, 8), Locale.parse('de_DE'))
+    assert format.get_week_number(6) == 1
+
+    format = dates.DateTimeFormat(date(2006, 1, 8), Locale.parse('en_US'))
+    assert format.get_week_number(6) == 2
+
+
+def test_parse_pattern():
+    assert dates.parse_pattern("MMMMd").format == u'%(MMMM)s%(d)s'
+    assert (dates.parse_pattern("MMM d, yyyy").format ==
+            u'%(MMM)s %(d)s, %(yyyy)s')
+    assert (dates.parse_pattern("H:mm' Uhr 'z").format ==
+            u'%(H)s:%(mm)s Uhr %(z)s')
+    assert dates.parse_pattern("hh' o''clock'").format == u"%(hh)s o'clock"
+
+
 def suite():
     suite = unittest.TestSuite()
-    suite.addTest(doctest.DocTestSuite(dates))
     suite.addTest(unittest.makeSuite(DateTimeFormatTestCase))
     suite.addTest(unittest.makeSuite(FormatDateTestCase))
     suite.addTest(unittest.makeSuite(FormatDatetimeTestCase))