Jump tests
This commit is contained in:
parent
da22bbf21c
commit
82496ffb13
@ -12,6 +12,8 @@ struct FakeLogEntry {
|
|||||||
/// Can't do recursive calls.
|
/// Can't do recursive calls.
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct FakeExt {
|
struct FakeExt {
|
||||||
|
sstore_clears: usize,
|
||||||
|
depth: usize,
|
||||||
store: HashMap<H256, H256>,
|
store: HashMap<H256, H256>,
|
||||||
_balances: HashMap<Address, U256>,
|
_balances: HashMap<Address, U256>,
|
||||||
blockhashes: HashMap<U256, H256>,
|
blockhashes: HashMap<U256, H256>,
|
||||||
@ -98,11 +100,11 @@ impl Ext for FakeExt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn depth(&self) -> usize {
|
fn depth(&self) -> usize {
|
||||||
unimplemented!();
|
self.depth
|
||||||
}
|
}
|
||||||
|
|
||||||
fn inc_sstore_clears(&mut self) {
|
fn inc_sstore_clears(&mut self) {
|
||||||
unimplemented!();
|
self.sstore_clears += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,6 +812,28 @@ fn test_extops(factory: super::Factory) {
|
|||||||
assert_eq!(gas_left, U256::from(29_898));
|
assert_eq!(gas_left, U256::from(29_898));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
evm_test!{test_jumps: test_jumps_jit, test_jumps_int}
|
||||||
|
fn test_jumps(factory: super::Factory) {
|
||||||
|
let code = "600160015560066000555b60016000540380806000551560245760015402600155600a565b".from_hex().unwrap();
|
||||||
|
|
||||||
|
let mut params = ActionParams::default();
|
||||||
|
params.gas = U256::from(150_000);
|
||||||
|
params.code = Some(code);
|
||||||
|
let mut ext = FakeExt::new();
|
||||||
|
|
||||||
|
let gas_left = {
|
||||||
|
let vm = factory.create();
|
||||||
|
vm.exec(params, &mut ext).unwrap()
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(ext.sstore_clears, 1);
|
||||||
|
assert_store(&ext, 0, "0000000000000000000000000000000000000000000000000000000000000000"); // 5!
|
||||||
|
assert_store(&ext, 1, "0000000000000000000000000000000000000000000000000000000000000078"); // 5!
|
||||||
|
assert_eq!(gas_left, U256::from(54_117));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn assert_store(ext: &FakeExt, pos: u64, val: &str) {
|
fn assert_store(ext: &FakeExt, pos: u64, val: &str) {
|
||||||
assert_eq!(ext.store.get(&H256::from(pos)).unwrap(), &H256::from_str(val).unwrap());
|
assert_eq!(ext.store.get(&H256::from(pos)).unwrap(), &H256::from_str(val).unwrap());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user