diff options
Diffstat (limited to 'rand/rand-derive/tests/rand_macros.rs')
-rw-r--r-- | rand/rand-derive/tests/rand_macros.rs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/rand/rand-derive/tests/rand_macros.rs b/rand/rand-derive/tests/rand_macros.rs new file mode 100644 index 0000000..938f2b0 --- /dev/null +++ b/rand/rand-derive/tests/rand_macros.rs @@ -0,0 +1,58 @@ +#![allow(dead_code)] + +extern crate rand; +#[macro_use] +extern crate rand_derive; + +use rand::Rng; + +#[derive(Rand)] +struct Struct { + x: u16, + y: Option<f64>, +} + +#[derive(Rand)] +struct Tuple(i16, Option<f64>); + +#[derive(Rand)] +struct Unit; + +#[derive(Rand)] +enum EnumUnit { + X, +} + +#[derive(Rand)] +enum Enum1 { + X(u8, f32), +} + +#[derive(Rand)] +enum Enum2 { + X(bool), + Y, +} + +#[derive(Rand)] +enum Enum3 { + X { x: u8, y: isize }, + Y([bool; 4]), + Z, +} + +#[test] +fn smoke() { + let mut rng = rand::XorShiftRng::new_unseeded(); + + // check nothing horrible happens internally: + for _ in 0..100 { + let _ = rng.gen::<Struct>(); + let _ = rng.gen::<Tuple>(); + let _ = rng.gen::<Unit>(); + let _ = rng.gen::<EnumUnit>(); + let _ = rng.gen::<Enum1>(); + let _ = rng.gen::<Enum2>(); + let _ = rng.gen::<Enum3>(); + } +} |