From c32807db1db6bda379cfbe64a25f87992493814d Mon Sep 17 00:00:00 2001 From: boris Date: Fri, 11 Sep 2026 09:11:28 +0800 Subject: [PATCH] test: distinguish next-open one-yuan execution from later close classification --- crates/fidc-core/src/engine.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/crates/fidc-core/src/engine.rs b/crates/fidc-core/src/engine.rs index 957364d..e65d0c5 100644 --- a/crates/fidc-core/src/engine.rs +++ b/crates/fidc-core/src/engine.rs @@ -6699,17 +6699,33 @@ mod tests { } #[test] - fn next_bar_open_execution_risk_rejects_execution_day_one_yuan_state() { + fn next_bar_open_execution_risk_rejects_one_yuan_open_despite_higher_close() { let first = d(2025, 1, 2); let second = d(2025, 1, 3); let result = run_scheduled_next_open_with_dataset(dataset_with( market(first, 10.0, 11.5), - market(second, 12.0, 99.0), + market(second, 0.9, 1.2), + candidate(first), + candidate(second), + )); + + assert_next_open_canceled_with_reason(&result, "one_yuan"); + } + + #[test] + fn next_bar_open_execution_risk_ignores_later_one_yuan_close() { + let first = d(2025, 1, 2); + let second = d(2025, 1, 3); + let result = run_scheduled_next_open_with_dataset(dataset_with( + market(first, 10.0, 11.5), + market(second, 1.2, 0.9), candidate(first), one_yuan_candidate(second), )); - assert_next_open_canceled_with_reason(&result, "one_yuan"); + assert_eq!(result.fills.len(), 1); + assert_eq!(result.fills[0].date, second); + assert_eq!(result.fills[0].price, 1.2); } #[test]