use std::collections::HashMap;
#[cfg(feature = "wasm")]
use tinyrand::{Rand, RandRange, StdRand};
#[cfg(not(feature = "wasm"))]
use rand::prelude::*;
#[cfg(not(feature = "wasm"))]
use rand_chacha::ChaCha8Rng;
#[cfg(not(feature = "wasm"))]
pub fn generate_random_kv_database(num_kv_pairs: usize) -> HashMap<Vec<u8>, Vec<u8>> {
const MIN_KEY_BYTE_LEN: usize = 16;
const MAX_KEY_BYTE_LEN: usize = 32;
const MIN_VALUE_BYTE_LEN: usize = 1;
const MAX_VALUE_BYTE_LEN: usize = 512;
let mut kv = HashMap::with_capacity(num_kv_pairs);
let mut rng = ChaCha8Rng::from_os_rng();
for _ in 0..num_kv_pairs {
let key_byte_len = rng.random_range(MIN_KEY_BYTE_LEN..=MAX_KEY_BYTE_LEN);
let value_byte_len = rng.random_range(MIN_VALUE_BYTE_LEN..=MAX_VALUE_BYTE_LEN);
let mut key = vec![0u8; key_byte_len];
let mut value = vec![0u8; value_byte_len];
rng.fill_bytes(&mut key);
rng.fill_bytes(&mut value);
kv.insert(key, value);
}
kv
}
#[cfg(feature = "wasm")]
pub fn generate_random_kv_database(num_kv_pairs: usize) -> HashMap<Vec<u8>, Vec<u8>> {
const MIN_KEY_BYTE_LEN: usize = 16;
const MAX_KEY_BYTE_LEN: usize = 32;
const MIN_VALUE_BYTE_LEN: usize = 1;
const MAX_VALUE_BYTE_LEN: usize = 512;
let mut kv = HashMap::with_capacity(num_kv_pairs);
let mut rng = StdRand::default();
for _ in 0..num_kv_pairs {
let key_byte_len = rng.next_range(MIN_KEY_BYTE_LEN..(MAX_KEY_BYTE_LEN + 1));
let value_byte_len = rng.next_range(MIN_VALUE_BYTE_LEN..(MAX_VALUE_BYTE_LEN + 1));
let key = (0..key_byte_len).map(|_| rng.next_u32() as u8).collect::<Vec<u8>>();
let value = (0..value_byte_len).map(|_| rng.next_u32() as u8).collect::<Vec<u8>>();
kv.insert(key, value);
}
kv
}