use fountain_engine::traits::LDPC;
pub fn cross_validate_ldpc<T: LDPC>(ldpc: &T, l: usize) {
for i in 0..l {
let adj_checks = ldpc.active_row(i);
for j in adj_checks {
let adj_vars = ldpc.active_column(j);
assert!(
adj_vars.contains(&i),
"LDPC validation failed: `active_row`({i}) returned column {j}, but `active_column`({j}) does not contain row {i}"
);
}
}
for i in 0..l {
let adj_checks = ldpc.inactive_row(i);
for j in adj_checks {
let adj_vars = ldpc.inactive_column(j);
assert!(
adj_vars.contains(&i),
"LDPC validation failed: `inactive_row`({i}) returned column {j}, but `inactive_column`({j}) does not contain row {i}"
);
}
}
}