# -*- coding: utf-8 -*- """TDD for dbbardata daily datetime normalizer (dbbardata 双行根治方案A).""" import pytest from scripts.data_platform.dbbardata_utils import normalize_daily_dt @pytest.mark.parametrize("s,expected", [ ("2026-07-20", "2026-07-20"), ("2010-01-04", "2010-01-04"), ]) def test_pure_date_noop(s, expected): # 纯日期应原样返回 assert normalize_daily_dt(s) == expected @pytest.mark.parametrize("s", [ "2026-07-20 00:00:00", "2026-07-20 00:00:00.000000", ]) def test_truncate_midnight(s): # 带时间(00:00:00 历史迁移路径) 截断为纯日期 assert normalize_daily_dt(s) == "2026-07-20" @pytest.mark.parametrize("s", [ "2026-07-20 15:00:00", "2026-07-20 09:30:01", ]) def test_truncate_real_time(s): # 带真实时分(异常情况) 也截断为纯日期 — 日线无时分语义 assert normalize_daily_dt(s) == "2026-07-20" def test_none_safe(): # None 不应崩溃 — 返回 None 保留语义 assert normalize_daily_dt(None) is None def test_empty_string_safe(): assert normalize_daily_dt("") == "" def test_short_string_safe(): # 短于 10 字符的异常输入不崩溃,返回本身(取前 10) assert normalize_daily_dt("2026") == "2026"