mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 02:23:48 +00:00
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
import re
|
|
|
|
import numpy as np
|
|
import pytest
|
|
|
|
from pandas._libs.tslibs.timedeltas import delta_to_nanoseconds
|
|
|
|
from pandas import (
|
|
Timedelta,
|
|
offsets,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"obj,expected",
|
|
[
|
|
(np.timedelta64(14, "D"), 14 * 24 * 3600 * 1e9),
|
|
(Timedelta(minutes=-7), -7 * 60 * 1e9),
|
|
(Timedelta(minutes=-7).to_pytimedelta(), -7 * 60 * 1e9),
|
|
(Timedelta(seconds=1234e-9), 1234), # GH43764, GH40946
|
|
(
|
|
Timedelta(seconds=1e-9, milliseconds=1e-5, microseconds=1e-1),
|
|
111,
|
|
), # GH43764
|
|
(
|
|
Timedelta(days=1, seconds=1e-9, milliseconds=1e-5, microseconds=1e-1),
|
|
24 * 3600e9 + 111,
|
|
), # GH43764
|
|
(offsets.Nano(125), 125),
|
|
(1, 1),
|
|
(np.int64(2), 2),
|
|
(np.int32(3), 3),
|
|
],
|
|
)
|
|
def test_delta_to_nanoseconds(obj, expected):
|
|
result = delta_to_nanoseconds(obj)
|
|
assert result == expected
|
|
|
|
|
|
def test_delta_to_nanoseconds_error():
|
|
obj = np.array([123456789], dtype="m8[ns]")
|
|
|
|
with pytest.raises(TypeError, match="<class 'numpy.ndarray'>"):
|
|
delta_to_nanoseconds(obj)
|
|
|
|
|
|
def test_huge_nanoseconds_overflow():
|
|
# GH 32402
|
|
assert delta_to_nanoseconds(Timedelta(1e10)) == 1e10
|
|
assert delta_to_nanoseconds(Timedelta(nanoseconds=1e10)) == 1e10
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"kwargs", [{"Seconds": 1}, {"seconds": 1, "Nanoseconds": 1}, {"Foo": 2}]
|
|
)
|
|
def test_kwarg_assertion(kwargs):
|
|
err_message = (
|
|
"cannot construct a Timedelta from the passed arguments, "
|
|
"allowed keywords are "
|
|
"[weeks, days, hours, minutes, seconds, "
|
|
"milliseconds, microseconds, nanoseconds]"
|
|
)
|
|
|
|
with pytest.raises(ValueError, match=re.escape(err_message)):
|
|
Timedelta(**kwargs)
|