#![no_main] use libfuzzer_sys::fuzz_target; use rangeset_fuzz::{SmallSet, assert_invariants}; use rangeset::*; fn expected_union(a: RangeSet, b: RangeSet) -> Vec { let mut expected_values = a.iter().chain(b.iter()).collect::>(); expected_values.sort(); expected_values.dedup(); expected_values } fuzz_target!(|r: (SmallSet, SmallSet)| { let r1: RangeSet = r.0.into(); let r2: RangeSet = r.1.into(); let expected_values = expected_union(r1.clone(), r2.clone()); let union = r2.union(&r1); let actual_values = union.iter().collect::>(); assert_eq!(expected_values, actual_values); assert_invariants(union); });