1use crate::{
5 parent::Parents,
6 rand::{bytes::rand_bytes_array, number::rand_number, parents::rand_parents, payload::rand_payload_for_block},
7 Block, BlockBuilder, BlockId,
8};
9
10pub fn rand_block_id() -> BlockId {
12 BlockId::new(rand_bytes_array())
13}
14
15pub fn rand_block_ids(len: usize) -> Vec<BlockId> {
17 let mut parents = (0..len).map(|_| rand_block_id()).collect::<Vec<_>>();
18 parents.sort_by(|a, b| a.as_ref().cmp(b.as_ref()));
19 parents
20}
21
22pub fn rand_block_with_parents(parents: Parents, min_pow_score: u32) -> Block {
24 BlockBuilder::<u64>::new(parents)
25 .with_payload(rand_payload_for_block())
26 .with_nonce_provider(rand_number())
27 .finish(min_pow_score)
28 .unwrap()
29}
30
31pub fn rand_block(min_pow_score: u32) -> Block {
33 rand_block_with_parents(rand_parents(), min_pow_score)
34}