diff --git a/tests/ef_tests/src/case_result.rs b/tests/ef_tests/src/case_result.rs index 98e872564d..d85347dc73 100644 --- a/tests/ef_tests/src/case_result.rs +++ b/tests/ef_tests/src/case_result.rs @@ -1,16 +1,15 @@ use super::*; -use types::EthSpec; #[derive(Debug, PartialEq, Clone)] -pub struct TestCaseResult { +pub struct CaseResult { pub case_index: usize, pub desc: String, pub result: Result<(), Error>, } -impl TestCaseResult { +impl CaseResult { pub fn new(case_index: usize, case: &T, result: Result<(), Error>) -> Self { - TestCaseResult { + CaseResult { case_index, desc: format!("{:?}", case), result, @@ -18,10 +17,6 @@ impl TestCaseResult { } } -pub trait Test { - fn test(&self) -> Vec; -} - /// Compares `result` with `expected`. /// /// If `expected.is_none()` then `result` is expected to be `Err`. Otherwise, `T` in `result` and diff --git a/tests/ef_tests/src/cases/ssz_generic.rs b/tests/ef_tests/src/cases/ssz_generic.rs index 66cca1ffd3..30c76219fc 100644 --- a/tests/ef_tests/src/cases/ssz_generic.rs +++ b/tests/ef_tests/src/cases/ssz_generic.rs @@ -16,8 +16,8 @@ impl YamlDecode for SszGeneric { } } -impl Test for Cases { - fn test(&self) -> Vec { +impl EfTest for Cases { + fn test_results(&self) -> Vec { self.test_cases .iter() .enumerate() @@ -42,7 +42,7 @@ impl Test for Cases { Ok(()) }; - TestCaseResult::new(i, tc, result) + CaseResult::new(i, tc, result) }) .collect() } diff --git a/tests/ef_tests/src/cases/ssz_static.rs b/tests/ef_tests/src/cases/ssz_static.rs index e4904404b6..ac6bc8246b 100644 --- a/tests/ef_tests/src/cases/ssz_static.rs +++ b/tests/ef_tests/src/cases/ssz_static.rs @@ -41,8 +41,8 @@ impl SszStatic { } } -impl Test for Cases { - fn test(&self) -> Vec { +impl EfTest for Cases { + fn test_results(&self) -> Vec { self.test_cases .iter() .enumerate() @@ -76,7 +76,7 @@ impl Test for Cases { ))), }; - TestCaseResult::new(i, tc, result) + CaseResult::new(i, tc, result) }) .collect() } diff --git a/tests/ef_tests/src/doc.rs b/tests/ef_tests/src/doc.rs index 6792535e61..1ab22b047a 100644 --- a/tests/ef_tests/src/doc.rs +++ b/tests/ef_tests/src/doc.rs @@ -18,7 +18,7 @@ impl Doc { Self { yaml } } - pub fn get_test_results(path: PathBuf) -> Vec { + pub fn get_test_results(path: PathBuf) -> Vec { let doc = Self::from_path(path); let header: DocHeader = serde_yaml::from_str(&doc.yaml.as_str()).unwrap(); @@ -40,7 +40,7 @@ impl Doc { pub fn assert_tests_pass(path: PathBuf) { let results = Self::get_test_results(path); - let failures: Vec<&TestCaseResult> = results.iter().filter(|r| r.result.is_err()).collect(); + let failures: Vec<&CaseResult> = results.iter().filter(|r| r.result.is_err()).collect(); if !failures.is_empty() { for f in &failures { @@ -52,13 +52,13 @@ impl Doc { } } -pub fn run_test(test_doc_yaml: &String) -> Vec +pub fn run_test(test_doc_yaml: &String) -> Vec where - Cases: Test + serde::de::DeserializeOwned + YamlDecode, + Cases: EfTest + serde::de::DeserializeOwned + YamlDecode, { let test_cases_yaml = extract_yaml_by_key(test_doc_yaml, "test_cases"); let test_cases: Cases = Cases::yaml_decode(&test_cases_yaml.to_string()).unwrap(); - test_cases.test::() + test_cases.test_results::() } diff --git a/tests/ef_tests/src/lib.rs b/tests/ef_tests/src/lib.rs index 7dd1167f90..7489586f2f 100644 --- a/tests/ef_tests/src/lib.rs +++ b/tests/ef_tests/src/lib.rs @@ -3,6 +3,7 @@ use ethereum_types::{U128, U256}; use serde_derive::Deserialize; use ssz::Decode; use std::fmt::Debug; +use types::EthSpec; pub use crate::case_result::*; pub use crate::cases::*; @@ -19,3 +20,10 @@ mod doc_header; mod error; mod eth_specs; mod yaml_decode; + +/// Defined where an object can return the results of some test(s) adhering to the Ethereum +/// Foundation testing format. +pub trait EfTest { + /// Returns the results of executing one or more tests. + fn test_results(&self) -> Vec; +}