3 use generate_random::GenerateRandom;
5 fn rng() -> impl rand::Rng {
7 rand_chacha::ChaCha8Rng::from(rand_chacha::ChaCha8Core::from_seed([37; 32]))
10 fn repeat<T>(count: usize, f: impl FnMut() -> T) -> Vec<T> {
11 std::iter::repeat_with(f).take(count).collect()
14 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
21 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
22 enum TestEnumUnnamed {
28 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
39 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
40 struct TestStructUnit;
42 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
43 struct TestStructUnnamed(u8, i32);
45 #[derive(GenerateRandom, PartialEq, Eq, Debug)]
46 struct TestStructNamed {
55 repeat(6, || TestEnumUnit::generate_random(&mut rng),),
68 fn test_enum_unnamed() {
71 repeat(6, || TestEnumUnnamed::generate_random(&mut rng),),
73 TestEnumUnnamed::Right(false),
74 TestEnumUnnamed::Left(142),
75 TestEnumUnnamed::Right(false),
76 TestEnumUnnamed::Right(true),
77 TestEnumUnnamed::Right(false),
78 TestEnumUnnamed::Left(19),
84 fn test_enum_named() {
87 repeat(6, || TestEnumNamed::generate_random(&mut rng),),
89 TestEnumNamed::Right { y: false },
90 TestEnumNamed::Left { x: 142 },
91 TestEnumNamed::Right { y: false },
92 TestEnumNamed::Right { y: true },
93 TestEnumNamed::Right { y: false },
94 TestEnumNamed::Left { x: 19 },
100 fn test_struct_unit() {
102 assert_eq!(TestStructUnit::generate_random(&mut rng), TestStructUnit);
106 fn test_struct_unnamed() {
109 TestStructUnnamed::generate_random(&mut rng),
110 TestStructUnnamed(55, -896102575)
115 fn test_struct_named() {
118 TestStructNamed::generate_random(&mut rng),