From 8031910892e99c8c05587de1d3760064c7796ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 7 Oct 2016 13:16:09 +0200 Subject: [PATCH] [beta] Fixing RPC Filter conversion to EthFilter (#2501) * Fixing RPC Filter conversion to EthFilter Conflicts: rpc/src/v1/impls/eth.rs rpc/src/v1/types/filter.rs * Removing limit * Fixing rpc tests --- ethcore/src/types/filter.rs | 2 +- rpc/src/v1/tests/eth.rs | 1 + rpc/src/v1/types/filter.rs | 41 ++++++++++++++++++++++++++++++++++--- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/ethcore/src/types/filter.rs b/ethcore/src/types/filter.rs index d8d5d03bd..47cb6160d 100644 --- a/ethcore/src/types/filter.rs +++ b/ethcore/src/types/filter.rs @@ -25,7 +25,7 @@ use std::mem; use std::collections::VecDeque; /// Blockchain Filter. -#[derive(Binary)] +#[derive(Binary, Debug, PartialEq)] pub struct Filter { /// Blockchain will be searched from this block. pub from_block: BlockID, diff --git a/rpc/src/v1/tests/eth.rs b/rpc/src/v1/tests/eth.rs index ebb855fbe..4312c7c41 100644 --- a/rpc/src/v1/tests/eth.rs +++ b/rpc/src/v1/tests/eth.rs @@ -60,6 +60,7 @@ fn miner_service(spec: &Spec, accounts: Arc) -> Arc { tx_queue_size: 1024, tx_queue_strategy: PrioritizationStrategy::GasPriceOnly, tx_gas_limit: !U256::zero(), + tx_queue_strategy: PrioritizationStrategy::GasPriceOnly, pending_set: PendingSet::SealingOrElseQueue, reseal_min_period: Duration::from_secs(0), work_queue_size: 50, diff --git a/rpc/src/v1/types/filter.rs b/rpc/src/v1/types/filter.rs index e07845211..549c00d96 100644 --- a/rpc/src/v1/types/filter.rs +++ b/rpc/src/v1/types/filter.rs @@ -83,9 +83,15 @@ impl Into for Filter { VariadicValue::Null => None, VariadicValue::Single(t) => Some(vec![t.into()]), VariadicValue::Multiple(t) => Some(t.into_iter().map(Into::into).collect()) - }).filter_map(|m| m).collect()).into_iter(); - vec![iter.next(), iter.next(), iter.next(), iter.next()] - } + }).collect()).into_iter(); + + vec![ + iter.next().unwrap_or(None), + iter.next().unwrap_or(None), + iter.next().unwrap_or(None), + iter.next().unwrap_or(None) + ] + }, } } } @@ -97,6 +103,8 @@ mod tests { use util::hash::*; use super::*; use v1::types::BlockNumber; + use ethcore::filter::Filter as EthFilter; + use ethcore::client::BlockID; #[test] fn topic_deserialization() { @@ -123,4 +131,31 @@ mod tests { topics: None }); } + + #[test] + fn filter_conversion() { + let filter = Filter { + from_block: Some(BlockNumber::Earliest), + to_block: Some(BlockNumber::Latest), + address: Some(VariadicValue::Multiple(vec![])), + topics: Some(vec![ + VariadicValue::Null, + VariadicValue::Single("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b".into()), + VariadicValue::Null, + ]), + }; + + let eth_filter: EthFilter = filter.into(); + assert_eq!(eth_filter, EthFilter { + from_block: BlockID::Earliest, + to_block: BlockID::Latest, + address: Some(vec![]), + topics: vec![ + None, + Some(vec!["000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b".into()]), + None, + None, + ], + }); + } }