use std::sync::atomic::{AtomicU64, Ordering};

use tici_grpc::{FragMeta, FragProperty};
use tici_shard::test_utils::test_mock_frag_storage_refs_total;

static FRAG_ID_COUNTER: AtomicU64 = AtomicU64::new(0);

pub fn make_sfsc(
    min_handle: &[u8],
    mid_handle: &[u8],
    max_handle: &[u8],
    size: u64,
    count: u64,
) -> FragMeta {
    let frag_id = FRAG_ID_COUNTER.fetch_add(1, Ordering::SeqCst);
    FragMeta::new(
        0,
        format!("test_frag_{frag_id}/f_1"),
        FragProperty {
            min_handle: min_handle.to_vec(),
            split_handles: vec![mid_handle.to_vec()],
            max_handle: max_handle.to_vec(),
            size,
            count,
            delete_count: 0,
        },
        test_mock_frag_storage_refs_total(size),
        1,
    )
    .unwrap()
}

pub fn make_sf(min_handle: &[u8], max_handle: &[u8]) -> FragMeta {
    make_sfsc(min_handle, min_handle, max_handle, 1, 0)
}
