|
1 | 1 | from __future__ import division
|
2 | 2 |
|
3 |
| -from pandas import Interval, Timestamp |
| 3 | +import numpy as np |
| 4 | +from pandas import Interval, Timestamp, Timedelta |
4 | 5 | from pandas.core.common import _any_none
|
5 | 6 |
|
6 | 7 | import pytest
|
@@ -66,6 +67,36 @@ def test_hash(self, interval):
|
66 | 67 | # should not raise
|
67 | 68 | hash(interval)
|
68 | 69 |
|
| 70 | + @pytest.mark.parametrize('left, right, expected', [ |
| 71 | + (0, 5, 5), |
| 72 | + (-2, 5.5, 7.5), |
| 73 | + (10, 10, 0), |
| 74 | + (10, np.inf, np.inf), |
| 75 | + (-np.inf, -5, np.inf), |
| 76 | + (-np.inf, np.inf, np.inf), |
| 77 | + (Timedelta('0 days'), Timedelta('5 days'), Timedelta('5 days')), |
| 78 | + (Timedelta('10 days'), Timedelta('10 days'), Timedelta('0 days')), |
| 79 | + (Timedelta('1H10M'), Timedelta('5H5M'), Timedelta('3H55M')), |
| 80 | + (Timedelta('5S'), Timedelta('1H'), Timedelta('59M55S'))]) |
| 81 | + def test_length(self, left, right, expected): |
| 82 | + # GH 18789 |
| 83 | + iv = Interval(left, right) |
| 84 | + result = iv.length |
| 85 | + assert result == expected |
| 86 | + |
| 87 | + @pytest.mark.parametrize('left, right, expected', [ |
| 88 | + ('2017-01-01', '2017-01-06', '5 days'), |
| 89 | + ('2017-01-01', '2017-01-01 12:00:00', '12 hours'), |
| 90 | + ('2017-01-01 12:00', '2017-01-01 12:00:00', '0 days'), |
| 91 | + ('2017-01-01 12:01', '2017-01-05 17:31:00', '4 days 5 hours 30 min')]) |
| 92 | + @pytest.mark.parametrize('tz', (None, 'UTC', 'CET', 'US/Eastern')) |
| 93 | + def test_length_timestamp(self, tz, left, right, expected): |
| 94 | + # GH 18789 |
| 95 | + iv = Interval(Timestamp(left, tz=tz), Timestamp(right, tz=tz)) |
| 96 | + result = iv.length |
| 97 | + expected = Timedelta(expected) |
| 98 | + assert result == expected |
| 99 | + |
69 | 100 | def test_math_add(self, interval):
|
70 | 101 | expected = Interval(1, 2)
|
71 | 102 | actual = interval + 1
|
|
0 commit comments