Skip to content

Commit f0b34b0

Browse files
add tests for existing behavior
Currently all timedelta64 sums involve int -> float conversion.
1 parent f9762d8 commit f0b34b0

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

pandas/tests/series/test_reductions.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from hypothesis import given
2+
import hypothesis.strategies as st
13
import numpy as np
24
import pytest
35

@@ -51,6 +53,34 @@ def test_td64_sum_empty(skipna):
5153
assert result == pd.Timedelta(0)
5254

5355

56+
@given(
57+
st.integers(
58+
min_value=0,
59+
max_value=10 ** (np.finfo(np.float64).precision),
60+
).map(pd.Timedelta)
61+
)
62+
def test_td64_summation_retains_ns_precision_over_expected_range(value: pd.Timedelta):
63+
result = pd.Series(value).sum()
64+
65+
assert result == value
66+
67+
68+
@given(
69+
st.integers(
70+
min_value=10 ** (np.finfo(np.float64).precision),
71+
max_value=pd.Timedelta.max.value,
72+
)
73+
.filter(lambda i: int(np.float64(i)) != i)
74+
.map(pd.Timedelta)
75+
)
76+
def test_td64_summation_loses_ns_precision_if_float_conversion_rounds(
77+
value: pd.Timedelta,
78+
):
79+
result = pd.Series(value).sum()
80+
81+
assert result != value
82+
83+
5484
def test_td64_summation_overflow():
5585
# GH#9442
5686
ser = Series(pd.date_range("20130101", periods=100000, freq="H"))

0 commit comments

Comments
 (0)