ruvector_mincut/instance/
mod.rs

1//! Instance module for bounded-range minimum cut
2//!
3//! This module provides the core abstractions for maintaining minimum proper cuts
4//! over dynamic graphs with bounded cut values.
5
6pub mod traits;
7pub mod witness;
8pub mod stub;
9pub mod bounded;
10
11pub use traits::{ProperCutInstance, InstanceResult};
12pub use witness::{WitnessHandle, ImplicitWitness, Witness};
13pub use stub::StubInstance;
14pub use bounded::BoundedInstance;
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19    use roaring::RoaringBitmap;
20
21    #[test]
22    fn test_module_exports() {
23        let witness = WitnessHandle::new(0, RoaringBitmap::from_iter([0, 1]), 2);
24        assert_eq!(witness.seed(), 0);
25
26        let result = InstanceResult::ValueInRange {
27            value: 2,
28            witness: witness.clone(),
29        };
30        assert!(result.is_in_range());
31    }
32
33    #[test]
34    fn test_witness_trait_object() {
35        let witness = WitnessHandle::new(5, RoaringBitmap::from_iter([5, 6, 7]), 4);
36        let trait_obj: &dyn Witness = &witness;
37
38        assert_eq!(trait_obj.seed(), 5);
39        assert_eq!(trait_obj.cardinality(), 3);
40        assert!(trait_obj.contains(5));
41        assert!(!trait_obj.contains(10));
42    }
43}