improve ethjson tests, add code deserialization
This commit is contained in:
parent
f19b00b6ca
commit
7dbf23829e
@ -17,6 +17,7 @@
|
|||||||
//! Spec account deserialization.
|
//! Spec account deserialization.
|
||||||
|
|
||||||
use uint::Uint;
|
use uint::Uint;
|
||||||
|
use bytes::Bytes;
|
||||||
use spec::builtin::Builtin;
|
use spec::builtin::Builtin;
|
||||||
|
|
||||||
/// Spec account.
|
/// Spec account.
|
||||||
@ -28,6 +29,8 @@ pub struct Account {
|
|||||||
pub balance: Option<Uint>,
|
pub balance: Option<Uint>,
|
||||||
/// Nonce.
|
/// Nonce.
|
||||||
pub nonce: Option<Uint>,
|
pub nonce: Option<Uint>,
|
||||||
|
/// Code.
|
||||||
|
pub code: Option<Bytes>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Account {
|
impl Account {
|
||||||
@ -41,14 +44,22 @@ impl Account {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use spec::account::Account;
|
use spec::account::Account;
|
||||||
|
use util::numbers::U256;
|
||||||
|
use uint::Uint;
|
||||||
|
use bytes::Bytes;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn account_deserialization() {
|
fn account_deserialization() {
|
||||||
let s = r#"{
|
let s = r#"{
|
||||||
"balance": "1",
|
"balance": "1",
|
||||||
"builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } }
|
"nonce": "0",
|
||||||
|
"builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } },
|
||||||
|
"code": "1234"
|
||||||
}"#;
|
}"#;
|
||||||
let _deserialized: Account = serde_json::from_str(s).unwrap();
|
let deserialized: Account = serde_json::from_str(s).unwrap();
|
||||||
// TODO: validate all fields
|
assert_eq!(deserialized.balance.unwrap(), Uint(U256::from(1)));
|
||||||
|
assert_eq!(deserialized.nonce.unwrap(), Uint(U256::from(0)));
|
||||||
|
assert_eq!(deserialized.code.unwrap(), Bytes::new(vec![0x12, 0x34]));
|
||||||
|
assert!(deserialized.builtin.is_some()); // Further tested in builtin.rs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ pub struct Builtin {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use spec::builtin::Builtin;
|
use spec::builtin::{Builtin, Pricing, Linear};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn builtin_deserialization() {
|
fn builtin_deserialization() {
|
||||||
@ -53,7 +53,8 @@ mod tests {
|
|||||||
"name": "ecrecover",
|
"name": "ecrecover",
|
||||||
"pricing": { "linear": { "base": 3000, "word": 0 } }
|
"pricing": { "linear": { "base": 3000, "word": 0 } }
|
||||||
}"#;
|
}"#;
|
||||||
let _deserialized: Builtin = serde_json::from_str(s).unwrap();
|
let deserialized: Builtin = serde_json::from_str(s).unwrap();
|
||||||
// TODO: validate all fields
|
assert_eq!(deserialized.name, "ecrecover");
|
||||||
|
assert_eq!(deserialized.pricing, Pricing::Linear(Linear { base: 3000, word: 0 }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user