#![allow(clippy::unwrap_used, clippy::expect_used)]
use sqlite_core::{Database, Value};
use sqlite_forensic::carve_all_deleted_records;
const DB: &[u8] = include_bytes!("../../tests/data/dedup_cross_table/cross_table_identity.db");
fn count_with_tail(recovered: &[sqlite_forensic::CarvedRecord], tail: &str) -> usize {
recovered
.iter()
.filter(|r| matches!(r.values.last(), Some(Value::Text(v)) if v == tail))
.count()
}
#[test]
fn cross_table_identical_deleted_rows_are_not_collapsed() {
let db = Database::open(DB.to_vec()).expect("fixture opens");
let recovered = carve_all_deleted_records(&db);
assert_eq!(
count_with_tail(&recovered, "DUP-1"),
2,
"(1,'DUP-1') deleted from both tables a and b must be recovered twice"
);
assert_eq!(
count_with_tail(&recovered, "DUP-2"),
2,
"(2,'DUP-2') deleted from both tables a and b must be recovered twice"
);
}