diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-05 10:38:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-05 10:38:34 +0000 |
commit | e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0 (patch) | |
tree | 34512072a667ae716fd262e7b37e733e60fe4d89 /tests/duration/test_construct.py | |
parent | Adding upstream version 2.1.2. (diff) | |
download | pendulum-upstream/3.0.0_a1.tar.xz pendulum-upstream/3.0.0_a1.zip |
Adding upstream version 3.0.0~a1.upstream/3.0.0_a1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/duration/test_construct.py')
-rw-r--r-- | tests/duration/test_construct.py | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/duration/test_construct.py b/tests/duration/test_construct.py new file mode 100644 index 0000000..aaa5390 --- /dev/null +++ b/tests/duration/test_construct.py @@ -0,0 +1,99 @@ +from __future__ import annotations + +from datetime import timedelta + +import pytest + +import pendulum + +from pendulum.duration import AbsoluteDuration +from tests.conftest import assert_duration + + +def test_defaults(): + pi = pendulum.duration() + assert_duration(pi, 0, 0, 0, 0, 0, 0, 0) + + +def test_years(): + pi = pendulum.duration(years=2) + assert_duration(pi, years=2, weeks=0) + assert pi.days == 730 + assert pi.total_seconds() == 63072000 + + +def test_months(): + pi = pendulum.duration(months=3) + assert_duration(pi, months=3, weeks=0) + assert pi.days == 90 + assert pi.total_seconds() == 7776000 + + +def test_weeks(): + pi = pendulum.duration(days=365) + assert_duration(pi, weeks=52) + + pi = pendulum.duration(days=13) + assert_duration(pi, weeks=1) + + +def test_days(): + pi = pendulum.duration(days=6) + assert_duration(pi, 0, 0, 0, 6, 0, 0, 0) + + pi = pendulum.duration(days=16) + assert_duration(pi, 0, 0, 2, 2, 0, 0, 0) + + +def test_hours(): + pi = pendulum.duration(seconds=3600 * 3) + assert_duration(pi, 0, 0, 0, 0, 3, 0, 0) + + +def test_minutes(): + pi = pendulum.duration(seconds=60 * 3) + assert_duration(pi, 0, 0, 0, 0, 0, 3, 0) + + pi = pendulum.duration(seconds=60 * 3 + 12) + assert_duration(pi, 0, 0, 0, 0, 0, 3, 12) + + +def test_all(): + pi = pendulum.duration( + years=2, months=3, days=1177, seconds=7284, microseconds=1000000 + ) + assert_duration(pi, 2, 3, 168, 1, 2, 1, 25) + assert pi.days == 1997 + assert pi.seconds == 7285 + + +def test_absolute_interval(): + pi = AbsoluteDuration(days=-1177, seconds=-7284, microseconds=-1000001) + assert_duration(pi, 0, 0, 168, 1, 2, 1, 25) + assert pi.microseconds == 1 + assert pi.invert + + +def test_invert(): + pi = pendulum.duration(days=1177, seconds=7284, microseconds=1000000) + assert not pi.invert + + pi = pendulum.duration(days=-1177, seconds=-7284, microseconds=-1000000) + assert pi.invert + + +def test_as_timedelta(): + pi = pendulum.duration(seconds=3456.123456) + assert_duration(pi, 0, 0, 0, 0, 0, 57, 36, 123456) + delta = pi.as_timedelta() + assert isinstance(delta, timedelta) + assert delta.total_seconds() == 3456.123456 + assert delta.seconds == 3456 + + +def test_float_years_and_months(): + with pytest.raises(ValueError): + pendulum.duration(years=1.5) + + with pytest.raises(ValueError): + pendulum.duration(months=1.5) |