chacha: test for serde roundtrip
This commit is contained in:
@@ -19,6 +19,10 @@ rand_core = { path = "../rand_core", version = "0.6.0" }
|
||||
ppv-lite86 = { version = "0.2.8", default-features = false, features = ["simd"] }
|
||||
serde = { version = "1.0", features = ["derive"], optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
# Only to test serde1
|
||||
bincode = "1.2.1"
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
std = ["ppv-lite86/std"]
|
||||
|
||||
@@ -351,8 +351,38 @@ chacha_impl!(ChaCha8Core, ChaCha8Rng, 4, "ChaCha with 8 rounds", abstract8);
|
||||
mod test {
|
||||
use rand_core::{RngCore, SeedableRng};
|
||||
|
||||
#[cfg(feature = "serde1")] use super::{ChaCha20Rng, ChaCha12Rng, ChaCha8Rng};
|
||||
|
||||
type ChaChaRng = super::ChaCha20Rng;
|
||||
|
||||
#[cfg(feature = "serde1")]
|
||||
#[test]
|
||||
fn test_chacha_serde_roundtrip() {
|
||||
let seed = [
|
||||
1, 0, 52, 0, 0, 0, 0, 0, 1, 0, 10, 0, 22, 32, 0, 0, 2, 0, 55, 49, 0, 11, 0, 0, 3, 0, 0, 0, 0,
|
||||
0, 2, 92,
|
||||
];
|
||||
let mut rng1 = ChaCha20Rng::from_seed(seed);
|
||||
let mut rng2 = ChaCha12Rng::from_seed(seed);
|
||||
let mut rng3 = ChaCha8Rng::from_seed(seed);
|
||||
|
||||
let encoded1 = bincode::serialize(&rng1).unwrap();
|
||||
let encoded2 = bincode::serialize(&rng2).unwrap();
|
||||
let encoded3 = bincode::serialize(&rng3).unwrap();
|
||||
|
||||
let mut decoded1: ChaCha20Rng = bincode::deserialize(&encoded1).unwrap();
|
||||
let mut decoded2: ChaCha12Rng = bincode::deserialize(&encoded2).unwrap();
|
||||
let mut decoded3: ChaCha8Rng = bincode::deserialize(&encoded3).unwrap();
|
||||
|
||||
assert_eq!(rng1, decoded1);
|
||||
assert_eq!(rng2, decoded2);
|
||||
assert_eq!(rng3, decoded3);
|
||||
|
||||
assert_eq!(rng1.next_u32(), decoded1.next_u32());
|
||||
assert_eq!(rng2.next_u32(), decoded2.next_u32());
|
||||
assert_eq!(rng3.next_u32(), decoded3.next_u32());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_chacha_construction() {
|
||||
let seed = [
|
||||
|
||||
Reference in New Issue
Block a user