Skip to content

Commit 402da10

Browse files
committed
fix(alloc): pack_fragments 截断断言与部分截断语义对齐(v0.18.2 遗留)
1 parent 970bea5 commit 402da10

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

‎app/src-tauri/src/budget_allocator_tests.rs‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,23 @@ fn truncate_respects_char_budget() {
3636

3737
#[test]
3838
fn pack_fragments_orders_by_score_and_bounds_total() {
39+
// 片段须长于预算才触发"部分截断+诚实信号"(pack 语义:按相关性降序逐项
40+
// 塞入,超剩余则截断该段尾部并置 truncated——2026-09-03 全量复现原断言用
41+
// 短片断在 20 字符预算内可全收(正文 8 字 + 换行符计入用量仍 <20),断言
42+
// 必假;按 v0.18.2 批次遗留修正:加长高相关段保证部分截断必触发)
3943
let frags = vec![
4044
("低".to_string(), 0.2),
41-
("高相关片段".to_string(), 0.9),
45+
("高相关片段一二三四五六七八九十一二三四五六七八九十".to_string(), 0.9),
4246
("中".to_string(), 0.5),
4347
];
4448
let (out, truncated) = pack_fragments(&frags, 20);
4549
assert!(out.contains("高相关片段"), "高相关优先入包: {}", out);
46-
assert!(out.find("高相关片段").unwrap() < out.find("中").unwrap());
4750
assert!(truncated, "预算 20 字符必截断——诚实信号");
51+
assert!(!out.contains("中"), "预算耗尽后低相关段不入包(余量 0 即停): {}", out);
4852
let (all, t2) = pack_fragments(&frags, 10_000);
4953
assert!(all.contains("低"));
54+
assert!(all.find("高相关片段").unwrap() < all.find("中").unwrap());
55+
assert!(all.find("中").unwrap() < all.find("低").unwrap());
5056
assert!(!t2);
5157
}
5258

0 commit comments

Comments
 (0)