diff --git a/json/src/spec/genesis.rs b/json/src/spec/genesis.rs index 6f69f8c14..120df4fc1 100644 --- a/json/src/spec/genesis.rs +++ b/json/src/spec/genesis.rs @@ -58,7 +58,15 @@ pub struct Genesis { #[cfg(test)] mod tests { use serde_json; + use bytes::Bytes; + use uint::Uint; + use util::U256; + use hash::{H64, H256, Address}; + use util::hash::H160; + use util::{H64 as Eth64, H256 as Eth256}; use spec::genesis::Genesis; + use spec::{Ethereum, Seal}; + use std::str::FromStr; #[test] fn genesis_deserialization() { @@ -71,14 +79,29 @@ mod tests { "nonce": "0x00006d6f7264656e" } }, - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "author": "0x1000000000000000000000000000000000000001", + "timestamp": "0x07", + "parentHash": "0x9000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", "gasLimit": "0x1388", "stateRoot": "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" }"#; - let _deserialized: Genesis = serde_json::from_str(s).unwrap(); - // TODO: validate all fields + let deserialized: Genesis = serde_json::from_str(s).unwrap(); + assert_eq!(deserialized, Genesis { + seal: Seal::Ethereum(Ethereum { + nonce: H64(Eth64::from("0x00006d6f7264656e")), + mix_hash: H256(Eth256::from("0x0000000000000000000000000000000000000000000000000000000000000000")) + }), + difficulty: Uint(U256::from(0x400000000u64)), + author: Some(Address(H160::from("0x1000000000000000000000000000000000000001"))), + timestamp: Some(Uint(U256::from(0x07))), + parent_hash: Some(H256(Eth256::from("0x9000000000000000000000000000000000000000000000000000000000000000"))), + gas_limit: Uint(U256::from(0x1388)), + transactions_root: None, + receipts_root: None, + state_root: Some(H256(Eth256::from("0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544"))), + gas_used: None, + extra_data: Some(Bytes::from_str("0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa").unwrap()), + }); } }