Add parsing (not executing) of deposit tests

This commit is contained in:
Paul Hauner
2019-05-22 15:34:12 +10:00
parent 07b94b30ba
commit 95b0df7087
6 changed files with 65 additions and 13 deletions

View File

@@ -1,6 +1,4 @@
use super::*;
use crate::yaml_decode::*;
use yaml_rust::YamlLoader;
mod bls_aggregate_pubkeys;
mod bls_aggregate_sigs;
@@ -8,6 +6,7 @@ mod bls_g2_compressed;
mod bls_g2_uncompressed;
mod bls_priv_to_pub;
mod bls_sign_msg;
mod operations_deposit;
mod ssz_generic;
mod ssz_static;
@@ -17,6 +16,7 @@ pub use bls_g2_compressed::*;
pub use bls_g2_uncompressed::*;
pub use bls_priv_to_pub::*;
pub use bls_sign_msg::*;
pub use operations_deposit::*;
pub use ssz_generic::*;
pub use ssz_static::*;

View File

@@ -0,0 +1,34 @@
use super::*;
use serde_derive::Deserialize;
use types::{BeaconState, Deposit, EthSpec};
#[derive(Debug, Clone, Deserialize)]
pub struct OperationsDeposit<E: EthSpec> {
pub description: String,
#[serde(bound = "E: EthSpec")]
pub pre: BeaconState<E>,
pub deposit: Deposit,
#[serde(bound = "E: EthSpec")]
pub post: Option<BeaconState<E>>,
}
impl<E: EthSpec> YamlDecode for OperationsDeposit<E> {
fn yaml_decode(yaml: &String) -> Result<Self, Error> {
Ok(serde_yaml::from_str(&yaml.as_str()).unwrap())
}
}
impl<T: EthSpec> EfTest for Cases<OperationsDeposit<T>> {
fn test_results<E: EthSpec>(&self) -> Vec<CaseResult> {
self.test_cases
.iter()
.enumerate()
.map(|(i, tc)| {
// TODO: run test
let result = Ok(());
CaseResult::new(i, tc, result)
})
.collect()
}
}

View File

@@ -2,7 +2,7 @@ use crate::case_result::CaseResult;
use crate::cases::*;
use crate::doc_header::DocHeader;
use crate::eth_specs::{MainnetEthSpec, MinimalEthSpec};
use crate::yaml_decode::{extract_yaml_by_key, yaml_split_header_and_cases, YamlDecode};
use crate::yaml_decode::{yaml_split_header_and_cases, YamlDecode};
use crate::EfTest;
use serde_derive::Deserialize;
use std::{fs::File, io::prelude::*, path::PathBuf};
@@ -58,6 +58,12 @@ impl Doc {
("bls", "msg_hash_uncompressed", "mainnet") => vec![],
("bls", "priv_to_pub", "mainnet") => run_test::<BlsPrivToPub, MainnetEthSpec>(self),
("bls", "sign_msg", "mainnet") => run_test::<BlsSign, MainnetEthSpec>(self),
("operations", "deposit", "mainnet") => {
run_test::<OperationsDeposit<MainnetEthSpec>, MainnetEthSpec>(self)
}
("operations", "deposit", "minimal") => {
run_test::<OperationsDeposit<MinimalEthSpec>, MinimalEthSpec>(self)
}
(runner, handler, config) => panic!(
"No implementation for runner: \"{}\", handler: \"{}\", config: \"{}\"",
runner, handler, config