#![cfg(test)] #[derive(Deserialize, Debug)] pub struct RuntimeValue { #[serde(rename = "type")] pub value_type: String, pub value: String, } #[derive(Deserialize, Debug)] #[serde(tag = "type")] pub enum Action { #[serde(rename = "invoke")] Invoke { module: Option, field: String, args: Vec, }, #[serde(rename = "get")] Get { module: Option, field: String, } } #[derive(Deserialize, Debug)] #[serde(tag = "type")] pub enum Command { #[serde(rename = "module")] Module { line: u64, name: Option, filename: String }, #[serde(rename = "assert_return")] AssertReturn { line: u64, action: Action, expected: Vec, }, #[serde(rename = "assert_return_canonical_nan")] AssertReturnCanonicalNan { line: u64, action: Action, }, #[serde(rename = "assert_return_arithmetic_nan")] AssertReturnArithmeticNan { line: u64, action: Action, }, #[serde(rename = "assert_trap")] AssertTrap { line: u64, action: Action, text: String, }, #[serde(rename = "assert_invalid")] AssertInvalid { line: u64, filename: String, text: String, }, #[serde(rename = "assert_malformed")] AssertMalformed { line: u64, filename: String, text: String, }, #[serde(rename = "assert_uninstantiable")] AssertUninstantiable { line: u64, filename: String, text: String, }, #[serde(rename = "assert_exhaustion")] AssertExhaustion { line: u64, action: Action, }, #[serde(rename = "assert_unlinkable")] AssertUnlinkable { line: u64, filename: String, text: String, }, #[serde(rename = "register")] Register { line: u64, name: Option, #[serde(rename = "as")] as_name: String, }, #[serde(rename = "action")] Action { line: u64, action: Action, }, } #[derive(Deserialize, Debug)] pub struct Spec { pub source_filename: String, pub commands: Vec, }