proptest/arbitrary/_alloc/
str.rs1use crate::std_facade::Vec;
13use core::iter::repeat;
14use core::str::{from_utf8, ParseBoolError, Utf8Error};
15
16use crate::arbitrary::*;
17use crate::strategy::statics::static_map;
18use crate::strategy::*;
19
20arbitrary!(ParseBoolError; "".parse::<bool>().unwrap_err());
21
22type ELSeq = WA<Just<&'static [u8]>>;
23type ELSeqs = TupleUnion<(ELSeq, ELSeq, ELSeq, ELSeq)>;
24
25fn gen_el_seqs() -> ELSeqs {
26 prop_oneof![
27 Just(&[0xC2]), Just(&[0x80]), Just(&[0xE0, 0xA0, 0x00]), Just(&[0xF0, 0x90, 0x80, 0x00]) ]
32}
33
34arbitrary!(Utf8Error, SFnPtrMap<(StrategyFor<u16>, ELSeqs), Utf8Error>;
35 static_map((any::<u16>(), gen_el_seqs()), |(vut, elseq)| {
36 let v = repeat(b'_').take(vut as usize)
37 .chain(elseq.iter().cloned())
38 .collect::<Vec<u8>>();
39 from_utf8(&v).unwrap_err()
40 })
41);
42
43#[cfg(test)]
44mod test {
45 no_panic_test!(
46 parse_bool_errror => ParseBoolError,
47 utf8_error => Utf8Error
48 );
49}