use crate::partition::graph::csr::{CsrGraph, build_csr};
use crate::partition::graph::initial::edge_cut;
#[test]
fn a_one_edge_difference_separates_two_partitions() {
let graph = build_csr(4, &[(0, 1), (0, 2), (0, 3), (1, 2)]);
assert_eq!(edge_cut(&graph, &[0, 1, 1, 1]), 3);
assert_eq!(edge_cut(&graph, &[1, 0, 0, 1]), 2);
}
#[test]
fn a_cut_edge_contributes_its_whole_weight() {
let graph = CsrGraph {
offsets: vec![0, 1, 2],
neighbors: vec![1, 0],
vertex_weights: vec![1, 1],
edge_weights: vec![5, 5],
};
assert_eq!(edge_cut(&graph, &[0, 1]), 5);
assert_eq!(edge_cut(&graph, &[0, 0]), 0);
}