ruvector_mincut/instance/
mod.rs1pub 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}