Beispiel #1
0
    def test_as_unit(self):
        td = Timedelta(days=1)

        assert td._as_unit("ns") is td

        res = td._as_unit("us")
        assert res.value == td.value // 1000
        assert res._reso == NpyDatetimeUnit.NPY_FR_us.value

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso

        res = td._as_unit("ms")
        assert res.value == td.value // 1_000_000
        assert res._reso == NpyDatetimeUnit.NPY_FR_ms.value

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso

        res = td._as_unit("s")
        assert res.value == td.value // 1_000_000_000
        assert res._reso == NpyDatetimeUnit.NPY_FR_s.value

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso
Beispiel #2
0
    def test_as_unit(self):
        td = Timedelta(days=1)

        assert td._as_unit("ns") is td

        res = td._as_unit("us")
        assert res.value == td.value // 1000
        assert res._reso == td._reso - 1

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso

        res = td._as_unit("ms")
        assert res.value == td.value // 1_000_000
        assert res._reso == td._reso - 2

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso

        res = td._as_unit("s")
        assert res.value == td.value // 1_000_000_000
        assert res._reso == td._reso - 3

        rt = res._as_unit("ns")
        assert rt.value == td.value
        assert rt._reso == td._reso
Beispiel #3
0
    def test_as_unit_rounding(self):
        td = Timedelta(microseconds=1500)
        res = td._as_unit("ms")

        expected = Timedelta(milliseconds=1)
        assert res == expected

        assert res._reso == NpyDatetimeUnit.NPY_FR_ms.value
        assert res.value == 1

        with pytest.raises(ValueError, match="Cannot losslessly convert units"):
            td._as_unit("ms", round_ok=False)
Beispiel #4
0
    def test_as_unit_non_nano(self):
        # case where we are going neither to nor from nano
        td = Timedelta(days=1)._as_unit("ms")
        assert td.days == 1
        assert td.value == 86_400_000
        assert td.components.days == 1
        assert td._d == 1
        assert td.total_seconds() == 86400

        res = td._as_unit("us")
        assert res.value == 86_400_000_000
        assert res.components.days == 1
        assert res.components.hours == 0
        assert res._d == 1
        assert res._h == 0
        assert res.total_seconds() == 86400