/src/itoa/fuzz/fuzz_targets/fuzz_itoa.rs
Line | Count | Source (jump to first uncovered line) |
1 | | #![no_main] |
2 | | |
3 | | use arbitrary::Arbitrary; |
4 | | use libfuzzer_sys::fuzz_target; |
5 | | use std::mem; |
6 | | |
7 | 3.57k | #[derive(Arbitrary, Debug)] Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary::{closure#0} Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary::{closure#1} Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary::{closure#2} Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary_take_rest::{closure#0} <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary_take_rest::{closure#1} Line | Count | Source | 7 | 1.78k | #[derive(Arbitrary, Debug)] |
Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary_take_rest::{closure#2} <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::try_size_hint::{closure#0} Line | Count | Source | 7 | 1.79k | #[derive(Arbitrary, Debug)] |
|
8 | | enum IntegerInput { |
9 | | I8(i8), |
10 | | U8(u8), |
11 | | I16(i16), |
12 | | U16(u16), |
13 | | I32(i32), |
14 | | U32(u32), |
15 | | I64(i64), |
16 | | U64(u64), |
17 | | I128(i128), |
18 | | U128(u128), |
19 | | Isize(isize), |
20 | | Usize(usize), |
21 | | } |
22 | | |
23 | | macro_rules! test_itoa { |
24 | | ($val:expr) => { |
25 | | match $val { |
26 | | val => { |
27 | | let mut buffer = itoa::Buffer::new(); |
28 | | let string = buffer.format(val); |
29 | | assert!(string.len() <= mem::size_of::<itoa::Buffer>()); |
30 | | assert_eq!(val, string.parse().unwrap()); |
31 | | } |
32 | | } |
33 | | }; |
34 | | } |
35 | | |
36 | | fuzz_target!(|input: IntegerInput| { |
37 | | match input { |
38 | | IntegerInput::I8(val) => test_itoa!(val), |
39 | | IntegerInput::U8(val) => test_itoa!(val), |
40 | | IntegerInput::I16(val) => test_itoa!(val), |
41 | | IntegerInput::U16(val) => test_itoa!(val), |
42 | | IntegerInput::I32(val) => test_itoa!(val), |
43 | | IntegerInput::U32(val) => test_itoa!(val), |
44 | | IntegerInput::I64(val) => test_itoa!(val), |
45 | | IntegerInput::U64(val) => test_itoa!(val), |
46 | | IntegerInput::I128(val) => test_itoa!(val), |
47 | | IntegerInput::U128(val) => test_itoa!(val), |
48 | | IntegerInput::Isize(val) => test_itoa!(val), |
49 | | IntegerInput::Usize(val) => test_itoa!(val), |
50 | | } |
51 | | }); |