tests are passing

This commit is contained in:
debris 2016-01-14 23:36:35 +01:00
parent cb0ad01e42
commit a6191262c9

View File

@ -33,7 +33,7 @@ impl Engine for TestEngine {
struct CallCreate { struct CallCreate {
data: Bytes, data: Bytes,
destination: Address, destination: Option<Address>,
_gas_limit: U256, _gas_limit: U256,
value: U256 value: U256
} }
@ -81,7 +81,7 @@ impl<'a> Ext for TestExt<'a> {
(gas_left, Some(address)) => { (gas_left, Some(address)) => {
self.callcreates.push(CallCreate { self.callcreates.push(CallCreate {
data: code.to_vec(), data: code.to_vec(),
destination: address.clone(), destination: Some(address.clone()),
_gas_limit: *gas, _gas_limit: *gas,
value: *value value: *value
}); });
@ -89,14 +89,14 @@ impl<'a> Ext for TestExt<'a> {
}, },
// creation failed only due to reaching max_depth // creation failed only due to reaching max_depth
(gas_left, None) if ext.state.balance(&ext.params.address) >= *value => { (gas_left, None) if ext.state.balance(&ext.params.address) >= *value => {
let address = contract_address(&ext.params.address, &ext.state.nonce(&ext.params.address));
self.callcreates.push(CallCreate { self.callcreates.push(CallCreate {
data: code.to_vec(), data: code.to_vec(),
// TODO: address is not stored here? // callcreate test does not need an address
destination: Address::new(), destination: None,
_gas_limit: *gas, _gas_limit: *gas,
value: *value value: *value
}); });
let address = contract_address(&ext.params.address, &ext.state.nonce(&ext.params.address));
(gas_left, Some(address)) (gas_left, Some(address))
}, },
other => other other => other
@ -117,7 +117,7 @@ impl<'a> Ext for TestExt<'a> {
if ext.state.balance(&ext.params.address) >= *value { if ext.state.balance(&ext.params.address) >= *value {
self.callcreates.push(CallCreate { self.callcreates.push(CallCreate {
data: data.to_vec(), data: data.to_vec(),
destination: receive_address.clone(), destination: Some(receive_address.clone()),
_gas_limit: *call_gas, _gas_limit: *call_gas,
value: *value value: *value
}); });
@ -244,7 +244,10 @@ fn do_json_test(json_data: &[u8]) -> Vec<String> {
let is = &callcreates[i]; let is = &callcreates[i];
let expected = &cc[i]; let expected = &cc[i];
fail_unless(is.data == Bytes::from_json(&expected["data"]), "callcreates data is incorrect"); fail_unless(is.data == Bytes::from_json(&expected["data"]), "callcreates data is incorrect");
fail_unless(is.destination == xjson!(&expected["destination"]), "callcreates destination is incorrect"); match &is.destination {
&None => fail_unless(expected["destination"].as_string().unwrap() == "", "destination should be empty"),
&Some(ref address) => fail_unless(address == &xjson!(&expected["destination"]), "callcreates destination is incorrect")
}
fail_unless(is.value == xjson!(&expected["value"]), "callcreates value is incorrect"); fail_unless(is.value == xjson!(&expected["value"]), "callcreates value is incorrect");
// TODO: call_gas is calculated in externalities and is not exposed to TestExt. // TODO: call_gas is calculated in externalities and is not exposed to TestExt.