added first draft for lib-crates for test_random and test_random_derive (lighthouse-246)
This commit is contained in:
parent
c040ed7b11
commit
5f3ba42b97
@ -15,6 +15,8 @@ members = [
|
||||
"eth2/utils/ssz_derive",
|
||||
"eth2/utils/swap_or_not_shuffle",
|
||||
"eth2/utils/fisher_yates_shuffle",
|
||||
"eth2/utils/test_random",
|
||||
"eth2/utils/test_random_derive",
|
||||
"beacon_node",
|
||||
"beacon_node/db",
|
||||
"beacon_node/beacon_chain",
|
||||
|
8
eth2/utils/test_random/Cargo.toml
Normal file
8
eth2/utils/test_random/Cargo.toml
Normal file
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "test_random"
|
||||
version = "0.1.0"
|
||||
authors = ["thojest <thojest@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
rand = "0.5.5"
|
39
eth2/utils/test_random/src/lib.rs
Normal file
39
eth2/utils/test_random/src/lib.rs
Normal file
@ -0,0 +1,39 @@
|
||||
use rand::RngCore;
|
||||
|
||||
pub trait TestRandom<T>
|
||||
where
|
||||
T: RngCore,
|
||||
{
|
||||
fn random_for_test(rng: &mut T) -> Self;
|
||||
}
|
||||
|
||||
impl<T: RngCore> TestRandom<T> for u64 {
|
||||
fn random_for_test(rng: &mut T) -> Self {
|
||||
rng.next_u64()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: RngCore> TestRandom<T> for u32 {
|
||||
fn random_for_test(rng: &mut T) -> Self {
|
||||
rng.next_u32()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: RngCore> TestRandom<T> for usize {
|
||||
fn random_for_test(rng: &mut T) -> Self {
|
||||
rng.next_u32() as usize
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: RngCore, U> TestRandom<T> for Vec<U>
|
||||
where
|
||||
U: TestRandom<T>,
|
||||
{
|
||||
fn random_for_test(rng: &mut T) -> Self {
|
||||
vec![
|
||||
<U>::random_for_test(rng),
|
||||
<U>::random_for_test(rng),
|
||||
<U>::random_for_test(rng),
|
||||
]
|
||||
}
|
||||
}
|
15
eth2/utils/test_random_derive/Cargo.toml
Normal file
15
eth2/utils/test_random_derive/Cargo.toml
Normal file
@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "test_random_derive"
|
||||
version = "0.1.0"
|
||||
authors = ["thojest <thojest@gmail.com>"]
|
||||
edition = "2018"
|
||||
description = "Procedural derive macros for implementation of TestRandom trait"
|
||||
|
||||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
syn = "0.15"
|
||||
quote = "0.6"
|
||||
test_random = {path = "../test_random"}
|
||||
|
15
eth2/utils/test_random_derive/src/lib.rs
Normal file
15
eth2/utils/test_random_derive/src/lib.rs
Normal file
@ -0,0 +1,15 @@
|
||||
extern crate proc_macro;
|
||||
|
||||
use crate::proc_macro::TokenStream;
|
||||
use quote::quote;
|
||||
use syn;
|
||||
use syn::DeriveInput;
|
||||
|
||||
#[proc_macro_derive(TestRandom)]
|
||||
pub fn test_random_derive(input: TokenStream) -> TokenStream {
|
||||
let ast = syn::parse(input).unwrap();
|
||||
|
||||
impl_test_random(&ast)
|
||||
}
|
||||
|
||||
fn impl_test_random(ast: &DeriveInput) -> TokenStream {}
|
Loading…
Reference in New Issue
Block a user