cargo fmt hasn't been used in a while it seems.

This commit is contained in:
Lokathor
2020-01-19 13:02:54 -07:00
parent 11b8f629f2
commit 032ac155c9
8 changed files with 141 additions and 127 deletions
+48 -45
View File
@@ -1,61 +1,64 @@
use arbitrary::{Arbitrary, Unstructured};
use std::ops::{Range, RangeBounds, RangeFrom, RangeInclusive, RangeTo, RangeToInclusive, Bound};
use std::ops::{
Bound, Range, RangeBounds, RangeFrom, RangeInclusive, RangeTo,
RangeToInclusive,
};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum ArbRange<T> {
Range(Range<T>),
RangeFrom(RangeFrom<T>),
RangeInclusive(RangeInclusive<T>),
RangeTo(RangeTo<T>),
RangeToInclusive(RangeToInclusive<T>),
Range(Range<T>),
RangeFrom(RangeFrom<T>),
RangeInclusive(RangeInclusive<T>),
RangeTo(RangeTo<T>),
RangeToInclusive(RangeToInclusive<T>),
}
impl<T> RangeBounds<T> for ArbRange<T> {
fn start_bound(&self) -> Bound<&T> {
match self {
ArbRange::Range(range) => range.start_bound(),
ArbRange::RangeFrom(range) => range.start_bound(),
ArbRange::RangeInclusive(range) => range.start_bound(),
ArbRange::RangeTo(range) => range.start_bound(),
ArbRange::RangeToInclusive(range) => range.start_bound(),
}
fn start_bound(&self) -> Bound<&T> {
match self {
ArbRange::Range(range) => range.start_bound(),
ArbRange::RangeFrom(range) => range.start_bound(),
ArbRange::RangeInclusive(range) => range.start_bound(),
ArbRange::RangeTo(range) => range.start_bound(),
ArbRange::RangeToInclusive(range) => range.start_bound(),
}
}
fn end_bound(&self) -> Bound<&T> {
match self {
ArbRange::Range(range) => range.end_bound(),
ArbRange::RangeFrom(range) => range.end_bound(),
ArbRange::RangeInclusive(range) => range.end_bound(),
ArbRange::RangeTo(range) => range.end_bound(),
ArbRange::RangeToInclusive(range) => range.end_bound(),
}
fn end_bound(&self) -> Bound<&T> {
match self {
ArbRange::Range(range) => range.end_bound(),
ArbRange::RangeFrom(range) => range.end_bound(),
ArbRange::RangeInclusive(range) => range.end_bound(),
ArbRange::RangeTo(range) => range.end_bound(),
ArbRange::RangeToInclusive(range) => range.end_bound(),
}
}
fn contains<U: ?Sized>(&self, item: &U) -> bool
where
T: PartialOrd<U>,
U: PartialOrd<T>,
{
match self {
ArbRange::Range(range) => range.contains(item),
ArbRange::RangeFrom(range) => range.contains(item),
ArbRange::RangeInclusive(range) => range.contains(item),
ArbRange::RangeTo(range) => range.contains(item),
ArbRange::RangeToInclusive(range) => range.contains(item),
}
fn contains<U: ?Sized>(&self, item: &U) -> bool
where
T: PartialOrd<U>,
U: PartialOrd<T>,
{
match self {
ArbRange::Range(range) => range.contains(item),
ArbRange::RangeFrom(range) => range.contains(item),
ArbRange::RangeInclusive(range) => range.contains(item),
ArbRange::RangeTo(range) => range.contains(item),
ArbRange::RangeToInclusive(range) => range.contains(item),
}
}
}
impl<T: Arbitrary> Arbitrary for ArbRange<T> {
fn arbitrary<U: Unstructured + ?Sized>(u: &mut U) -> Result<Self, U::Error> {
let variant = u8::arbitrary(u)? % 5;
Ok(match variant {
0 => ArbRange::Range(T::arbitrary(u)?..T::arbitrary(u)?),
1 => ArbRange::RangeFrom(T::arbitrary(u)?..),
2 => ArbRange::RangeInclusive(T::arbitrary(u)?..=T::arbitrary(u)?),
3 => ArbRange::RangeTo(..T::arbitrary(u)?),
4 => ArbRange::RangeToInclusive(..=T::arbitrary(u)?),
_ => unreachable!(),
})
}
fn arbitrary<U: Unstructured + ?Sized>(u: &mut U) -> Result<Self, U::Error> {
let variant = u8::arbitrary(u)? % 5;
Ok(match variant {
0 => ArbRange::Range(T::arbitrary(u)?..T::arbitrary(u)?),
1 => ArbRange::RangeFrom(T::arbitrary(u)?..),
2 => ArbRange::RangeInclusive(T::arbitrary(u)?..=T::arbitrary(u)?),
3 => ArbRange::RangeTo(..T::arbitrary(u)?),
4 => ArbRange::RangeToInclusive(..=T::arbitrary(u)?),
_ => unreachable!(),
})
}
}
+25 -19
View File
@@ -1,7 +1,11 @@
use derive_arbitrary::Arbitrary;
use arbitrary_model_tests::arbitrary_stateful_operations;
use derive_arbitrary::Arbitrary;
use honggfuzz::fuzz;
use std::{fmt::Debug, iter::FromIterator, ops::{RangeBounds, Bound}};
use std::{
fmt::Debug,
iter::FromIterator,
ops::{Bound, RangeBounds},
};
use tinyvec::ArrayVec;
use tinyvec_fuzz::ArbRange;
@@ -83,29 +87,31 @@ arbitrary_stateful_operations! {
const MAX_RING_SIZE: usize = 16_384;
fn fuzz_cycle(data: &[u8]) -> Result<(), ()> {
use arbitrary::{Arbitrary, FiniteBuffer};
use arbitrary::{Arbitrary, FiniteBuffer};
let mut ring = FiniteBuffer::new(&data, MAX_RING_SIZE).map_err(|_| ())?;
let mut ring = FiniteBuffer::new(&data, MAX_RING_SIZE).map_err(|_| ())?;
let mut model = Vec::<u16>::default();
let mut tested: ArrayVec<[u16; 32]> = ArrayVec::new();
let mut model = Vec::<u16>::default();
let mut tested: ArrayVec<[u16; 32]> = ArrayVec::new();
let mut _op_trace = String::new();
while let Ok(op) = <op::Op<u16, ArbRange<usize>> as Arbitrary>::arbitrary(&mut ring) {
#[cfg(fuzzing_debug)]
_op_trace.push_str(&format!("{}\n", op.to_string()));
op.execute_and_compare(&mut model, &mut tested);
}
let mut _op_trace = String::new();
while let Ok(op) =
<op::Op<u16, ArbRange<usize>> as Arbitrary>::arbitrary(&mut ring)
{
#[cfg(fuzzing_debug)]
_op_trace.push_str(&format!("{}\n", op.to_string()));
op.execute_and_compare(&mut model, &mut tested);
}
Ok(())
Ok(())
}
fn main() -> Result<(), ()> {
better_panic::install();
better_panic::install();
loop {
fuzz!(|data: &[u8]| {
let _ = fuzz_cycle(data);
});
}
loop {
fuzz!(|data: &[u8]| {
let _ = fuzz_cycle(data);
});
}
}
+25 -19
View File
@@ -1,7 +1,11 @@
use derive_arbitrary::Arbitrary;
use arbitrary_model_tests::arbitrary_stateful_operations;
use derive_arbitrary::Arbitrary;
use honggfuzz::fuzz;
use std::{fmt::Debug, iter::FromIterator, ops::{RangeBounds, Bound}};
use std::{
fmt::Debug,
iter::FromIterator,
ops::{Bound, RangeBounds},
};
use tinyvec::TinyVec;
use tinyvec_fuzz::ArbRange;
@@ -81,29 +85,31 @@ arbitrary_stateful_operations! {
const MAX_RING_SIZE: usize = 16_384;
fn fuzz_cycle(data: &[u8]) -> Result<(), ()> {
use arbitrary::{Arbitrary, FiniteBuffer};
use arbitrary::{Arbitrary, FiniteBuffer};
let mut ring = FiniteBuffer::new(&data, MAX_RING_SIZE).map_err(|_| ())?;
let mut ring = FiniteBuffer::new(&data, MAX_RING_SIZE).map_err(|_| ())?;
let mut model = Vec::<u16>::default();
let mut tested: TinyVec<[u16; 32]> = TinyVec::new();
let mut model = Vec::<u16>::default();
let mut tested: TinyVec<[u16; 32]> = TinyVec::new();
let mut _op_trace = String::new();
while let Ok(op) = <op::Op<u16, ArbRange<usize>> as Arbitrary>::arbitrary(&mut ring) {
#[cfg(fuzzing_debug)]
_op_trace.push_str(&format!("{}\n", op.to_string()));
op.execute_and_compare(&mut model, &mut tested);
}
let mut _op_trace = String::new();
while let Ok(op) =
<op::Op<u16, ArbRange<usize>> as Arbitrary>::arbitrary(&mut ring)
{
#[cfg(fuzzing_debug)]
_op_trace.push_str(&format!("{}\n", op.to_string()));
op.execute_and_compare(&mut model, &mut tested);
}
Ok(())
Ok(())
}
fn main() -> Result<(), ()> {
better_panic::install();
better_panic::install();
loop {
fuzz!(|data: &[u8]| {
let _ = fuzz_cycle(data);
});
}
loop {
fuzz!(|data: &[u8]| {
let _ = fuzz_cycle(data);
});
}
}