From 74b1f5ff9c36de1611870aa0187284523e21356c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 12:36:48 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A7=AA=20[test]=20add=20comprehensive?= =?UTF-8?q?=20tests=20for=20pd=5Fto=5Fdatetime=20in=20xalpha/cons.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added tests/test_cons.py with test cases covering: - Single string parsing - List of strings and pandas Series parsing - Explicit format and already converted datetime objects - Mixed format support - Error handling (ValueError and errors='coerce') Co-authored-by: refraction-ray <35157286+refraction-ray@users.noreply.github.com> --- tests/test_cons.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 tests/test_cons.py diff --git a/tests/test_cons.py b/tests/test_cons.py new file mode 100644 index 0000000..9dec2fa --- /dev/null +++ b/tests/test_cons.py @@ -0,0 +1,45 @@ +import pandas as pd +import pytest +from xalpha.cons import pd_to_datetime + +def test_pd_to_datetime_single_string(): + res = pd_to_datetime("2023-01-01") + assert isinstance(res, pd.Timestamp) + assert res == pd.Timestamp("2023-01-01") + +def test_pd_to_datetime_list(): + res = pd_to_datetime(["2023-01-01", "2023-01-02"]) + assert isinstance(res, pd.DatetimeIndex) + assert res[0] == pd.Timestamp("2023-01-01") + +def test_pd_to_datetime_series(): + series = pd.Series(["2023-01-01", "2023-01-02"]) + res = pd_to_datetime(series) + # pd.to_datetime(pd.Series) returns a pd.Series + assert isinstance(res, pd.Series) + assert res.iloc[0] == pd.Timestamp("2023-01-01") + +def test_pd_to_datetime_with_format(): + res = pd_to_datetime("20230101", format="%Y%m%d") + assert res == pd.Timestamp("2023-01-01") + +def test_pd_to_datetime_already_datetime(): + dt = pd.Timestamp("2023-01-01") + res = pd_to_datetime(dt) + assert res == dt + +def test_pd_to_datetime_mixed_format(): + # This test verifies behavior for mixed formats, which pd_to_datetime handles + res = pd_to_datetime(["2023-01-01", "2023/01/02"]) + assert res[0] == pd.Timestamp("2023-01-01") + assert res[1] == pd.Timestamp("2023-01-02") + +def test_pd_to_datetime_invalid_string(): + # Verify that invalid strings raise a ValueError by default (standard pandas behavior) + with pytest.raises(ValueError): + pd_to_datetime("not-a-date") + +def test_pd_to_datetime_errors_coerce(): + # Verify that errors='coerce' works as expected + res = pd_to_datetime("not-a-date", errors='coerce') + assert pd.isna(res) From 4f3a8f5127dfcb9e9ea7affe39444c4e431a198f Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 12:51:51 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=A7=AA=20[test]=20add=20comprehensive?= =?UTF-8?q?=20tests=20for=20pd=5Fto=5Fdatetime=20in=20xalpha/cons.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added tests/test_cons.py with test cases covering: - Single string parsing - List of strings and pandas Series parsing - Explicit format and already converted datetime objects - Mixed format support - Error handling (ValueError and errors='coerce') Formatted with black to satisfy CI linting. Co-authored-by: refraction-ray <35157286+refraction-ray@users.noreply.github.com> --- tests/test_cons.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/test_cons.py b/tests/test_cons.py index 9dec2fa..16a8e81 100644 --- a/tests/test_cons.py +++ b/tests/test_cons.py @@ -2,16 +2,19 @@ import pytest from xalpha.cons import pd_to_datetime + def test_pd_to_datetime_single_string(): res = pd_to_datetime("2023-01-01") assert isinstance(res, pd.Timestamp) assert res == pd.Timestamp("2023-01-01") + def test_pd_to_datetime_list(): res = pd_to_datetime(["2023-01-01", "2023-01-02"]) assert isinstance(res, pd.DatetimeIndex) assert res[0] == pd.Timestamp("2023-01-01") + def test_pd_to_datetime_series(): series = pd.Series(["2023-01-01", "2023-01-02"]) res = pd_to_datetime(series) @@ -19,27 +22,32 @@ def test_pd_to_datetime_series(): assert isinstance(res, pd.Series) assert res.iloc[0] == pd.Timestamp("2023-01-01") + def test_pd_to_datetime_with_format(): res = pd_to_datetime("20230101", format="%Y%m%d") assert res == pd.Timestamp("2023-01-01") + def test_pd_to_datetime_already_datetime(): dt = pd.Timestamp("2023-01-01") res = pd_to_datetime(dt) assert res == dt + def test_pd_to_datetime_mixed_format(): # This test verifies behavior for mixed formats, which pd_to_datetime handles res = pd_to_datetime(["2023-01-01", "2023/01/02"]) assert res[0] == pd.Timestamp("2023-01-01") assert res[1] == pd.Timestamp("2023-01-02") + def test_pd_to_datetime_invalid_string(): # Verify that invalid strings raise a ValueError by default (standard pandas behavior) with pytest.raises(ValueError): pd_to_datetime("not-a-date") + def test_pd_to_datetime_errors_coerce(): # Verify that errors='coerce' works as expected - res = pd_to_datetime("not-a-date", errors='coerce') + res = pd_to_datetime("not-a-date", errors="coerce") assert pd.isna(res)