summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAarni Koskela <akx@iki.fi>2022-01-28 13:50:49 +0200
committerGitHub <noreply@github.com>2022-01-28 13:50:49 +0200
commit9033f020783117b8cc069249d98f8a6060916f8d (patch)
tree7928109d6af1e2b3735eabe434494ec06f3f90e4 /tests
parent89686fc4adc8376d7cec72ca822a71a1e39d2a65 (diff)
parent8a5e4bdb7f40bfbd8f6f0f6f22479e6f0f190da1 (diff)
downloadbabel-9033f020783117b8cc069249d98f8a6060916f8d.tar.gz
Merge pull request #834 from akx/improve-date-parse
Improve date/time parsing
Diffstat (limited to 'tests')
-rw-r--r--tests/test_dates.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/tests/test_dates.py b/tests/test_dates.py
index d11758c..2a883ab 100644
--- a/tests/test_dates.py
+++ b/tests/test_dates.py
@@ -775,10 +775,37 @@ def test_format_timedelta():
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)
+ assert dates.parse_date('2004-04-01', locale='sv_SE', format='short') == date(2004, 4, 1)
+
+
+@pytest.mark.parametrize('input, expected', [
+ # base case, fully qualified time
+ ('15:30:00', time(15, 30)),
+ # test digits
+ ('15:30', time(15, 30)),
+ ('3:30', time(3, 30)),
+ ('00:30', time(0, 30)),
+ # test am parsing
+ ('03:30 am', time(3, 30)),
+ ('3:30:21 am', time(3, 30, 21)),
+ ('3:30 am', time(3, 30)),
+ # test pm parsing
+ ('03:30 pm', time(15, 30)),
+ ('03:30 pM', time(15, 30)),
+ ('03:30 Pm', time(15, 30)),
+ ('03:30 PM', time(15, 30)),
+ # test hour-only parsing
+ ('4 pm', time(16, 0)),
+])
+def test_parse_time(input, expected):
+ assert dates.parse_time(input, locale='en_US') == expected
+
+
+@pytest.mark.parametrize('case', ['', 'a', 'aaa'])
+@pytest.mark.parametrize('func', [dates.parse_date, dates.parse_time])
+def test_parse_errors(case, func):
+ with pytest.raises(dates.ParseError):
+ func(case, locale='en_US')
def test_datetime_format_get_week_number():