remove test_vm_json
reason: - they already covered by test_blockchain_json and test_generalstate_json. - new ethereum/tests already remove them, nothing to tests anymore
This commit is contained in:
parent
6055e0bd0f
commit
43bc010c9c
662
VMTests.md
662
VMTests.md
|
@ -1,662 +0,0 @@
|
||||||
VMTests
|
|
||||||
===
|
|
||||||
## vmArithmeticTest
|
|
||||||
```diff
|
|
||||||
+ add0.json OK
|
|
||||||
+ add1.json OK
|
|
||||||
+ add2.json OK
|
|
||||||
+ add3.json OK
|
|
||||||
+ add4.json OK
|
|
||||||
+ addmod0.json OK
|
|
||||||
+ addmod1.json OK
|
|
||||||
+ addmod1_overflow2.json OK
|
|
||||||
+ addmod1_overflow3.json OK
|
|
||||||
+ addmod1_overflow4.json OK
|
|
||||||
+ addmod1_overflowDiff.json OK
|
|
||||||
+ addmod2.json OK
|
|
||||||
+ addmod2_0.json OK
|
|
||||||
+ addmod2_1.json OK
|
|
||||||
+ addmod3.json OK
|
|
||||||
+ addmod3_0.json OK
|
|
||||||
+ addmodBigIntCast.json OK
|
|
||||||
+ addmodDivByZero.json OK
|
|
||||||
+ addmodDivByZero1.json OK
|
|
||||||
+ addmodDivByZero2.json OK
|
|
||||||
+ addmodDivByZero3.json OK
|
|
||||||
+ arith1.json OK
|
|
||||||
+ div1.json OK
|
|
||||||
+ divBoostBug.json OK
|
|
||||||
+ divByNonZero0.json OK
|
|
||||||
+ divByNonZero1.json OK
|
|
||||||
+ divByNonZero2.json OK
|
|
||||||
+ divByNonZero3.json OK
|
|
||||||
+ divByZero.json OK
|
|
||||||
+ divByZero_2.json OK
|
|
||||||
+ exp0.json OK
|
|
||||||
+ exp1.json OK
|
|
||||||
+ exp2.json OK
|
|
||||||
+ exp3.json OK
|
|
||||||
+ exp4.json OK
|
|
||||||
+ exp5.json OK
|
|
||||||
+ exp6.json OK
|
|
||||||
+ exp7.json OK
|
|
||||||
+ exp8.json OK
|
|
||||||
+ expPowerOf256Of256_0.json OK
|
|
||||||
+ expPowerOf256Of256_1.json OK
|
|
||||||
+ expPowerOf256Of256_10.json OK
|
|
||||||
+ expPowerOf256Of256_11.json OK
|
|
||||||
+ expPowerOf256Of256_12.json OK
|
|
||||||
+ expPowerOf256Of256_13.json OK
|
|
||||||
+ expPowerOf256Of256_14.json OK
|
|
||||||
+ expPowerOf256Of256_15.json OK
|
|
||||||
+ expPowerOf256Of256_16.json OK
|
|
||||||
+ expPowerOf256Of256_17.json OK
|
|
||||||
+ expPowerOf256Of256_18.json OK
|
|
||||||
+ expPowerOf256Of256_19.json OK
|
|
||||||
+ expPowerOf256Of256_2.json OK
|
|
||||||
+ expPowerOf256Of256_20.json OK
|
|
||||||
+ expPowerOf256Of256_21.json OK
|
|
||||||
+ expPowerOf256Of256_22.json OK
|
|
||||||
+ expPowerOf256Of256_23.json OK
|
|
||||||
+ expPowerOf256Of256_24.json OK
|
|
||||||
+ expPowerOf256Of256_25.json OK
|
|
||||||
+ expPowerOf256Of256_26.json OK
|
|
||||||
+ expPowerOf256Of256_27.json OK
|
|
||||||
+ expPowerOf256Of256_28.json OK
|
|
||||||
+ expPowerOf256Of256_29.json OK
|
|
||||||
+ expPowerOf256Of256_3.json OK
|
|
||||||
+ expPowerOf256Of256_30.json OK
|
|
||||||
+ expPowerOf256Of256_31.json OK
|
|
||||||
+ expPowerOf256Of256_32.json OK
|
|
||||||
+ expPowerOf256Of256_33.json OK
|
|
||||||
+ expPowerOf256Of256_4.json OK
|
|
||||||
+ expPowerOf256Of256_5.json OK
|
|
||||||
+ expPowerOf256Of256_6.json OK
|
|
||||||
+ expPowerOf256Of256_7.json OK
|
|
||||||
+ expPowerOf256Of256_8.json OK
|
|
||||||
+ expPowerOf256Of256_9.json OK
|
|
||||||
+ expPowerOf256_1.json OK
|
|
||||||
+ expPowerOf256_10.json OK
|
|
||||||
+ expPowerOf256_11.json OK
|
|
||||||
+ expPowerOf256_12.json OK
|
|
||||||
+ expPowerOf256_13.json OK
|
|
||||||
+ expPowerOf256_14.json OK
|
|
||||||
+ expPowerOf256_15.json OK
|
|
||||||
+ expPowerOf256_16.json OK
|
|
||||||
+ expPowerOf256_17.json OK
|
|
||||||
+ expPowerOf256_18.json OK
|
|
||||||
+ expPowerOf256_19.json OK
|
|
||||||
+ expPowerOf256_2.json OK
|
|
||||||
+ expPowerOf256_20.json OK
|
|
||||||
+ expPowerOf256_21.json OK
|
|
||||||
+ expPowerOf256_22.json OK
|
|
||||||
+ expPowerOf256_23.json OK
|
|
||||||
+ expPowerOf256_24.json OK
|
|
||||||
+ expPowerOf256_25.json OK
|
|
||||||
+ expPowerOf256_26.json OK
|
|
||||||
+ expPowerOf256_27.json OK
|
|
||||||
+ expPowerOf256_28.json OK
|
|
||||||
+ expPowerOf256_29.json OK
|
|
||||||
+ expPowerOf256_3.json OK
|
|
||||||
+ expPowerOf256_30.json OK
|
|
||||||
+ expPowerOf256_31.json OK
|
|
||||||
+ expPowerOf256_32.json OK
|
|
||||||
+ expPowerOf256_33.json OK
|
|
||||||
+ expPowerOf256_4.json OK
|
|
||||||
+ expPowerOf256_5.json OK
|
|
||||||
+ expPowerOf256_6.json OK
|
|
||||||
+ expPowerOf256_7.json OK
|
|
||||||
+ expPowerOf256_8.json OK
|
|
||||||
+ expPowerOf256_9.json OK
|
|
||||||
+ expPowerOf2_128.json OK
|
|
||||||
+ expPowerOf2_16.json OK
|
|
||||||
+ expPowerOf2_2.json OK
|
|
||||||
+ expPowerOf2_256.json OK
|
|
||||||
+ expPowerOf2_32.json OK
|
|
||||||
+ expPowerOf2_4.json OK
|
|
||||||
+ expPowerOf2_64.json OK
|
|
||||||
+ expPowerOf2_8.json OK
|
|
||||||
+ expXY.json OK
|
|
||||||
+ expXY_success.json OK
|
|
||||||
+ fibbonacci_unrolled.json OK
|
|
||||||
+ mod0.json OK
|
|
||||||
+ mod1.json OK
|
|
||||||
+ mod2.json OK
|
|
||||||
+ mod3.json OK
|
|
||||||
+ mod4.json OK
|
|
||||||
+ modByZero.json OK
|
|
||||||
+ mul0.json OK
|
|
||||||
+ mul1.json OK
|
|
||||||
+ mul2.json OK
|
|
||||||
+ mul3.json OK
|
|
||||||
+ mul4.json OK
|
|
||||||
+ mul5.json OK
|
|
||||||
+ mul6.json OK
|
|
||||||
+ mul7.json OK
|
|
||||||
+ mulUnderFlow.json OK
|
|
||||||
+ mulmod0.json OK
|
|
||||||
+ mulmod1.json OK
|
|
||||||
+ mulmod1_overflow.json OK
|
|
||||||
+ mulmod1_overflow2.json OK
|
|
||||||
+ mulmod1_overflow3.json OK
|
|
||||||
+ mulmod1_overflow4.json OK
|
|
||||||
+ mulmod2.json OK
|
|
||||||
+ mulmod2_0.json OK
|
|
||||||
+ mulmod2_1.json OK
|
|
||||||
+ mulmod3.json OK
|
|
||||||
+ mulmod3_0.json OK
|
|
||||||
+ mulmod4.json OK
|
|
||||||
+ mulmoddivByZero.json OK
|
|
||||||
+ mulmoddivByZero1.json OK
|
|
||||||
+ mulmoddivByZero2.json OK
|
|
||||||
+ mulmoddivByZero3.json OK
|
|
||||||
+ not1.json OK
|
|
||||||
+ sdiv0.json OK
|
|
||||||
+ sdiv1.json OK
|
|
||||||
+ sdiv2.json OK
|
|
||||||
+ sdiv3.json OK
|
|
||||||
+ sdiv4.json OK
|
|
||||||
+ sdiv5.json OK
|
|
||||||
+ sdiv6.json OK
|
|
||||||
+ sdiv7.json OK
|
|
||||||
+ sdiv8.json OK
|
|
||||||
+ sdiv9.json OK
|
|
||||||
+ sdivByZero0.json OK
|
|
||||||
+ sdivByZero1.json OK
|
|
||||||
+ sdivByZero2.json OK
|
|
||||||
+ sdiv_dejavu.json OK
|
|
||||||
+ sdiv_i256min.json OK
|
|
||||||
+ sdiv_i256min2.json OK
|
|
||||||
+ sdiv_i256min3.json OK
|
|
||||||
+ signextendInvalidByteNumber.json OK
|
|
||||||
+ signextend_00.json OK
|
|
||||||
+ signextend_0_BigByte.json OK
|
|
||||||
+ signextend_AlmostBiggestByte.json OK
|
|
||||||
+ signextend_BigByteBigByte.json OK
|
|
||||||
+ signextend_BigBytePlus1_2.json OK
|
|
||||||
+ signextend_BigByte_0.json OK
|
|
||||||
+ signextend_BitIsNotSet.json OK
|
|
||||||
+ signextend_BitIsNotSetInHigherByte.json OK
|
|
||||||
+ signextend_BitIsSetInHigherByte.json OK
|
|
||||||
+ signextend_Overflow_dj42.json OK
|
|
||||||
+ signextend_bigBytePlus1.json OK
|
|
||||||
+ signextend_bitIsSet.json OK
|
|
||||||
+ smod0.json OK
|
|
||||||
+ smod1.json OK
|
|
||||||
+ smod2.json OK
|
|
||||||
+ smod3.json OK
|
|
||||||
+ smod4.json OK
|
|
||||||
+ smod5.json OK
|
|
||||||
+ smod6.json OK
|
|
||||||
+ smod7.json OK
|
|
||||||
+ smod8_byZero.json OK
|
|
||||||
+ smod_i256min1.json OK
|
|
||||||
+ smod_i256min2.json OK
|
|
||||||
+ stop.json OK
|
|
||||||
+ sub0.json OK
|
|
||||||
+ sub1.json OK
|
|
||||||
+ sub2.json OK
|
|
||||||
+ sub3.json OK
|
|
||||||
+ sub4.json OK
|
|
||||||
```
|
|
||||||
OK: 196/196 Fail: 0/196 Skip: 0/196
|
|
||||||
## vmBitwiseLogicOperation
|
|
||||||
```diff
|
|
||||||
+ and0.json OK
|
|
||||||
+ and1.json OK
|
|
||||||
+ and2.json OK
|
|
||||||
+ and3.json OK
|
|
||||||
+ and4.json OK
|
|
||||||
+ and5.json OK
|
|
||||||
+ byte0.json OK
|
|
||||||
+ byte1.json OK
|
|
||||||
+ byte10.json OK
|
|
||||||
+ byte11.json OK
|
|
||||||
+ byte2.json OK
|
|
||||||
+ byte3.json OK
|
|
||||||
+ byte4.json OK
|
|
||||||
+ byte5.json OK
|
|
||||||
+ byte6.json OK
|
|
||||||
+ byte7.json OK
|
|
||||||
+ byte8.json OK
|
|
||||||
+ byte9.json OK
|
|
||||||
+ byteBN.json OK
|
|
||||||
+ eq0.json OK
|
|
||||||
+ eq1.json OK
|
|
||||||
+ eq2.json OK
|
|
||||||
+ gt0.json OK
|
|
||||||
+ gt1.json OK
|
|
||||||
+ gt2.json OK
|
|
||||||
+ gt3.json OK
|
|
||||||
+ iszeo2.json OK
|
|
||||||
+ iszero0.json OK
|
|
||||||
+ iszero1.json OK
|
|
||||||
+ lt0.json OK
|
|
||||||
+ lt1.json OK
|
|
||||||
+ lt2.json OK
|
|
||||||
+ lt3.json OK
|
|
||||||
+ not0.json OK
|
|
||||||
+ not1.json OK
|
|
||||||
+ not2.json OK
|
|
||||||
+ not3.json OK
|
|
||||||
+ not4.json OK
|
|
||||||
+ not5.json OK
|
|
||||||
+ or0.json OK
|
|
||||||
+ or1.json OK
|
|
||||||
+ or2.json OK
|
|
||||||
+ or3.json OK
|
|
||||||
+ or4.json OK
|
|
||||||
+ or5.json OK
|
|
||||||
+ sgt0.json OK
|
|
||||||
+ sgt1.json OK
|
|
||||||
+ sgt2.json OK
|
|
||||||
+ sgt3.json OK
|
|
||||||
+ sgt4.json OK
|
|
||||||
+ slt0.json OK
|
|
||||||
+ slt1.json OK
|
|
||||||
+ slt2.json OK
|
|
||||||
+ slt3.json OK
|
|
||||||
+ slt4.json OK
|
|
||||||
+ xor0.json OK
|
|
||||||
+ xor1.json OK
|
|
||||||
+ xor2.json OK
|
|
||||||
+ xor3.json OK
|
|
||||||
+ xor4.json OK
|
|
||||||
+ xor5.json OK
|
|
||||||
```
|
|
||||||
OK: 61/61 Fail: 0/61 Skip: 0/61
|
|
||||||
## vmBlockInfoTest
|
|
||||||
```diff
|
|
||||||
+ coinbase.json OK
|
|
||||||
+ difficulty.json OK
|
|
||||||
+ gaslimit.json OK
|
|
||||||
+ number.json OK
|
|
||||||
+ timestamp.json OK
|
|
||||||
```
|
|
||||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
|
||||||
## vmEnvironmentalInfo
|
|
||||||
```diff
|
|
||||||
+ address0.json OK
|
|
||||||
+ address1.json OK
|
|
||||||
+ calldatacopy0.json OK
|
|
||||||
+ calldatacopy0_return.json OK
|
|
||||||
+ calldatacopy1.json OK
|
|
||||||
+ calldatacopy1_return.json OK
|
|
||||||
+ calldatacopy2.json OK
|
|
||||||
+ calldatacopy2_return.json OK
|
|
||||||
+ calldatacopyUnderFlow.json OK
|
|
||||||
+ calldatacopyZeroMemExpansion.json OK
|
|
||||||
+ calldatacopyZeroMemExpansion_return.json OK
|
|
||||||
+ calldatacopy_DataIndexTooHigh.json OK
|
|
||||||
+ calldatacopy_DataIndexTooHigh2.json OK
|
|
||||||
+ calldatacopy_DataIndexTooHigh2_return.json OK
|
|
||||||
+ calldatacopy_DataIndexTooHigh_return.json OK
|
|
||||||
+ calldatacopy_sec.json OK
|
|
||||||
+ calldataload0.json OK
|
|
||||||
+ calldataload1.json OK
|
|
||||||
+ calldataload2.json OK
|
|
||||||
+ calldataloadSizeTooHigh.json OK
|
|
||||||
+ calldataloadSizeTooHighPartial.json OK
|
|
||||||
+ calldataload_BigOffset.json OK
|
|
||||||
+ calldatasize0.json OK
|
|
||||||
+ calldatasize1.json OK
|
|
||||||
+ calldatasize2.json OK
|
|
||||||
+ caller.json OK
|
|
||||||
+ callvalue.json OK
|
|
||||||
+ codecopy0.json OK
|
|
||||||
+ codecopyZeroMemExpansion.json OK
|
|
||||||
+ codecopy_DataIndexTooHigh.json OK
|
|
||||||
+ codesize.json OK
|
|
||||||
+ gasprice.json OK
|
|
||||||
+ origin.json OK
|
|
||||||
```
|
|
||||||
OK: 33/33 Fail: 0/33 Skip: 0/33
|
|
||||||
## vmIOandFlowOperations
|
|
||||||
```diff
|
|
||||||
+ BlockNumberDynamicJump0_AfterJumpdest.json OK
|
|
||||||
+ BlockNumberDynamicJump0_AfterJumpdest3.json OK
|
|
||||||
+ BlockNumberDynamicJump0_foreverOutOfGas.json OK
|
|
||||||
+ BlockNumberDynamicJump0_jumpdest0.json OK
|
|
||||||
+ BlockNumberDynamicJump0_jumpdest2.json OK
|
|
||||||
+ BlockNumberDynamicJump0_withoutJumpdest.json OK
|
|
||||||
+ BlockNumberDynamicJump1.json OK
|
|
||||||
+ BlockNumberDynamicJumpInsidePushWithJumpDest.json OK
|
|
||||||
+ BlockNumberDynamicJumpInsidePushWithoutJumpDest.json OK
|
|
||||||
+ BlockNumberDynamicJumpi0.json OK
|
|
||||||
+ BlockNumberDynamicJumpi1.json OK
|
|
||||||
+ BlockNumberDynamicJumpi1_jumpdest.json OK
|
|
||||||
+ BlockNumberDynamicJumpiAfterStop.json OK
|
|
||||||
+ BlockNumberDynamicJumpiOutsideBoundary.json OK
|
|
||||||
+ BlockNumberDynamicJumpifInsidePushWithJumpDest.json OK
|
|
||||||
+ BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json OK
|
|
||||||
+ DyanmicJump0_outOfBoundary.json OK
|
|
||||||
+ DynamicJump0_AfterJumpdest.json OK
|
|
||||||
+ DynamicJump0_AfterJumpdest3.json OK
|
|
||||||
+ DynamicJump0_foreverOutOfGas.json OK
|
|
||||||
+ DynamicJump0_jumpdest0.json OK
|
|
||||||
+ DynamicJump0_jumpdest2.json OK
|
|
||||||
+ DynamicJump0_withoutJumpdest.json OK
|
|
||||||
+ DynamicJump1.json OK
|
|
||||||
+ DynamicJumpAfterStop.json OK
|
|
||||||
+ DynamicJumpInsidePushWithJumpDest.json OK
|
|
||||||
+ DynamicJumpInsidePushWithoutJumpDest.json OK
|
|
||||||
+ DynamicJumpJD_DependsOnJumps0.json OK
|
|
||||||
+ DynamicJumpJD_DependsOnJumps1.json OK
|
|
||||||
+ DynamicJumpPathologicalTest0.json OK
|
|
||||||
+ DynamicJumpPathologicalTest1.json OK
|
|
||||||
+ DynamicJumpPathologicalTest2.json OK
|
|
||||||
+ DynamicJumpPathologicalTest3.json OK
|
|
||||||
+ DynamicJumpStartWithJumpDest.json OK
|
|
||||||
+ DynamicJump_value1.json OK
|
|
||||||
+ DynamicJump_value2.json OK
|
|
||||||
+ DynamicJump_value3.json OK
|
|
||||||
+ DynamicJump_valueUnderflow.json OK
|
|
||||||
+ DynamicJumpi0.json OK
|
|
||||||
+ DynamicJumpi1.json OK
|
|
||||||
+ DynamicJumpi1_jumpdest.json OK
|
|
||||||
+ DynamicJumpiAfterStop.json OK
|
|
||||||
+ DynamicJumpiOutsideBoundary.json OK
|
|
||||||
+ DynamicJumpifInsidePushWithJumpDest.json OK
|
|
||||||
+ DynamicJumpifInsidePushWithoutJumpDest.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_AfterJumpdest.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_AfterJumpdest3.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_foreverOutOfGas.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_jumpdest0.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_jumpdest2.json OK
|
|
||||||
+ JDfromStorageDynamicJump0_withoutJumpdest.json OK
|
|
||||||
+ JDfromStorageDynamicJump1.json OK
|
|
||||||
+ JDfromStorageDynamicJumpInsidePushWithJumpDest.json OK
|
|
||||||
+ JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json OK
|
|
||||||
+ JDfromStorageDynamicJumpi0.json OK
|
|
||||||
+ JDfromStorageDynamicJumpi1.json OK
|
|
||||||
+ JDfromStorageDynamicJumpi1_jumpdest.json OK
|
|
||||||
+ JDfromStorageDynamicJumpiAfterStop.json OK
|
|
||||||
+ JDfromStorageDynamicJumpiOutsideBoundary.json OK
|
|
||||||
+ JDfromStorageDynamicJumpifInsidePushWithJumpDest.json OK
|
|
||||||
+ JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json OK
|
|
||||||
+ bad_indirect_jump1.json OK
|
|
||||||
+ bad_indirect_jump2.json OK
|
|
||||||
+ byte1.json OK
|
|
||||||
+ calldatacopyMemExp.json OK
|
|
||||||
+ codecopyMemExp.json OK
|
|
||||||
+ deadCode_1.json OK
|
|
||||||
+ dupAt51becameMload.json OK
|
|
||||||
+ for_loop1.json OK
|
|
||||||
+ for_loop2.json OK
|
|
||||||
+ gas0.json OK
|
|
||||||
+ gas1.json OK
|
|
||||||
+ gasOverFlow.json OK
|
|
||||||
+ indirect_jump1.json OK
|
|
||||||
+ indirect_jump2.json OK
|
|
||||||
+ indirect_jump3.json OK
|
|
||||||
+ indirect_jump4.json OK
|
|
||||||
+ jump0_AfterJumpdest.json OK
|
|
||||||
+ jump0_AfterJumpdest3.json OK
|
|
||||||
+ jump0_foreverOutOfGas.json OK
|
|
||||||
+ jump0_jumpdest0.json OK
|
|
||||||
+ jump0_jumpdest2.json OK
|
|
||||||
+ jump0_outOfBoundary.json OK
|
|
||||||
+ jump0_withoutJumpdest.json OK
|
|
||||||
+ jump1.json OK
|
|
||||||
+ jumpAfterStop.json OK
|
|
||||||
+ jumpDynamicJumpSameDest.json OK
|
|
||||||
+ jumpHigh.json OK
|
|
||||||
+ jumpInsidePushWithJumpDest.json OK
|
|
||||||
+ jumpInsidePushWithoutJumpDest.json OK
|
|
||||||
+ jumpOntoJump.json OK
|
|
||||||
+ jumpTo1InstructionafterJump.json OK
|
|
||||||
+ jumpTo1InstructionafterJump_jumpdestFirstInstruction.json OK
|
|
||||||
+ jumpTo1InstructionafterJump_noJumpDest.json OK
|
|
||||||
+ jumpToUint64maxPlus1.json OK
|
|
||||||
+ jumpToUintmaxPlus1.json OK
|
|
||||||
+ jumpdestBigList.json OK
|
|
||||||
+ jumpi0.json OK
|
|
||||||
+ jumpi1.json OK
|
|
||||||
+ jumpi1_jumpdest.json OK
|
|
||||||
+ jumpiAfterStop.json OK
|
|
||||||
+ jumpiOutsideBoundary.json OK
|
|
||||||
+ jumpiToUint64maxPlus1.json OK
|
|
||||||
+ jumpiToUintmaxPlus1.json OK
|
|
||||||
+ jumpi_at_the_end.json OK
|
|
||||||
+ jumpifInsidePushWithJumpDest.json OK
|
|
||||||
+ jumpifInsidePushWithoutJumpDest.json OK
|
|
||||||
+ kv1.json OK
|
|
||||||
+ log1MemExp.json OK
|
|
||||||
+ loop_stacklimit_1020.json OK
|
|
||||||
+ loop_stacklimit_1021.json OK
|
|
||||||
+ memory1.json OK
|
|
||||||
+ mloadError0.json OK
|
|
||||||
+ mloadError1.json OK
|
|
||||||
+ mloadMemExp.json OK
|
|
||||||
+ mloadOutOfGasError2.json OK
|
|
||||||
+ msize0.json OK
|
|
||||||
+ msize1.json OK
|
|
||||||
+ msize2.json OK
|
|
||||||
+ msize3.json OK
|
|
||||||
+ mstore0.json OK
|
|
||||||
+ mstore1.json OK
|
|
||||||
+ mstore8MemExp.json OK
|
|
||||||
+ mstore8WordToBigError.json OK
|
|
||||||
+ mstore8_0.json OK
|
|
||||||
+ mstore8_1.json OK
|
|
||||||
+ mstoreMemExp.json OK
|
|
||||||
+ mstoreWordToBigError.json OK
|
|
||||||
+ mstore_mload0.json OK
|
|
||||||
+ pc0.json OK
|
|
||||||
+ pc1.json OK
|
|
||||||
+ pop0.json OK
|
|
||||||
+ pop1.json OK
|
|
||||||
+ return1.json OK
|
|
||||||
+ return2.json OK
|
|
||||||
+ sha3MemExp.json OK
|
|
||||||
+ sstore_load_0.json OK
|
|
||||||
+ sstore_load_1.json OK
|
|
||||||
+ sstore_load_2.json OK
|
|
||||||
+ sstore_underflow.json OK
|
|
||||||
+ stack_loop.json OK
|
|
||||||
+ stackjump1.json OK
|
|
||||||
+ swapAt52becameMstore.json OK
|
|
||||||
+ when.json OK
|
|
||||||
```
|
|
||||||
OK: 144/144 Fail: 0/144 Skip: 0/144
|
|
||||||
## vmLogTest
|
|
||||||
```diff
|
|
||||||
+ log0_emptyMem.json OK
|
|
||||||
+ log0_logMemStartTooHigh.json OK
|
|
||||||
+ log0_logMemsizeTooHigh.json OK
|
|
||||||
+ log0_logMemsizeZero.json OK
|
|
||||||
+ log0_nonEmptyMem.json OK
|
|
||||||
+ log0_nonEmptyMem_logMemSize1.json OK
|
|
||||||
+ log0_nonEmptyMem_logMemSize1_logMemStart31.json OK
|
|
||||||
+ log1_Caller.json OK
|
|
||||||
+ log1_MaxTopic.json OK
|
|
||||||
+ log1_emptyMem.json OK
|
|
||||||
+ log1_logMemStartTooHigh.json OK
|
|
||||||
+ log1_logMemsizeTooHigh.json OK
|
|
||||||
+ log1_logMemsizeZero.json OK
|
|
||||||
+ log1_nonEmptyMem.json OK
|
|
||||||
+ log1_nonEmptyMem_logMemSize1.json OK
|
|
||||||
+ log1_nonEmptyMem_logMemSize1_logMemStart31.json OK
|
|
||||||
+ log2_Caller.json OK
|
|
||||||
+ log2_MaxTopic.json OK
|
|
||||||
+ log2_emptyMem.json OK
|
|
||||||
+ log2_logMemStartTooHigh.json OK
|
|
||||||
+ log2_logMemsizeTooHigh.json OK
|
|
||||||
+ log2_logMemsizeZero.json OK
|
|
||||||
+ log2_nonEmptyMem.json OK
|
|
||||||
+ log2_nonEmptyMem_logMemSize1.json OK
|
|
||||||
+ log2_nonEmptyMem_logMemSize1_logMemStart31.json OK
|
|
||||||
+ log3_Caller.json OK
|
|
||||||
+ log3_MaxTopic.json OK
|
|
||||||
+ log3_PC.json OK
|
|
||||||
+ log3_emptyMem.json OK
|
|
||||||
+ log3_logMemStartTooHigh.json OK
|
|
||||||
+ log3_logMemsizeTooHigh.json OK
|
|
||||||
+ log3_logMemsizeZero.json OK
|
|
||||||
+ log3_nonEmptyMem.json OK
|
|
||||||
+ log3_nonEmptyMem_logMemSize1.json OK
|
|
||||||
+ log3_nonEmptyMem_logMemSize1_logMemStart31.json OK
|
|
||||||
+ log4_Caller.json OK
|
|
||||||
+ log4_MaxTopic.json OK
|
|
||||||
+ log4_PC.json OK
|
|
||||||
+ log4_emptyMem.json OK
|
|
||||||
+ log4_logMemStartTooHigh.json OK
|
|
||||||
+ log4_logMemsizeTooHigh.json OK
|
|
||||||
+ log4_logMemsizeZero.json OK
|
|
||||||
+ log4_nonEmptyMem.json OK
|
|
||||||
+ log4_nonEmptyMem_logMemSize1.json OK
|
|
||||||
+ log4_nonEmptyMem_logMemSize1_logMemStart31.json OK
|
|
||||||
+ log_2logs.json OK
|
|
||||||
```
|
|
||||||
OK: 46/46 Fail: 0/46 Skip: 0/46
|
|
||||||
## vmPerformance
|
|
||||||
```diff
|
|
||||||
+ ackermann31.json OK
|
|
||||||
+ ackermann32.json OK
|
|
||||||
+ ackermann33.json OK
|
|
||||||
+ fibonacci10.json OK
|
|
||||||
+ fibonacci16.json OK
|
|
||||||
loop-add-10M.json Skip
|
|
||||||
loop-divadd-10M.json Skip
|
|
||||||
loop-divadd-unr100-10M.json Skip
|
|
||||||
loop-exp-16b-100k.json Skip
|
|
||||||
loop-exp-1b-1M.json Skip
|
|
||||||
loop-exp-2b-100k.json Skip
|
|
||||||
loop-exp-32b-100k.json Skip
|
|
||||||
loop-exp-4b-100k.json Skip
|
|
||||||
loop-exp-8b-100k.json Skip
|
|
||||||
loop-exp-nop-1M.json Skip
|
|
||||||
loop-mul.json Skip
|
|
||||||
loop-mulmod-2M.json Skip
|
|
||||||
+ manyFunctions100.json OK
|
|
||||||
```
|
|
||||||
OK: 6/18 Fail: 0/18 Skip: 12/18
|
|
||||||
## vmPushDupSwapTest
|
|
||||||
```diff
|
|
||||||
+ dup1.json OK
|
|
||||||
+ dup10.json OK
|
|
||||||
+ dup11.json OK
|
|
||||||
+ dup12.json OK
|
|
||||||
+ dup13.json OK
|
|
||||||
+ dup14.json OK
|
|
||||||
+ dup15.json OK
|
|
||||||
+ dup16.json OK
|
|
||||||
+ dup2.json OK
|
|
||||||
+ dup2error.json OK
|
|
||||||
+ dup3.json OK
|
|
||||||
+ dup4.json OK
|
|
||||||
+ dup5.json OK
|
|
||||||
+ dup6.json OK
|
|
||||||
+ dup7.json OK
|
|
||||||
+ dup8.json OK
|
|
||||||
+ dup9.json OK
|
|
||||||
+ push1.json OK
|
|
||||||
+ push10.json OK
|
|
||||||
+ push11.json OK
|
|
||||||
+ push12.json OK
|
|
||||||
+ push13.json OK
|
|
||||||
+ push14.json OK
|
|
||||||
+ push15.json OK
|
|
||||||
+ push16.json OK
|
|
||||||
+ push17.json OK
|
|
||||||
+ push18.json OK
|
|
||||||
+ push19.json OK
|
|
||||||
+ push1_missingStack.json OK
|
|
||||||
+ push2.json OK
|
|
||||||
+ push20.json OK
|
|
||||||
+ push21.json OK
|
|
||||||
+ push22.json OK
|
|
||||||
+ push23.json OK
|
|
||||||
+ push24.json OK
|
|
||||||
+ push25.json OK
|
|
||||||
+ push26.json OK
|
|
||||||
+ push27.json OK
|
|
||||||
+ push28.json OK
|
|
||||||
+ push29.json OK
|
|
||||||
+ push3.json OK
|
|
||||||
+ push30.json OK
|
|
||||||
+ push31.json OK
|
|
||||||
+ push32.json OK
|
|
||||||
+ push32AndSuicide.json OK
|
|
||||||
+ push32FillUpInputWithZerosAtTheEnd.json OK
|
|
||||||
+ push32Undefined.json OK
|
|
||||||
+ push32Undefined2.json OK
|
|
||||||
+ push32Undefined3.json OK
|
|
||||||
+ push33.json OK
|
|
||||||
+ push4.json OK
|
|
||||||
+ push5.json OK
|
|
||||||
+ push6.json OK
|
|
||||||
+ push7.json OK
|
|
||||||
+ push8.json OK
|
|
||||||
+ push9.json OK
|
|
||||||
+ swap1.json OK
|
|
||||||
+ swap10.json OK
|
|
||||||
+ swap11.json OK
|
|
||||||
+ swap12.json OK
|
|
||||||
+ swap13.json OK
|
|
||||||
+ swap14.json OK
|
|
||||||
+ swap15.json OK
|
|
||||||
+ swap16.json OK
|
|
||||||
+ swap2.json OK
|
|
||||||
+ swap2error.json OK
|
|
||||||
+ swap3.json OK
|
|
||||||
+ swap4.json OK
|
|
||||||
+ swap5.json OK
|
|
||||||
+ swap6.json OK
|
|
||||||
+ swap7.json OK
|
|
||||||
+ swap8.json OK
|
|
||||||
+ swap9.json OK
|
|
||||||
+ swapjump1.json OK
|
|
||||||
```
|
|
||||||
OK: 74/74 Fail: 0/74 Skip: 0/74
|
|
||||||
## vmRandomTest
|
|
||||||
```diff
|
|
||||||
+ 201503102320PYTHON.json OK
|
|
||||||
+ 201503110206PYTHON.json OK
|
|
||||||
+ 201503110219PYTHON.json OK
|
|
||||||
+ 201503110346PYTHON_PUSH24.json OK
|
|
||||||
+ 201503111844PYTHON.json OK
|
|
||||||
+ 201503112218PYTHON.json OK
|
|
||||||
```
|
|
||||||
OK: 6/6 Fail: 0/6 Skip: 0/6
|
|
||||||
## vmSha3Test
|
|
||||||
```diff
|
|
||||||
+ sha3_0.json OK
|
|
||||||
+ sha3_1.json OK
|
|
||||||
+ sha3_2.json OK
|
|
||||||
+ sha3_3.json OK
|
|
||||||
+ sha3_4.json OK
|
|
||||||
+ sha3_5.json OK
|
|
||||||
+ 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 OK
|
|
||||||
+ sha3_memSizeQuadraticCost33.json OK
|
|
||||||
+ sha3_memSizeQuadraticCost63.json OK
|
|
||||||
+ sha3_memSizeQuadraticCost64.json OK
|
|
||||||
+ sha3_memSizeQuadraticCost64_2.json OK
|
|
||||||
+ sha3_memSizeQuadraticCost65.json OK
|
|
||||||
```
|
|
||||||
OK: 18/18 Fail: 0/18 Skip: 0/18
|
|
||||||
## vmSystemOperations
|
|
||||||
```diff
|
|
||||||
+ TestNameRegistrator.json OK
|
|
||||||
+ return0.json OK
|
|
||||||
+ return1.json OK
|
|
||||||
+ return2.json OK
|
|
||||||
+ suicide0.json OK
|
|
||||||
+ suicideNotExistingAccount.json OK
|
|
||||||
+ suicideSendEtherToMe.json OK
|
|
||||||
```
|
|
||||||
OK: 7/7 Fail: 0/7 Skip: 0/7
|
|
||||||
## vmTests
|
|
||||||
```diff
|
|
||||||
+ suicide.json OK
|
|
||||||
```
|
|
||||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
|
||||||
|
|
||||||
---TOTAL---
|
|
||||||
OK: 597/609 Fail: 0/609 Skip: 12/609
|
|
|
@ -95,7 +95,6 @@ cliBuilder:
|
||||||
./test_memory,
|
./test_memory,
|
||||||
./test_stack,
|
./test_stack,
|
||||||
./test_genesis,
|
./test_genesis,
|
||||||
./test_vm_json,
|
|
||||||
./test_precompiles,
|
./test_precompiles,
|
||||||
./test_generalstate_json,
|
./test_generalstate_json,
|
||||||
./test_tracer_json,
|
./test_tracer_json,
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
# Nimbus
|
|
||||||
# Copyright (c) 2018 Status Research & Development GmbH
|
|
||||||
# Licensed under either of
|
|
||||||
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
|
|
||||||
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
import
|
|
||||||
unittest2, strformat, strutils, tables, json, os, times, sequtils,
|
|
||||||
stew/byteutils, eth/[rlp, common], eth/trie/db,
|
|
||||||
./test_helpers, ./test_allowed_to_fail, ../nimbus/vm_internals,
|
|
||||||
../nimbus/[constants, vm_state, vm_types, utils],
|
|
||||||
../nimbus/db/[db_chain],
|
|
||||||
../nimbus/transaction/call_evm
|
|
||||||
|
|
||||||
func bytesToHex(x: openarray[byte]): string {.inline.} =
|
|
||||||
## TODO: use seq[byte] for raw data and delete this proc
|
|
||||||
foldl(x, a & b.int.toHex(2).toLowerAscii, "0x")
|
|
||||||
|
|
||||||
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus)
|
|
||||||
|
|
||||||
proc vmJsonMain*() =
|
|
||||||
suite "vm json tests":
|
|
||||||
jsonTest("eth_tests" / "VMTests", "VMTests", testFixture, skipVMTests)
|
|
||||||
|
|
||||||
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) =
|
|
||||||
var fixture: JsonNode
|
|
||||||
for label, child in fixtures:
|
|
||||||
fixture = child
|
|
||||||
break
|
|
||||||
|
|
||||||
let fenv = fixture["env"]
|
|
||||||
var emptyRlpHash = keccakHash(rlp.encode(""))
|
|
||||||
let header = BlockHeader(
|
|
||||||
coinbase: fenv{"currentCoinbase"}.getStr.parseAddress,
|
|
||||||
difficulty: fromHex(UInt256, fenv{"currentDifficulty"}.getStr),
|
|
||||||
blockNumber: fenv{"currentNumber"}.getHexadecimalInt.u256,
|
|
||||||
gasLimit: fenv{"currentGasLimit"}.getHexadecimalInt.GasInt,
|
|
||||||
timestamp: fenv{"currentTimestamp"}.getHexadecimalInt.int64.fromUnix,
|
|
||||||
stateRoot: emptyRlpHash
|
|
||||||
)
|
|
||||||
|
|
||||||
var vmState = newBaseVMState(emptyRlpHash, header, newBaseChainDB(newMemoryDB()))
|
|
||||||
let fexec = fixture["exec"]
|
|
||||||
vmState.mutateStateDB:
|
|
||||||
setupStateDB(fixture{"pre"}, db)
|
|
||||||
|
|
||||||
var call: RpcCallData
|
|
||||||
let toAddress = fexec{"address"}.getStr.parseAddress
|
|
||||||
let origin = fexec{"origin"}.getStr.parseAddress
|
|
||||||
|
|
||||||
call.source = fexec{"caller"}.getStr.parseAddress
|
|
||||||
call.to = toAddress
|
|
||||||
call.gas = fexec{"gas"}.getHexadecimalInt
|
|
||||||
call.gasPrice = fexec{"gasPrice"}.getHexadecimalInt
|
|
||||||
# Cast workaround for negative value
|
|
||||||
call.value = cast[uint64](fexec{"value"}.getHexadecimalInt).u256
|
|
||||||
call.data = fexec{"data"}.getStr.hexToSeqByte
|
|
||||||
# assume ZERO_ADDRESS is a contract creation
|
|
||||||
call.contractCreation = (toAddress == ZERO_ADDRESS)
|
|
||||||
|
|
||||||
var fixtureResult = fixtureCallEvm(vmState, call, origin)
|
|
||||||
|
|
||||||
if not fixture{"post"}.isNil:
|
|
||||||
# Success checks
|
|
||||||
check(not fixtureResult.isError)
|
|
||||||
if fixtureResult.isError:
|
|
||||||
echo "Computation error: ", fixtureResult.error.info
|
|
||||||
|
|
||||||
let logEntries = fixtureResult.logEntries
|
|
||||||
if not fixture{"logs"}.isNil:
|
|
||||||
let actualLogsHash = hashLogEntries(logEntries)
|
|
||||||
let expectedLogsHash = toLowerAscii(fixture{"logs"}.getStr)
|
|
||||||
check(expectedLogsHash == actualLogsHash)
|
|
||||||
elif logEntries.len > 0:
|
|
||||||
checkpoint(&"Got log entries: {logEntries}")
|
|
||||||
fail()
|
|
||||||
|
|
||||||
let expectedOutput = fixture{"out"}.getStr
|
|
||||||
check(fixtureResult.output.bytesToHex == expectedOutput)
|
|
||||||
|
|
||||||
let expectedGasRemaining = fixture{"gas"}.getHexadecimalInt
|
|
||||||
let actualGasRemaining = call.gas - fixtureResult.gasUsed
|
|
||||||
checkpoint(&"Remaining: {actualGasRemaining} - Expected: {expectedGasRemaining}")
|
|
||||||
check(actualGasRemaining == expectedGasRemaining)
|
|
||||||
|
|
||||||
if not fixture{"post"}.isNil:
|
|
||||||
verifyStateDb(fixture{"post"}, fixtureResult.vmState.readOnlyStateDB)
|
|
||||||
else:
|
|
||||||
# Error checks
|
|
||||||
check(fixtureResult.isError)
|
|
||||||
if not fixture{"pre"}.isNil:
|
|
||||||
verifyStateDb(fixture{"pre"}, fixtureResult.vmState.readOnlyStateDB)
|
|
||||||
|
|
||||||
when isMainModule:
|
|
||||||
vmJsonMain()
|
|
Loading…
Reference in New Issue