forked from landaire/lain
-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
Description
Making a separate issue because #1 is an issue in initialization.
When mutating, the constraints aren't applied. An issue and PR in the og repo addresses this for the ignore constraint.
landaire#2
landaire#3
use lain::prelude::*;
use lain::rand;
#[derive(Debug, Mutatable, NewFuzzed, BinarySerialize)]
struct MyStruct {
#[lain(min = 5, max = 7)]
field_1: u32,
#[lain(min = 5, max = 7)]
field_2: Vec<u8>,
#[lain(ignore)]
ignored_field: u32,
}
fn main() {
let mut mutator = Mutator::new(rand::thread_rng());
let mut instance = MyStruct::new_fuzzed(&mut mutator, None);
for _ in 0..1000 {
instance.mutate(&mut mutator, None);
assert!((5..7).contains(&instance.field_1), "Got invalid field_1 value {}", instance.field_1);
assert!((5..7).contains(&instance.field_2.len()), "Got invalid field_2 length {}", instance.field_2.len());
assert_eq!(instance.ignored_field, u32::default(), "Got invalid ignored_field value {}", instance.ignored_field);
}
}Metadata
Metadata
Assignees
Labels
No labels