mod common;
#[test]
fn all_119_vectors_match() {
let cases = common::cases();
assert_eq!(cases.len(), 119);
for case in &cases {
common::assert_case(case);
}
}
#[test]
fn defect_d1_standalone_marker_does_not_capture_text() {
common::assert_case(&common::find("bpe-standalone-g"));
}
#[test]
fn defect_d2_control_tokens_never_align_by_shared_letters() {
for id in ["wp-mask", "wp-cls-steal-l", "wp-sep-steal-s"] {
common::assert_case(&common::find(id));
}
}
#[test]
fn defect_d3_unknown_token_has_no_counterpart() {
common::assert_case(&common::find("unk-luck"));
}
#[test]
fn defect_d4_final_sigma_matches_sigma() {
common::assert_case(&common::find("case-sigma-charmap"));
}
#[test]
fn defect_d5_wordpiece_collision_is_explicit() {
common::assert_case(&common::find("wp-collision"));
}
#[test]
fn defect_d6_orphan_marks_do_not_block_base_matches() {
for id in ["wp-uncased-accent", "cm-eacute-strip"] {
common::assert_case(&common::find(id));
}
}
#[test]
fn api_parity_group_has_18_exact_cases() {
let cases = common::cases();
let parity: Vec<_> = cases
.iter()
.filter(|case| case.group == "incumbent-parity")
.collect();
assert_eq!(parity.len(), 18);
for case in parity {
assert!(case.alternatives.is_empty());
common::assert_case(case);
}
}