"""策略2中证 A500 与沪深 300 双轴图测试。""" from datetime import date from strategy.a500_close_chart import ClosePoint from strategy.a500_hs300_close_chart import DEFAULT_OUTPUT_PATH, DualAxisSeries, _scale_points_by_ratio, align_points_by_date, build_dual_axis_svg_chart def test_5_1_align_points_by_common_date() -> None: """ 功能说明:验证策略2按共同交易日对齐两组收盘价。 参数说明:无。 返回值说明:无返回值。 注意事项:用例编号 5-1。 """ left = [ClosePoint(date(2024, 9, 23), 100), ClosePoint(date(2024, 9, 24), 101)] right = [ClosePoint(date(2024, 9, 24), 201), ClosePoint(date(2024, 9, 25), 202)] aligned_left, aligned_right = align_points_by_date(left, right) assert aligned_left == [ClosePoint(date(2024, 9, 24), 101)] assert aligned_right == [ClosePoint(date(2024, 9, 24), 201)] def test_5_2_build_dual_axis_svg_chart() -> None: """ 功能说明:验证策略2可生成包含双轴和两条折线的 SVG。 参数说明:无。 返回值说明:无返回值。 注意事项:用例编号 5-2。 """ left = DualAxisSeries( "中证 A500", "sh000510", "#2563eb", [ClosePoint(date(2024, 9, 23), 3700), ClosePoint(date(2024, 9, 24), 3710)], ) right = DualAxisSeries( "沪深 300", "sh000300", "#dc2626", [ClosePoint(date(2024, 9, 23), 3300), ClosePoint(date(2024, 9, 24), 3310)], ) svg = build_dual_axis_svg_chart(left, right, "中证 A500 与沪深 300 收盘价对比") assert svg.startswith(" None: """ 功能说明:验证策略2相同涨跌比例会映射到相同 Y 坐标。 参数说明:无。 返回值说明:无返回值。 注意事项:用例编号 5-3,两个指数起点不同但第二天都上涨 10%。 """ left = [ClosePoint(date(2024, 9, 23), 1000), ClosePoint(date(2024, 9, 24), 1100)] right = [ClosePoint(date(2024, 9, 23), 3000), ClosePoint(date(2024, 9, 24), 3300)] left_coordinates = _scale_points_by_ratio(left, 1000, 0, 0, 100, 100, 0, 0.1) right_coordinates = _scale_points_by_ratio(right, 3000, 0, 0, 100, 100, 0, 0.1) assert left_coordinates[0][1] == right_coordinates[0][1] assert left_coordinates[1][1] == right_coordinates[1][1] def test_5_4_default_output_path_uses_strategy_directory() -> None: """ 功能说明:验证策略2默认输出到同名子目录。 参数说明:无。 返回值说明:无返回值。 注意事项:用例编号 5-4。 """ assert DEFAULT_OUTPUT_PATH.as_posix() == "strategy/output/a500_hs300_close_chart/a500_hs300_close.svg"