77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
import pytest
|
|
|
|
from pandas._libs.tslibs import Period, Resolution, to_offset
|
|
from pandas._libs.tslibs.dtypes import _attrname_to_abbrevs
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"freqstr,exp_freqstr",
|
|
[("D", "D"), ("W", "D"), ("M", "D"), ("S", "S"), ("T", "S"), ("H", "S")],
|
|
)
|
|
def test_get_to_timestamp_base(freqstr, exp_freqstr):
|
|
off = to_offset(freqstr)
|
|
per = Period._from_ordinal(1, off)
|
|
exp_code = to_offset(exp_freqstr)._period_dtype_code
|
|
|
|
result_code = per._get_to_timestamp_base()
|
|
assert result_code == exp_code
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"freqstr,expected",
|
|
[
|
|
("A", "year"),
|
|
("Q", "quarter"),
|
|
("M", "month"),
|
|
("D", "day"),
|
|
("H", "hour"),
|
|
("T", "minute"),
|
|
("S", "second"),
|
|
("L", "millisecond"),
|
|
("U", "microsecond"),
|
|
("N", "nanosecond"),
|
|
],
|
|
)
|
|
def test_get_attrname_from_abbrev(freqstr, expected):
|
|
assert Resolution.get_reso_from_freq(freqstr).attrname == expected
|
|
|
|
|
|
@pytest.mark.parametrize("freq", ["D", "H", "T", "S", "L", "U", "N"])
|
|
def test_get_freq_roundtrip2(freq):
|
|
obj = Resolution.get_reso_from_freq(freq)
|
|
result = _attrname_to_abbrevs[obj.attrname]
|
|
assert freq == result
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"args,expected",
|
|
[
|
|
((1.5, "T"), (90, "S")),
|
|
((62.4, "T"), (3744, "S")),
|
|
((1.04, "H"), (3744, "S")),
|
|
((1, "D"), (1, "D")),
|
|
((0.342931, "H"), (1234551600, "U")),
|
|
((1.2345, "D"), (106660800, "L")),
|
|
],
|
|
)
|
|
def test_resolution_bumping(args, expected):
|
|
# see gh-14378
|
|
off = to_offset(str(args[0]) + args[1])
|
|
assert off.n == expected[0]
|
|
assert off._prefix == expected[1]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"args",
|
|
[
|
|
(0.5, "N"),
|
|
# Too much precision in the input can prevent.
|
|
(0.3429324798798269273987982, "H"),
|
|
],
|
|
)
|
|
def test_cat(args):
|
|
msg = "Invalid frequency"
|
|
|
|
with pytest.raises(ValueError, match=msg):
|
|
to_offset(str(args[0]) + args[1])
|