()
| 66 | |
| 67 | impl Inputs { |
| 68 | fn generate() -> impl Strategy<Value = Inputs> { |
| 69 | // Open + fill log. |
| 70 | let log = mk_log(); |
| 71 | // Obtain segment offsets. |
| 72 | let segment_offsets = log.repo.existing_offsets().unwrap(); |
| 73 | ( |
| 74 | // Select a random segment. |
| 75 | select(segment_offsets) |
| 76 | // Open the segment at that offset, |
| 77 | // and generate a byte position where we want a bit to be |
| 78 | // flipped. |
| 79 | .prop_flat_map(move |segment_offset| { |
| 80 | let segment = log.repo.open_segment_writer(segment_offset).unwrap(); |
| 81 | let byte_pos = byte_position(segment.len()); |
| 82 | (Just(log.clone()), Just(segment), Just(segment_offset), byte_pos) |
| 83 | }), |
| 84 | // A byte to XOR with the byte at `byte_pos` |
| 85 | any::<NonZeroU8>(), |
| 86 | ) |
| 87 | .prop_map(|((log, segment, segment_offset, byte_pos), bit_mask)| Self { |
| 88 | log, |
| 89 | segment, |
| 90 | byte_pos, |
| 91 | bit_mask: bit_mask.get(), |
| 92 | |
| 93 | segment_offset, |
| 94 | }) |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | /// Select a random position of a byte within a segment. |
nothing calls this directly
no test coverage detected