| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import numpy as np
- import pytest
- from pandas import (
- Interval,
- Timedelta,
- Timestamp,
- )
- @pytest.fixture
- def interval():
- return Interval(0, 1)
- class TestInterval:
- def test_properties(self, interval):
- assert interval.closed == "right"
- assert interval.left == 0
- assert interval.right == 1
- assert interval.mid == 0.5
- def test_hash(self, interval):
- # should not raise
- hash(interval)
- @pytest.mark.parametrize(
- "left, right, expected",
- [
- (0, 5, 5),
- (-2, 5.5, 7.5),
- (10, 10, 0),
- (10, np.inf, np.inf),
- (-np.inf, -5, np.inf),
- (-np.inf, np.inf, np.inf),
- (Timedelta("0 days"), Timedelta("5 days"), Timedelta("5 days")),
- (Timedelta("10 days"), Timedelta("10 days"), Timedelta("0 days")),
- (Timedelta("1h10min"), Timedelta("5h5min"), Timedelta("3h55min")),
- (Timedelta("5s"), Timedelta("1h"), Timedelta("59min55s")),
- ],
- )
- def test_length(self, left, right, expected):
- # GH 18789
- iv = Interval(left, right)
- result = iv.length
- assert result == expected
- @pytest.mark.parametrize(
- "left, right, expected",
- [
- ("2017-01-01", "2017-01-06", "5 days"),
- ("2017-01-01", "2017-01-01 12:00:00", "12 hours"),
- ("2017-01-01 12:00", "2017-01-01 12:00:00", "0 days"),
- ("2017-01-01 12:01", "2017-01-05 17:31:00", "4 days 5 hours 30 min"),
- ],
- )
- @pytest.mark.parametrize("tz", (None, "UTC", "CET", "US/Eastern"))
- def test_length_timestamp(self, tz, left, right, expected):
- # GH 18789
- iv = Interval(Timestamp(left, tz=tz), Timestamp(right, tz=tz))
- result = iv.length
- expected = Timedelta(expected)
- assert result == expected
- @pytest.mark.parametrize(
- "left, right",
- [
- (0, 1),
- (Timedelta("0 days"), Timedelta("1 day")),
- (Timestamp("2018-01-01"), Timestamp("2018-01-02")),
- (
- Timestamp("2018-01-01", tz="US/Eastern"),
- Timestamp("2018-01-02", tz="US/Eastern"),
- ),
- ],
- )
- def test_is_empty(self, left, right, closed):
- # GH27219
- # non-empty always return False
- iv = Interval(left, right, closed)
- assert iv.is_empty is False
- # same endpoint is empty except when closed='both' (contains one point)
- iv = Interval(left, left, closed)
- result = iv.is_empty
- expected = closed != "both"
- assert result is expected
|