Fixed a few more tests (#70)
* Fixed getting reading balance from the test fixtures * Fixed sha3 opcode
This commit is contained in:
parent
c8be4be5f1
commit
601db4d9f3
40
VMTests.md
40
VMTests.md
|
@ -287,10 +287,10 @@ OK: 11/12 Fail: 1/12 Skip: 0/12
|
|||
+ address1.json OK
|
||||
+ balance0.json OK
|
||||
- balance01.json Fail
|
||||
- balance1.json Fail
|
||||
+ balance1.json OK
|
||||
+ balanceAddress2.json OK
|
||||
+ balanceAddressInputTooBig.json OK
|
||||
- balanceAddressInputTooBigLeftMyAddress.json Fail
|
||||
+ balanceAddressInputTooBigLeftMyAddress.json OK
|
||||
balanceAddressInputTooBigRightMyAddress.json Skip
|
||||
+ balanceCaller3.json OK
|
||||
calldatacopy0.json Skip
|
||||
|
@ -334,7 +334,7 @@ OK: 11/12 Fail: 1/12 Skip: 0/12
|
|||
+ gasprice.json OK
|
||||
+ origin.json OK
|
||||
```
|
||||
OK: 26/52 Fail: 11/52 Skip: 15/52
|
||||
OK: 28/52 Fail: 9/52 Skip: 15/52
|
||||
## vmIOandFlowOperations
|
||||
```diff
|
||||
+ BlockNumberDynamicJump0_AfterJumpdest.json OK
|
||||
|
@ -602,7 +602,7 @@ OK: 0/18 Fail: 0/18 Skip: 18/18
|
|||
+ push30.json OK
|
||||
+ push31.json OK
|
||||
+ push32.json OK
|
||||
+ push32AndSuicide.json OK
|
||||
- push32AndSuicide.json Fail
|
||||
+ push32FillUpInputWithZerosAtTheEnd.json OK
|
||||
+ push32Undefined.json OK
|
||||
+ push32Undefined2.json OK
|
||||
|
@ -614,7 +614,7 @@ OK: 0/18 Fail: 0/18 Skip: 18/18
|
|||
+ push7.json OK
|
||||
+ push8.json OK
|
||||
+ push9.json OK
|
||||
- swap1.json Fail
|
||||
+ swap1.json OK
|
||||
+ swap10.json OK
|
||||
+ swap11.json OK
|
||||
+ swap12.json OK
|
||||
|
@ -658,25 +658,25 @@ OK: 0/17 Fail: 0/17 Skip: 17/17
|
|||
## vmSha3Test
|
||||
```diff
|
||||
+ sha3_0.json OK
|
||||
- sha3_1.json Fail
|
||||
- sha3_2.json Fail
|
||||
+ sha3_1.json OK
|
||||
+ sha3_2.json OK
|
||||
+ sha3_3.json OK
|
||||
+ sha3_4.json OK
|
||||
+ sha3_5.json OK
|
||||
- sha3_6.json Fail
|
||||
- sha3_bigOffset.json Fail
|
||||
- sha3_bigOffset2.json Fail
|
||||
- sha3_bigSize.json Fail
|
||||
- sha3_memSizeNoQuadraticCost31.json Fail
|
||||
- sha3_memSizeQuadraticCost32.json Fail
|
||||
+ sha3_6.json OK
|
||||
+ sha3_bigOffset.json OK
|
||||
+ sha3_bigOffset2.json OK
|
||||
+ sha3_bigSize.json OK
|
||||
+ sha3_memSizeNoQuadraticCost31.json OK
|
||||
+ sha3_memSizeQuadraticCost32.json OK
|
||||
- sha3_memSizeQuadraticCost32_zeroSize.json Fail
|
||||
- sha3_memSizeQuadraticCost33.json Fail
|
||||
- sha3_memSizeQuadraticCost63.json Fail
|
||||
- sha3_memSizeQuadraticCost64.json Fail
|
||||
+ sha3_memSizeQuadraticCost33.json OK
|
||||
+ sha3_memSizeQuadraticCost63.json OK
|
||||
+ sha3_memSizeQuadraticCost64.json OK
|
||||
+ sha3_memSizeQuadraticCost64_2.json OK
|
||||
- sha3_memSizeQuadraticCost65.json Fail
|
||||
+ sha3_memSizeQuadraticCost65.json OK
|
||||
```
|
||||
OK: 5/18 Fail: 13/18 Skip: 0/18
|
||||
OK: 17/18 Fail: 1/18 Skip: 0/18
|
||||
## vmSystemOperations
|
||||
```diff
|
||||
ABAcalls0.json Skip
|
||||
|
@ -722,6 +722,6 @@ OK: 0/36 Fail: 0/36 Skip: 36/36
|
|||
- arith.json Fail
|
||||
- boolean.json Fail
|
||||
- mktx.json Fail
|
||||
+ suicide.json OK
|
||||
- suicide.json Fail
|
||||
```
|
||||
OK: 1/4 Fail: 3/4 Skip: 0/4
|
||||
OK: 0/4 Fail: 4/4 Skip: 0/4
|
||||
|
|
|
@ -172,13 +172,16 @@ op sha3, inline = true, startPos, length:
|
|||
## 0x20, Compute Keccak-256 hash.
|
||||
let (pos, len) = (startPos.toInt, length.toInt)
|
||||
|
||||
if pos < 0 or len < 0:
|
||||
raise newException(OutOfBoundsRead, "Out of bounds memory access")
|
||||
|
||||
computation.gasMeter.consumeGas(
|
||||
computation.gasCosts[Op.Sha3].m_handler(computation.memory.len, pos, len),
|
||||
reason="SHA3: word gas cost"
|
||||
)
|
||||
|
||||
computation.memory.extend(pos, len)
|
||||
let endRange = min(pos + len, computation.memory.len - 1)
|
||||
let endRange = min(pos + len, computation.memory.len) - 1
|
||||
push:
|
||||
keccak256.digest computation.memory.bytes.toOpenArray(pos, endRange)
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ proc setupStateDB*(wantedState: JsonNode, stateDB: var AccountStateDB) =
|
|||
|
||||
let nonce = accountData{"nonce"}.getInt.u256
|
||||
let code = hexToSeqByte(accountData{"code"}.getStr).toRange
|
||||
let balance = accountData{"balance"}.getInt.u256
|
||||
let balance = UInt256.fromHex accountData{"balance"}.getStr
|
||||
|
||||
stateDB.setNonce(account, nonce)
|
||||
stateDB.setCode(account, code)
|
||||
|
@ -107,17 +107,18 @@ proc verifyStateDB*(wantedState: JsonNode, stateDB: AccountStateDB) =
|
|||
let account = ethAddressFromHex(ac)
|
||||
for slot, value in accountData{"storage"}:
|
||||
let
|
||||
slotId = slot.parseHexInt.u256
|
||||
slotId = UInt256.fromHex slot
|
||||
wantedValue = UInt256.fromHex value.getStr
|
||||
|
||||
let (actualValue, found) = stateDB.getStorage(account, slotId)
|
||||
# echo "FOUND ", found
|
||||
# echo "ACTUAL VALUE ", actualValue.toHex
|
||||
doAssert found and actualValue == wantedValue
|
||||
doAssert found
|
||||
doAssert actualValue == wantedValue
|
||||
|
||||
let
|
||||
wantedCode = hexToSeqByte(accountData{"code"}.getStr).toRange
|
||||
wantedBalance = accountData{"balance"}.getInt.u256
|
||||
wantedBalance = UInt256.fromHex accountData{"balance"}.getStr
|
||||
wantedNonce = accountData{"nonce"}.getInt.u256
|
||||
|
||||
actualCode = stateDB.getCode(account)
|
||||
|
|
Loading…
Reference in New Issue