Coverage Report

Created: 2025-08-26 06:03

/src/itoa/fuzz/fuzz_targets/fuzz_itoa.rs
Line
Count
Source
1
#![no_main]
2
3
use arbitrary::Arbitrary;
4
use libfuzzer_sys::fuzz_target;
5
use std::mem;
6
7
3.68k
#[derive(Arbitrary, Debug)]
Unexecuted instantiation: <fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary::{closure#0}
<fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::arbitrary_take_rest::{closure#0}
Line
Count
Source
7
1.83k
#[derive(Arbitrary, Debug)]
<fuzz_itoa::IntegerInput as arbitrary::Arbitrary>::try_size_hint::{closure#0}
Line
Count
Source
7
1.85k
#[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
});