bee_block/rand/
address.rs

1// Copyright 2020-2021 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::{
5    address::{Address, AliasAddress, Ed25519Address, NftAddress},
6    output::{AliasId, NftId},
7    rand::{bytes::rand_bytes_array, number::rand_number},
8};
9
10/// Generates a random Ed25519 address.
11pub fn rand_ed25519_address() -> Ed25519Address {
12    Ed25519Address::new(rand_bytes_array())
13}
14
15/// Generates a random alias address.
16pub fn rand_alias_address() -> AliasAddress {
17    AliasAddress::new(AliasId::from(rand_bytes_array()))
18}
19
20/// Generates a random NFT address.
21pub fn rand_nft_address() -> NftAddress {
22    NftAddress::new(NftId::from(rand_bytes_array()))
23}
24
25/// Generates a random address.
26pub fn rand_address() -> Address {
27    #[allow(clippy::modulo_one)]
28    match rand_number::<u64>() % 3 {
29        0 => rand_ed25519_address().into(),
30        1 => rand_alias_address().into(),
31        2 => rand_nft_address().into(),
32        _ => unreachable!(),
33    }
34}