From 73c246854af724b92b67b1e9d9c221f5b6a711f5 Mon Sep 17 00:00:00 2001 From: Kirk Baird Date: Tue, 21 May 2019 15:31:31 +1000 Subject: [PATCH] Add functionality to check ssz_static encoding as well as existing decoding --- tests/ef_tests/src/cases/ssz_static.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/ef_tests/src/cases/ssz_static.rs b/tests/ef_tests/src/cases/ssz_static.rs index 79739f729d..0eacfcceef 100644 --- a/tests/ef_tests/src/cases/ssz_static.rs +++ b/tests/ef_tests/src/cases/ssz_static.rs @@ -3,7 +3,7 @@ use crate::case_result::compare_result; use cached_tree_hash::{CachedTreeHash, TreeHashCache}; use rayon::prelude::*; use serde_derive::Deserialize; -use ssz::Decode; +use ssz::{Decode, Encode, ssz_encode}; use std::fmt::Debug; use tree_hash::TreeHash; use types::{ @@ -91,8 +91,10 @@ impl EfTest for Cases { fn ssz_static_test(tc: &SszStatic) -> Result<(), Error> where - T: Decode + T: Clone + + Decode + Debug + + Encode + PartialEq + serde::de::DeserializeOwned + TreeHash @@ -106,8 +108,12 @@ where let decode_result = T::from_ssz_bytes(&ssz); compare_result(&decode_result, &Some(expected))?; - // Verify the TreeHash root of the decoded struct matches the test. + // Verify we can encode the result back into original ssz bytes let decoded = decode_result.unwrap(); + let encoded_result = decoded.as_ssz_bytes(); + compare_result::, Error>(&Ok(encoded_result), &Some(ssz)); + + // Verify the TreeHash root of the decoded struct matches the test. let expected_root = &hex::decode(&tc.root[2..]).map_err(|e| Error::FailedToParseTest(format!("{:?}", e)))?; let expected_root = Hash256::from_slice(&expected_root);