From 3265cb676c5c87fd624f59aaf3ca89d947df8cda Mon Sep 17 00:00:00 2001 From: pommicket Date: Wed, 14 Dec 2022 12:45:48 -0500 Subject: GenRandom --- gen_random_test/Cargo.lock | 128 +++++++++++++++++++++++++++++++++++++++++++++ gen_random_test/Cargo.toml | 11 ++++ gen_random_test/src/lib.rs | 63 ++++++++++++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 gen_random_test/Cargo.lock create mode 100644 gen_random_test/Cargo.toml create mode 100644 gen_random_test/src/lib.rs (limited to 'gen_random_test') diff --git a/gen_random_test/Cargo.lock b/gen_random_test/Cargo.lock new file mode 100644 index 0000000..8b5a9ff --- /dev/null +++ b/gen_random_test/Cargo.lock @@ -0,0 +1,128 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "gen_random" +version = "0.1.0" +dependencies = [ + "rand", +] + +[[package]] +name = "gen_random_proc_macro" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gen_random_test" +version = "0.1.0" +dependencies = [ + "gen_random", + "gen_random_proc_macro", + "rand", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "syn" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff --git a/gen_random_test/Cargo.toml b/gen_random_test/Cargo.toml new file mode 100644 index 0000000..b712853 --- /dev/null +++ b/gen_random_test/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "gen_random_test" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +gen_random_proc_macro = { path = "../gen_random_proc_macro" } +gen_random = { path = "../gen_random" } +rand = "0.8" diff --git a/gen_random_test/src/lib.rs b/gen_random_test/src/lib.rs new file mode 100644 index 0000000..faca129 --- /dev/null +++ b/gen_random_test/src/lib.rs @@ -0,0 +1,63 @@ +extern crate rand; +extern crate gen_random_proc_macro; +extern crate gen_random; +use gen_random::GenRandom; +use gen_random_proc_macro::GenRandom; + +#[derive(GenRandom, Debug)] +enum Test1 { + #[prob = 0.2] + A(f32), + #[prob = 0.8] + B(f32) +} + +#[derive(GenRandom, Debug)] +#[allow(dead_code)] +enum Test2 { + #[prob = 0.1] + Variant1, + #[prob = 0.7] + Variant2 { x : f32, y: f64, z: Test1 }, + #[prob = 0.2] + Variant3(f32, Box) +} + +#[derive(GenRandom, Debug)] +enum LinkedList { + #[prob = 0.1] + Empty, + #[prob = 0.9] + Cons(f32, Box) +} + + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn basic() { + let mut rng = rand::thread_rng(); + + let tests1: Vec<_> = (0..10).map(|_| { + Test1::gen_random(&mut rng) + }).collect(); + println!("{tests1:?}"); + } + + #[test] + fn many_types_of_variants() { + let mut rng = rand::thread_rng(); + let tests2: Vec<_> = (0..10).map(|_| { + Test2::gen_random(&mut rng) + }).collect(); + println!("{tests2:?}"); + } + + #[test] + fn linked_list() { + let ll = LinkedList::gen_thread_random(); + println!("{ll:?}"); + } +} -- cgit v1.2.3