#![allow(clippy::all)]
use ahash::AHashSet;
use ragc_core::determine_splitters;
fn print_splitters(splitters: &AHashSet<u64>, max_count: usize) {
println!("Count: {}", splitters.len());
print!("Splitters: ");
let mut sorted: Vec<u64> = splitters.iter().copied().collect();
sorted.sort_unstable();
for (i, &s) in sorted.iter().enumerate().take(max_count) {
if i > 0 {
print!(" ");
}
print!("{s:x}");
}
println!();
}
fn main() {
println!("# Test 1: Simple case (AAAC, GGGT)");
{
let contigs = vec![
vec![0, 0, 0, 1], vec![2, 2, 2, 3], ];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 3, 100);
print_splitters(&splitters, 50);
}
println!("\n# Test 2: No singletons (identical contigs)");
{
let contigs = vec![vec![0, 1, 2, 3], vec![0, 1, 2, 3]];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 3, 100);
print_splitters(&splitters, 50);
}
println!("\n# Test 3: All unique (AAAA, CCCC)");
{
let contigs = vec![
vec![0, 0, 0, 0], vec![1, 1, 1, 1], ];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 3, 100);
print_splitters(&splitters, 50);
}
println!("\n# Test 4: Mixed scenario");
{
let contigs = vec![
vec![0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], vec![0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], ];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 3, 100);
print_splitters(&splitters, 50);
}
println!("\n# Test 5: Longer sequences");
{
let contigs = vec![
vec![0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], vec![3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0], vec![0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1], ];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 5, 100);
print_splitters(&splitters, 100);
}
println!("\n# Test 6: Single contig");
{
let contigs = vec![
vec![0, 1, 2, 3, 1, 0, 3, 2, 0, 2, 1, 3], ];
let (splitters, _singletons, _duplicates) = determine_splitters(&contigs, 3, 100);
print_splitters(&splitters, 100);
}
}