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