added tests for ser/deser GetBlockResponse
This commit is contained in:
parent
1b9afd4e01
commit
516151743c
|
@ -1,12 +1,13 @@
|
||||||
|
use serde::{Serialize, Serializer};
|
||||||
use super::bytes::Bytes;
|
use super::bytes::Bytes;
|
||||||
use super::hash::H256;
|
use super::hash::H256;
|
||||||
use super::raw_block::RawBlock;
|
use super::raw_block::RawBlock;
|
||||||
|
|
||||||
/// Response to getblock RPC request
|
/// Response to getblock RPC request
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug)]
|
||||||
pub enum GetBlockResponse {
|
pub enum GetBlockResponse {
|
||||||
/// When asking for short response
|
/// When asking for short response
|
||||||
Short(RawBlock),
|
Raw(RawBlock),
|
||||||
/// When asking for verbose response
|
/// When asking for verbose response
|
||||||
Verbose(Block),
|
Verbose(Block),
|
||||||
}
|
}
|
||||||
|
@ -53,6 +54,15 @@ pub struct Block {
|
||||||
pub nextblockhash: Option<H256>,
|
pub nextblockhash: Option<H256>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Serialize for GetBlockResponse {
|
||||||
|
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer {
|
||||||
|
match *self {
|
||||||
|
GetBlockResponse::Raw(ref raw_block) => raw_block.serialize(serializer),
|
||||||
|
GetBlockResponse::Verbose(ref block) => block.serialize(serializer),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::super::bytes::Bytes;
|
use super::super::bytes::Bytes;
|
||||||
|
@ -125,4 +135,20 @@ mod tests {
|
||||||
serde_json::from_str::<Block>(r#"{"hash":"0100000000000000000000000000000000000000000000000000000000000000","confirmations":-1,"size":500000,"strippedsize":444444,"weight":5236235,"height":3513513,"version":1,"versionHex":"01","merkleroot":"0200000000000000000000000000000000000000000000000000000000000000","tx":["0300000000000000000000000000000000000000000000000000000000000000","0400000000000000000000000000000000000000000000000000000000000000"],"time":111,"mediantime":100,"nonce":124,"bits":13513,"difficulty":555.555,"chainwork":"0300000000000000000000000000000000000000000000000000000000000000","previousblockhash":"0400000000000000000000000000000000000000000000000000000000000000","nextblockhash":"0500000000000000000000000000000000000000000000000000000000000000"}"#).unwrap(),
|
serde_json::from_str::<Block>(r#"{"hash":"0100000000000000000000000000000000000000000000000000000000000000","confirmations":-1,"size":500000,"strippedsize":444444,"weight":5236235,"height":3513513,"version":1,"versionHex":"01","merkleroot":"0200000000000000000000000000000000000000000000000000000000000000","tx":["0300000000000000000000000000000000000000000000000000000000000000","0400000000000000000000000000000000000000000000000000000000000000"],"time":111,"mediantime":100,"nonce":124,"bits":13513,"difficulty":555.555,"chainwork":"0300000000000000000000000000000000000000000000000000000000000000","previousblockhash":"0400000000000000000000000000000000000000000000000000000000000000","nextblockhash":"0500000000000000000000000000000000000000000000000000000000000000"}"#).unwrap(),
|
||||||
block);
|
block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn get_block_response_raw_serialize() {
|
||||||
|
let raw_response = GetBlockResponse::Raw(Bytes::new(vec![0]));
|
||||||
|
assert_eq!(serde_json::to_string(&raw_response).unwrap(), r#""00""#);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn get_block_response_verbose_serialize() {
|
||||||
|
let block = Block {
|
||||||
|
version_hex: Bytes::new(vec![0]),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let verbose_response = GetBlockResponse::Verbose(block);
|
||||||
|
assert_eq!(serde_json::to_string(&verbose_response).unwrap(), r#"{"hash":"0000000000000000000000000000000000000000000000000000000000000000","confirmations":0,"size":0,"strippedsize":0,"weight":0,"height":0,"version":0,"versionHex":"00","merkleroot":"0000000000000000000000000000000000000000000000000000000000000000","tx":[],"time":0,"mediantime":0,"nonce":0,"bits":0,"difficulty":0.0,"chainwork":"0000000000000000000000000000000000000000000000000000000000000000","previousblockhash":null,"nextblockhash":null}"#);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue