#![allow(clippy::unwrap_used, clippy::expect_used)]
use sqlite_core::{Database, Value};
const DELETED: &[u8] = include_bytes!("../../tests/data/deleted_places.db");
#[test]
fn carves_free_gap_on_allocated_leaf_page() {
let db = Database::open(DELETED.to_vec()).expect("open");
let page = db.raw_page(8).expect("page 8 in range");
let carved = db.carve_free_regions(&page, 6);
let rowids: Vec<i64> = carved.iter().map(|c| c.rowid).collect();
assert!(
rowids.contains(&237),
"must carve deleted row 237 from page 8's free gap; got {rowids:?}"
);
assert!(
carved.iter().all(|c| c.rowid > 200),
"carving free regions must not return any live (allocated, id<=200) row"
);
let r237 = carved.iter().find(|c| c.rowid == 237).unwrap();
assert_eq!(
r237.values.get(1),
Some(&Value::Text(
"https://site-237.example.com/path/page".into()
))
);
assert!(
r237.confidence <= 0.75,
"in-page recovery confidence must be discounted; got {}",
r237.confidence
);
}