diff --git a/.gas-snapshot b/.gas-snapshot index dd8d71f30..b57bbc66a 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,310 +1,334 @@ -BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2070, μ: 320946, ~: 320946) -BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2070, μ: 678755, ~: 678755) -LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 38314) -LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 7138) -LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 7120) -LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2070, μ: 82988, ~: 82988) -LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2070, μ: 9763, ~: 10284) -LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2070, μ: 8880, ~: 9401) -LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2070, μ: 43137, ~: 42803) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160645) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57637) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 102927) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 198828) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 103113) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309524) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 708584) -LibOpAddTest:testOpAddEvalOneInput() (gas: 36567) -LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91393) -LibOpAddTest:testOpAddEvalTwoOutput() (gas: 43951) -LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30187) -LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 42969) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2070, μ: 18197, ~: 18430) -LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13866, ~: 13733) -LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13863, ~: 13730) -LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2067, μ: 52253, ~: 52499) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 207624) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57790) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58520) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58522) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57835) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30590) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34910) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43409) -LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19690, ~: 19966) -LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2070, μ: 16674, ~: 16674) -LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41568) -LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40499) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 719111) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 13746, ~: 13661) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2070, μ: 16671, ~: 16671) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18182) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35724) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45493) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41297) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30746) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40271) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 717817) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18123) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35665) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45391) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41215) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30643) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40212) -LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 13745, ~: 13660) -LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2070, μ: 16628, ~: 16628) -LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2070, μ: 50919, ~: 50694) -LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35137) -LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31438) -LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30429) -LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19649, ~: 19896) -LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2070, μ: 20844, ~: 20508) -LibOpCallTest:testCallTraceInnerOnly() (gas: 62948) -LibOpCallTest:testCallTraceOuterOnly() (gas: 45518) -LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2067, μ: 39773, ~: 38488) -LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2070, μ: 59252, ~: 59121) -LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2066, μ: 58788, ~: 59232) -LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 71868) -LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65483) -LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350171) -LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2070, μ: 46985, ~: 46985) -LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19667, ~: 19903) -LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34311) -LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2070, μ: 17123, ~: 17123) -LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31115) -LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30064) -LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56034) -LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41483) -LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 19191, ~: 19095) -LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 40149, ~: 39809) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31623) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41563) -LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2070, μ: 52247, ~: 51854) -LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30239) -LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40191) -LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 122, μ: 5755793, ~: 4747263) -LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 122, μ: 5779173, ~: 4747444) -LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 122, μ: 5755937, ~: 4747407) -LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 121, μ: 5788941, ~: 4694576) -LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 122, μ: 72044, ~: 67714) -LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2070, μ: 48179, ~: 48179) -LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 14497, ~: 14412) -LibOpContextNPTest:testOpContextNPOneInput() (gas: 41562) -LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 122, μ: 9214095, ~: 5992536) -LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 122, μ: 9358625, ~: 6117035) -LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 122, μ: 9366722, ~: 6117950) -LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46426) -LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37230) -LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36178) -LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2070, μ: 74112, ~: 85207) -LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 13744, ~: 13659) -LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2070, μ: 16698, ~: 16698) -LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41109) -LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 36981) -LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31245) -LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 35930) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 834732) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 46938) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42790) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37120) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41737) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2070, μ: 22129, ~: 22237) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2070, μ: 41483, ~: 41547) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2070, μ: 35681, ~: 35423) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2070, μ: 21009, ~: 20814) +BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2071, μ: 320946, ~: 320946) +BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2071, μ: 678755, ~: 678755) +LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 40307) +LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 7368) +LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 7350) +LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2071, μ: 83220, ~: 83220) +LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2071, μ: 9763, ~: 10284) +LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2071, μ: 8880, ~: 9401) +LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2071, μ: 43151, ~: 42827) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160717) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57663) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 102979) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 198924) +LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 103165) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309654) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 708912) +LibOpAddTest:testOpAddEvalOneInput() (gas: 36586) +LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91465) +LibOpAddTest:testOpAddEvalTwoOutput() (gas: 43969) +LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30206) +LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 42987) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 18196, ~: 18357) +LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13866, ~: 13733) +LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13863, ~: 13730) +LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2068, μ: 52190, ~: 52241) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 207724) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57816) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58544) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58546) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57861) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30609) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34929) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43427) +LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19692, ~: 19922) +LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2071, μ: 16674, ~: 16674) +LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41587) +LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40518) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 719503) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 13745, ~: 13661) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2071, μ: 16671, ~: 16671) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18194) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35743) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45512) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41316) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30765) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40290) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 718209) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18135) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35684) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45410) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41234) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30662) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40231) +LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 13744, ~: 13660) +LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2071, μ: 16628, ~: 16628) +LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2071, μ: 50946, ~: 50720) +LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35156) +LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31457) +LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30448) +LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19640, ~: 19896) +LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2071, μ: 20845, ~: 21044) +LibOpCallTest:testCallTraceInnerOnly() (gas: 62973) +LibOpCallTest:testCallTraceOuterOnly() (gas: 45543) +LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2065, μ: 39720, ~: 38502) +LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2071, μ: 59290, ~: 59043) +LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2062, μ: 58739, ~: 58864) +LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 71887) +LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65502) +LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350365) +LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2071, μ: 47011, ~: 47011) +LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19669, ~: 19925) +LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34330) +LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2071, μ: 17123, ~: 17123) +LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31134) +LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30083) +LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56058) +LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41503) +LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 19192, ~: 19095) +LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 40148, ~: 39809) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31642) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41582) +LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2071, μ: 52230, ~: 51671) +LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30258) +LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40210) +LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 123, μ: 5710793, ~: 4694395) +LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 123, μ: 5733984, ~: 4694576) +LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 123, μ: 5710937, ~: 4694539) +LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 122, μ: 5743302, ~: 4599377) +LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 123, μ: 71891, ~: 67512) +LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2071, μ: 48204, ~: 48204) +LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 14496, ~: 14412) +LibOpContextNPTest:testOpContextNPOneInput() (gas: 41581) +LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 123, μ: 8974181, ~: 5257839) +LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 123, μ: 9284452, ~: 5753062) +LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 123, μ: 9292491, ~: 5753977) +LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46445) +LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37249) +LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36197) +LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2071, μ: 74291, ~: 85258) +LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 13743, ~: 13659) +LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2071, μ: 16698, ~: 16698) +LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41128) +LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37000) +LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31264) +LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 35949) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 835187) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 46957) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42809) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37139) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41756) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2071, μ: 22131, ~: 22312) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2071, μ: 41485, ~: 41545) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2071, μ: 35681, ~: 35423) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2071, μ: 21014, ~: 20814) LibOpDivTest:testDebugOpDivRun() (gas: 13482) -LibOpDivTest:testOpDivEvalOneInput() (gas: 126203) -LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91369) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337356) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 211827) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 62993) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 295650) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 143540) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 56389) -LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41191) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30143) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40187) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2070, μ: 18248, ~: 18452) -LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13819, ~: 13686) -LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13842, ~: 13709) -LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2067, μ: 37797, ~: 33765) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 55232) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalOperandDisallowed() (gas: 18348) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoInputs() (gas: 43404) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoOutputs() (gas: 37653) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroInputs() (gas: 30899) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroOutputs() (gas: 36599) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2070, μ: 13746, ~: 13661) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPRun(address,address,uint16) (runs: 2069, μ: 23614, ~: 23614) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30669) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 34957) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44446) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18178) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2069, μ: 96884, ~: 93357) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35415) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44911) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31116) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39705) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2070, μ: 13761, ~: 13698) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2069, μ: 24201, ~: 24201) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40751) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 832020) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42013) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51760) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47586) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37034) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46582) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2070, μ: 18146, ~: 18144) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2070, μ: 41686, ~: 41753) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2070, μ: 35810, ~: 35552) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2070, μ: 21404, ~: 21212) -LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34403) -LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33928) -LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166098) -LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34603) -LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45321) -LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 111771) -LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17029) -LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29599) -LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19713, ~: 19948) -LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13810, ~: 13677) -LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39558) +LibOpDivTest:testOpDivEvalOneInput() (gas: 126279) +LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91441) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337504) +LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 211927) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63020) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 295798) +LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 143616) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 56415) +LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41209) +LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30162) +LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40205) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 18246, ~: 18425) +LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13819, ~: 13686) +LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13842, ~: 13709) +LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2068, μ: 37420, ~: 33482) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 55257) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalOperandDisallowed() (gas: 18360) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoInputs() (gas: 43424) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoOutputs() (gas: 37672) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroInputs() (gas: 30918) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroOutputs() (gas: 36618) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2071, μ: 13745, ~: 13661) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPRun(address,address,uint16) (runs: 2071, μ: 23614, ~: 23614) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30688) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 34976) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44465) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18190) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2070, μ: 96779, ~: 93200) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35434) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44930) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31135) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39723) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2071, μ: 13761, ~: 13698) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2070, μ: 24201, ~: 24201) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40769) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 832412) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42032) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51779) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47605) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37053) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46601) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2071, μ: 18138, ~: 18135) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2071, μ: 41695, ~: 41753) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2071, μ: 35810, ~: 35552) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2071, μ: 21402, ~: 21212) +LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34416) +LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33941) +LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166173) +LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34622) +LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45340) +LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 111821) +LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17041) +LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29618) +LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19713, ~: 19970) +LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13810, ~: 13677) +LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39576) LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2058, μ: 18144, ~: 18151) -LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 338912) -LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57602) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58289) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58292) -LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57625) -LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30023) -LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34334) -LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42758) -LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19671, ~: 19944) -LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2070, μ: 17542, ~: 17466) -LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41023) -LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 39932) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99717) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115288) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2067, μ: 34941, ~: 34868) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2067, μ: 53395, ~: 53408) -LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2069, μ: 117825, ~: 117621) -LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 308436) -LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57416) -LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 522269) -LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255409) -LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 475740) -LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 44959) -LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39717) -LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35309) -LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29732) -LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34279) -LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 20556, ~: 20806) -LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2070, μ: 19634, ~: 19638) -LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2070, μ: 47586, ~: 47610) -LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2070, μ: 49831, ~: 49835) -LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2070, μ: 51423, ~: 51427) -LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2070, μ: 24664, ~: 24668) -LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58536) -LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61138) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57851) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58583) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58602) -LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57872) -LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30391) -LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34712) -LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43053) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58635) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61339) -LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19684, ~: 19920) -LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2070, μ: 17418, ~: 17347) -LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41810) -LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40762) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46253) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54862) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63206) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63878) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78433) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19715, ~: 19956) -LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2067, μ: 19468, ~: 19563) -LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30800) -LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29426) -LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47248) -LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35084) -LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19651, ~: 19895) +LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339088) +LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57628) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58313) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58316) +LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57651) +LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30042) +LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34353) +LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42777) +LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19669, ~: 19873) +LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2071, μ: 17542, ~: 17466) +LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41042) +LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 39951) +LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99742) +LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115312) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2069, μ: 34971, ~: 34954) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2069, μ: 53489, ~: 53572) +LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2071, μ: 117882, ~: 117655) +LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 308586) +LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57464) +LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 522445) +LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255487) +LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 475940) +LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 44978) +LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39735) +LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35328) +LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29751) +LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34298) +LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 20555, ~: 20799) +LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2071, μ: 19634, ~: 19638) +LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2071, μ: 47586, ~: 47610) +LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2071, μ: 49831, ~: 49835) +LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2071, μ: 51423, ~: 51427) +LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2071, μ: 24664, ~: 24668) +LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58562) +LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61162) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57877) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58607) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58626) +LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57898) +LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30410) +LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34731) +LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43072) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58659) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61363) +LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19692, ~: 19923) +LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2071, μ: 17418, ~: 17347) +LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41828) +LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40780) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46279) +LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54887) +LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63230) +LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63904) +LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78457) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19705, ~: 19931) +LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2068, μ: 19468, ~: 19563) +LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30819) +LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29445) +LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58383) +LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57633) +LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19693, ~: 19928) +LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58386) +LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60875) +LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57657) +LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58340) +LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58438) +LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61099) +LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41914) +LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40030) +LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2071, μ: 17424, ~: 17353) +LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30145) +LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34435) +LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42815) +LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47274) +LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35103) +LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19639, ~: 19908) LibOpMaxUint256Test:testOpMaxUint256Run() (gas: 15997) -LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31867) -LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30772) -LibOpMaxValueTest:testOpMaxValueEval() (gas: 46864) -LibOpMaxValueTest:testOpMaxValueEvalFail() (gas: 34392) -LibOpMaxValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19646, ~: 19860) +LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31886) +LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30791) +LibOpMaxValueTest:testOpMaxValueEval() (gas: 46890) +LibOpMaxValueTest:testOpMaxValueEvalFail() (gas: 34411) +LibOpMaxValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19637, ~: 19828) LibOpMaxValueTest:testOpMaxValueRun() (gas: 16217) -LibOpMaxValueTest:testOpMaxValueTwoOutputs() (gas: 31241) -LibOpMaxValueTest:testOpMaxValueZeroOutputs() (gas: 30146) -LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13821, ~: 13688) -LibOpMulTest:testOpMulEvalOneInput() (gas: 126138) -LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91391) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 743256) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 60772) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 522537) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 54322) -LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30188) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2070, μ: 18220, ~: 18389) -LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13864, ~: 13731) -LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2067, μ: 26335, ~: 23627) -LibOpMulTest:testOpMulTwoOutputs() (gas: 40727) -LibOpMulTest:testOpMulZeroOutputs() (gas: 39681) -LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2070, μ: 17660, ~: 17665) -LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34167) -LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39804) -LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 55931) -LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78203) -LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44600) -LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258295) -LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40426) -LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29347) -LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 20440, ~: 20670) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 878214) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128017) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44422) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40306) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34581) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39231) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2070, μ: 19772, ~: 19739) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2070, μ: 35776, ~: 35518) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2070, μ: 41966, ~: 42587) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2068, μ: 16833, ~: 16833) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1053002) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128607) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 122, μ: 19630, ~: 19284) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 122, μ: 36482, ~: 36899) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 122, μ: 40260, ~: 40684) +LibOpMaxValueTest:testOpMaxValueTwoOutputs() (gas: 31260) +LibOpMaxValueTest:testOpMaxValueZeroOutputs() (gas: 30165) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 555261) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3298583) +LibOpMinTest:testOpMinEvalOneInput() (gas: 126180) +LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 58884) +LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30144) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 18275, ~: 18436) +LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13843, ~: 13710) +LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13820, ~: 13687) +LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2068, μ: 26563, ~: 26679) +LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13821, ~: 13688) +LibOpMulTest:testOpMulEvalOneInput() (gas: 126214) +LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91463) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 743606) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 60796) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 522811) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 54348) +LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30207) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 18219, ~: 18382) +LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13864, ~: 13731) +LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2068, μ: 26535, ~: 23940) +LibOpMulTest:testOpMulTwoOutputs() (gas: 40746) +LibOpMulTest:testOpMulZeroOutputs() (gas: 39700) +LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2071, μ: 17660, ~: 17665) +LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34186) +LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39822) +LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 55979) +LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78228) +LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44619) +LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258419) +LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40444) +LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29366) +LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 20440, ~: 20691) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 878718) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128089) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44441) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40325) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34600) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39250) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2070, μ: 19775, ~: 19744) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2071, μ: 35775, ~: 35518) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 41960, ~: 42486) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2069, μ: 16833, ~: 16833) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1053606) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128677) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 122, μ: 19611, ~: 19284) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 123, μ: 36467, ~: 36899) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 123, μ: 40250, ~: 40684) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2069, μ: 16836, ~: 16836) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44546) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40366) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34640) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39315) -LibOpStackNPTest:testOpStackEval() (gas: 65282) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 87120) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2070, μ: 18911, ~: 18763) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2070, μ: 41498, ~: 41595) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 39311) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 42971) -LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 122, μ: 1830875, ~: 1578881) -LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 37856) -LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41481) -LibOpSubTest:testOpSubEvalOneInput() (gas: 128761) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226103) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 342176) -LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30106) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2070, μ: 18238, ~: 18443) -LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13820, ~: 13687) -LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2070, μ: 13821, ~: 13688) -LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2067, μ: 55971, ~: 55444) -LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65765) -LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58682) -LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56557) -LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2070, μ: 84921, ~: 84599) -LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2070, μ: 19660, ~: 19868) -LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2070, μ: 20589, ~: 20364) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44565) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40385) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34659) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39334) +LibOpStackNPTest:testOpStackEval() (gas: 65307) +LibOpStackNPTest:testOpStackEvalSeveral() (gas: 87145) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2071, μ: 18917, ~: 18784) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2071, μ: 41505, ~: 41572) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 39329) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 42989) +LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 123, μ: 1816586, ~: 1575033) +LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 37874) +LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41499) +LibOpSubTest:testOpSubEvalOneInput() (gas: 128837) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226199) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 342350) +LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30125) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2071, μ: 18234, ~: 18416) +LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13820, ~: 13687) +LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2071, μ: 13821, ~: 13688) +LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2068, μ: 55839, ~: 55304) +LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65803) +LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58720) +LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56595) +LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2071, μ: 84973, ~: 84651) +LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2071, μ: 19663, ~: 19901) +LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2071, μ: 20589, ~: 20364) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69689) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69745) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 46231) @@ -357,7 +381,7 @@ LibParseInputsOnlyGasTest:testParseGasInputsOnly09() (gas: 52192) LibParseInputsOnlyTest:testParseInputsOnlyMultiple() (gas: 52451) LibParseInputsOnlyTest:testParseInputsOnlySingle() (gas: 51541) LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexBounds() (gas: 18858) -LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2070, μ: 44743, ~: 43846) +LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2071, μ: 44726, ~: 43846) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 11195) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 11173) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 11218) @@ -376,7 +400,7 @@ LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegative LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 11150) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 35135) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 35045) -LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2070, μ: 27214, ~: 37882) +LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2071, μ: 27205, ~: 37882) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 56730) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 63896) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal02() (gas: 70152) @@ -395,9 +419,9 @@ LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex00() (gas: 55856) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 61572) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 66623) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 72869) -LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2069, μ: 16451, ~: 16389) +LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2070, μ: 16448, ~: 16389) LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2067, μ: 30039, ~: 29941) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2069, μ: 18982, ~: 18894) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2070, μ: 18979, ~: 18892) LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2049, μ: 31899, ~: 31390) LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2049, μ: 13478, ~: 13384) LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2049, μ: 24339, ~: 24265) @@ -406,9 +430,9 @@ LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 5643) LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 101, μ: 68625, ~: 68286) LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 119, μ: 64542, ~: 64255) LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 101, μ: 69361, ~: 69457) -LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 121, μ: 61000, ~: 60466) +LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 122, μ: 60957, ~: 60396) LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 54654) -LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 113, μ: 74867, ~: 74961) +LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 114, μ: 74795, ~: 74840) LibParseLiteralSubParseableTest:testParseLiteralSubParseableBody() (gas: 64571) LibParseLiteralSubParseableTest:testParseLiteralSubParseableEmptyBody() (gas: 19630) LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2067, μ: 89480, ~: 87498) @@ -476,36 +500,36 @@ LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecon LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultThird() (gas: 55536) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnclosed() (gas: 52609) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnopened() (gas: 47193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2070, μ: 12115, ~: 12193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2070, μ: 13577, ~: 13436) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2070, μ: 10368, ~: 10410) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2070, μ: 11730, ~: 11562) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2070, μ: 8644, ~: 8700) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2070, μ: 11706, ~: 11783) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2070, μ: 35178, ~: 35329) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2071, μ: 12115, ~: 12193) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2071, μ: 13577, ~: 13436) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2071, μ: 10368, ~: 10410) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2071, μ: 11730, ~: 11562) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2071, μ: 8644, ~: 8700) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2071, μ: 11706, ~: 11614) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2071, μ: 35165, ~: 35329) LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1NoValues() (gas: 4679) -LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2070, μ: 34565, ~: 34400) +LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2071, μ: 34551, ~: 34400) LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedNoValues() (gas: 3219) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2070, μ: 9918, ~: 10039) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2070, μ: 11257, ~: 11074) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2070, μ: 34983, ~: 34997) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2071, μ: 9918, ~: 10039) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2071, μ: 11257, ~: 11074) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2071, μ: 34970, ~: 34997) LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultNoValues() (gas: 4625) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2070, μ: 8805, ~: 9089) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2070, μ: 11279, ~: 11085) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2070, μ: 34877, ~: 34891) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2071, μ: 8805, ~: 9089) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2071, μ: 11279, ~: 11085) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2071, μ: 34864, ~: 34891) LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1NoValues() (gas: 3891) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2070, μ: 8180, ~: 8200) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2070, μ: 9319, ~: 9095) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2070, μ: 9878, ~: 9901) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2070, μ: 11183, ~: 11003) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2070, μ: 34799, ~: 34909) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2070, μ: 34819, ~: 34929) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2071, μ: 8180, ~: 8200) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2071, μ: 9319, ~: 9095) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2071, μ: 9878, ~: 9901) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2071, μ: 11183, ~: 11003) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2071, μ: 34786, ~: 34909) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2071, μ: 34806, ~: 34929) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultNoValues() (gas: 4599) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2070, μ: 7611, ~: 7893) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2071, μ: 7610, ~: 7893) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoValues() (gas: 3266) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2070, μ: 7650, ~: 7936) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2070, μ: 9292, ~: 9499) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2070, μ: 9332, ~: 9540) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2071, μ: 7649, ~: 7936) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2071, μ: 9292, ~: 9499) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2071, μ: 9332, ~: 9540) LibParseOperandM1M1Test:testOperandM1M1Both() (gas: 57649) LibParseOperandM1M1Test:testOperandM1M1BothZero() (gas: 55824) LibParseOperandM1M1Test:testOperandM1M1Elided() (gas: 51802) @@ -520,10 +544,10 @@ LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 49346) LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 109, μ: 42975, ~: 42972) LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 120, μ: 355745, ~: 356850) LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 119, μ: 42852, ~: 42849) -LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 122, μ: 158531, ~: 159787) -LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 121, μ: 272204, ~: 265937) +LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 123, μ: 157969, ~: 159562) +LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 122, μ: 271421, ~: 265749) LibParseOperandParseOperandTest:testParseOperandTooManyValues() (gas: 54582) -LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 121, μ: 214130, ~: 212665) +LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 122, μ: 214347, ~: 213899) LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 54141) LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 51419) LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 51178) @@ -542,16 +566,16 @@ LibParseOperandSingleFullTest:testOperandSingleFullUint16MaxOverflow() (gas: 514 LibParseOperandSingleFullTest:testOperandSingleFullUnclosed() (gas: 49874) LibParseOperandSingleFullTest:testOperandSingleFullUnopened() (gas: 48263) LibParseOperandSingleFullTest:testOperandSingleFullZero() (gas: 54245) -LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2070, μ: 9463, ~: 9483) +LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2071, μ: 9464, ~: 9483) LibParseParseWordTest:testLibParseParseWordExamples() (gas: 26983) LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2049, μ: 6477, ~: 6257) -LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2069, μ: 9726, ~: 9660) -LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 122, μ: 8974, ~: 8938) -LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 122, μ: 16389, ~: 16184) +LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2070, μ: 9726, ~: 9660) +LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 123, μ: 8975, ~: 8938) +LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 123, μ: 16343, ~: 16156) LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 119, μ: 158815, ~: 148212) LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 119, μ: 336362, ~: 331848) LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserSpecificStrings() (gas: 254483) -LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 122, μ: 20358, ~: 18184) +LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 123, μ: 20328, ~: 17922) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8389) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8451) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8537) @@ -627,65 +651,65 @@ LibParseSingleRHSNamedGasTest:testParseGasRHS30() (gas: 119933) LibParseSourceInputsTest:testParseSourceInputsEmptyLinePrefix() (gas: 49446) LibParseSourceInputsTest:testParseSourceInputsMultipleLines() (gas: 52189) LibParseSourceInputsTest:testParseSourceInputsSingle() (gas: 49423) -LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2070, μ: 20485, ~: 20361) -LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2070, μ: 17764, ~: 17686) -LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2070, μ: 313595, ~: 261748) -LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2070, μ: 17728, ~: 17650) -LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2070, μ: 3330, ~: 3330) +LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2071, μ: 20482, ~: 20352) +LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2071, μ: 17761, ~: 17686) +LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2071, μ: 313657, ~: 261888) +LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2071, μ: 17725, ~: 17650) +LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2071, μ: 3330, ~: 3330) LibParseStateConstantValueBloomTest:testConstantValueBloomAllBits() (gas: 45879) -LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2070, μ: 3447, ~: 3447) -LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2070, μ: 148142, ~: 144804) -LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2070, μ: 13351, ~: 13470) -LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2070, μ: 7158, ~: 7158) +LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2071, μ: 3447, ~: 3447) +LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2071, μ: 148205, ~: 144855) +LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2071, μ: 13351, ~: 13470) +LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2071, μ: 7158, ~: 7158) LibParseStateNewActiveSourcePointerTest:testPreUnalignedNewPointer() (gas: 9188) -LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2070, μ: 4802, ~: 4799) -LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2070, μ: 6476, ~: 6474) -LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2070, μ: 224016, ~: 223015) -LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2070, μ: 7030, ~: 7030) -LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2070, μ: 134742, ~: 131769) -LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2070, μ: 17017, ~: 16960) -LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2070, μ: 44762, ~: 45104) -LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2070, μ: 15498, ~: 15540) +LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2071, μ: 4802, ~: 4799) +LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2071, μ: 6476, ~: 6474) +LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2071, μ: 223917, ~: 223015) +LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2071, μ: 7030, ~: 7030) +LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2071, μ: 134798, ~: 131821) +LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2071, μ: 17014, ~: 16935) +LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2071, μ: 44754, ~: 45094) +LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2071, μ: 15496, ~: 15515) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParen() (gas: 48678) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested() (gas: 68700) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested2() (gas: 70248) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested3() (gas: 80148) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested4() (gas: 80013) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2068, μ: 46790, ~: 46791) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2070, μ: 52911, ~: 52956) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2069, μ: 46790, ~: 46791) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2071, μ: 52910, ~: 52956) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOF() (gas: 132631) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOL() (gas: 132654) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2068, μ: 46382, ~: 46382) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2069, μ: 46382, ~: 46382) LibParseUnexpectedLHSTest:testParseUnexpectedLHSUnderscoreTail() (gas: 134986) -LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2069, μ: 46615, ~: 46615) +LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2070, μ: 46615, ~: 46615) LibParseUnexpectedRHSTest:testParseUnexpectedRHSLeftParen() (gas: 46106) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 50722) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 56990) -LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2070, μ: 13232, ~: 13163) -LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2070, μ: 11436, ~: 11167) -RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 7054896) -RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 7063903) -RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2070, μ: 7062337, ~: 7062337) +LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2071, μ: 13232, ~: 13163) +LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2071, μ: 11436, ~: 11167) +RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 7110391) +RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 7119573) +RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2071, μ: 7117832, ~: 7117832) RainterpreterExpressionDeployerMetaTest:testRainterpreterExpressionDeployerExpectedConstructionMetaHash() (gas: 6221) -RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2070, μ: 2027875, ~: 2027875) -RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2070, μ: 3427902, ~: 3427902) -RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17121952) -RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10324872) -RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10328164) -RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3426908) -RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3430315) -RainterpreterParserPointersTest:testParserParseMeta() (gas: 179028) -RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 2030244) -RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160017) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2159602) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2158298) +RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2071, μ: 2073776, ~: 2073776) +RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2071, μ: 3433519, ~: 3433519) +RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17150072) +RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10341749) +RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10345041) +RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3432525) +RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3436440) +RainterpreterParserPointersTest:testParserParseMeta() (gas: 189868) +RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 2076665) +RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160041) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2159627) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2158324) RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2081641) -RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2070, μ: 2093899, ~: 2093899) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2183757) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2177996) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 122, μ: 3597, ~: 3597) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 122, μ: 736255, ~: 758294) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 122, μ: 2095543, ~: 2095759) +RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2071, μ: 2093899, ~: 2093899) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2183783) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178021) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 123, μ: 3597, ~: 3597) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 123, μ: 736840, ~: 767560) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 123, μ: 2095556, ~: 2095759) RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 101, μ: 2091869, ~: 2091662) RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2081736) RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2081779) @@ -693,14 +717,14 @@ RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2 RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2081756) RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2082229) RainterpreterReferenceExternPointersTest:testSubParserParseMeta() (gas: 22017) -RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2212888) -RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2070, μ: 2167436, ~: 2167550) -RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2128665) -RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52305) -RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83034) -RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2070, μ: 229923, ~: 229923) -RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 119, μ: 1630716, ~: 1605371) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 122, μ: 3221086, ~: 3117561) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 122, μ: 1866731, ~: 1964480) +RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2212938) +RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2071, μ: 2167468, ~: 2167574) +RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2128678) +RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52330) +RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83058) +RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2071, μ: 229923, ~: 229923) +RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 120, μ: 1627054, ~: 1605342) +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 123, μ: 3205039, ~: 3039103) +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 123, μ: 1870436, ~: 1977705) RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 108, μ: 249269, ~: 249274) -RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3660) \ No newline at end of file +RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3672) \ No newline at end of file diff --git a/src/generated/Rainterpreter.pointers.sol b/src/generated/Rainterpreter.pointers.sol index 6aece842f..a24cd16b8 100644 --- a/src/generated/Rainterpreter.pointers.sol +++ b/src/generated/Rainterpreter.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xe67bfbe2d8ebe116b64bcb02d5e29330d9ade17c1c3367def6883adee4d399e7); +bytes32 constant BYTECODE_HASH = bytes32(0x201dec199626b955935bb8907110beb3f69aeb86c149be19adf8adb5a01ec361); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter /// and loaded at eval time for very low gas (~100) due to the compiler /// optimising it to a single `codecopy` to build the in memory bytes array. bytes constant OPCODE_FUNCTION_POINTERS = - hex"07120744076808f409bd09cf09e109fa0a1e0a520a630a740b160b350be40c680c790c8a0c8a0c9b0d280d410d550d6e0d870d9a0dfc0e4a0e7b0ec90f170ffe"; + hex"071c074e077208fe09c709d909eb0a040a280a5c0a6d0a7e0b200b3f0bee0c720c830c940c940ca50d320d4b0d5f0d780d910da40e060e540e850ed30f210f6f1056"; diff --git a/src/generated/RainterpreterExpressionDeployer.pointers.sol b/src/generated/RainterpreterExpressionDeployer.pointers.sol index 24f41ea60..0cfe02b29 100644 --- a/src/generated/RainterpreterExpressionDeployer.pointers.sol +++ b/src/generated/RainterpreterExpressionDeployer.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x84daba4ae586abd5a30c407378175e919ea82b291b9bff08604debfa5e59d183); +bytes32 constant BYTECODE_HASH = bytes32(0x32ce28951182ae67a8783f6c482e3433eda8756bab71349543b7c621816c6c92); /// @dev The hash of the meta that describes the contract. -bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0x53bf9fadcc5583af0b446b3d62f227146b09d4476ca6f3998e21c1410fe04965); +bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0x5aaf62fc2ee9a61ce7f262226c5142750dd5f7fc3eaed156ae0ef88e03a44d38); /// @dev The function pointers for the integrity check fns. bytes constant INTEGRITY_FUNCTION_POINTERS = - hex"0db80e360e9a1014101e101e10281031104c10f210f2114e11c6101e1028101410141014101411d3101e101e101e101e101411dd1205101412051205102811d3"; + hex"0dc00e3e0ea2101c1026102610301039105410fa10fa115611ce10261030101c101c101c101c11db1026102610261026101c11e5120d101c11e5120d120d103011db"; diff --git a/src/generated/RainterpreterParser.pointers.sol b/src/generated/RainterpreterParser.pointers.sol index 1f49764ac..920e92d41 100644 --- a/src/generated/RainterpreterParser.pointers.sol +++ b/src/generated/RainterpreterParser.pointers.sol @@ -10,7 +10,7 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xd292c1e12f252b9afbe785ce00e0c8980c99b3469982fc5ffdab15e8017acd83); +bytes32 constant BYTECODE_HASH = bytes32(0xe37800b673d2b3028fae1ac8509130acb9670683fe9888cd58d2ccebab7d0a02); /// @dev The parse meta that is used to lookup word definitions. /// The structure of the parse meta is: @@ -29,7 +29,7 @@ bytes32 constant BYTECODE_HASH = bytes32(0xd292c1e12f252b9afbe785ce00e0c8980c99b /// bit count of the previous bloom filter. If we reach the end of the bloom /// filters then we have a miss. bytes constant PARSE_META = - hex"01092404940810009008201088000400e0010080000800001028010100080900090002cd70471e14fbe61685cf8700f861d11ad0e20c0e8be82d1f7c7f8004e5ab37194d06d00d67df8415fedd510602c61f08bcae760bcd088610f1c17805ac4b9f0a09bc09180ce432091ef7b011dfb72601a91367121faf890c2b9f481ce804c11bbd68ce14811fdb1726c459034a067c0fffb07907743c4a1d15024513edf10f"; + hex"01092404940810009008201088000400e0010080000800001028010100080902090002cd70471f14fbe61c85bda21685cf8700f861d11ad0e20c0e8be82d207c7f8004e5ab37194d06d00d67df8415fedd510602c61f08bcae760bcd088610f1c17805ac4b9f0a09bc09180ce432091ef7b011dfb72601a91367121faf890c2b9f481de804c11bbd68ce14811fdb1726c459034a067c0fffb07907743c4a1e15024513edf10f"; /// @dev The build depth of the parser meta. @@ -39,11 +39,11 @@ uint8 constant PARSE_META_BUILD_DEPTH = 2; /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"199a199a199a1a6f1b861b861b861a6f1a6f199a199a199a1b861b861b861b861b861b861b861b861b861b861b861b861b861b861b861b861b86199a1b861b86"; + hex"19a219a219a21a771b8e1b8e1b8e1a771a7719a219a219a21b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e1b8e19a21b8e1b8e"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal /// rather than a full word lookup, and are done with simple conditional /// jumps as the possibilities are limited compared to the number of words we /// have. -bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"14e21714175717f5"; +bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"14ea171c175f17fd"; diff --git a/src/lib/op/LibAllStandardOps.sol b/src/lib/op/LibAllStandardOps.sol index 36e1af760..92edacf3f 100644 --- a/src/lib/op/LibAllStandardOps.sol +++ b/src/lib/op/LibAllStandardOps.sol @@ -105,7 +105,7 @@ import {LibParseLiteralHex} from "../parse/literal/LibParseLiteralHex.sol"; import {LibParseLiteralSubParseable} from "../parse/literal/LibParseLiteralSubParseable.sol"; /// @dev Number of ops currently provided by `AllStandardOps`. -uint256 constant ALL_STANDARD_OPS_LENGTH = 32; +uint256 constant ALL_STANDARD_OPS_LENGTH = 33; /// @title LibAllStandardOps /// @notice Every opcode available from the core repository laid out as a single @@ -269,7 +269,7 @@ library LibAllStandardOps { "max-value", "The maximum representable float value. This is so large that it is effectively infinity (it has ~2.1 billion zero digits). Almost all numbers that you could possibly subtract from it will be ignored as a rounding error." ), - // AuthoringMetaV2("min", "Finds the minimum number from all inputs."), + AuthoringMetaV2("min", "Finds the minimum number from all inputs."), // AuthoringMetaV2("mod", "Modulos the first number by all other numbers. Errors if any divisor is zero."), AuthoringMetaV2("mul", "Multiplies all numbers together."), // AuthoringMetaV2( @@ -481,8 +481,8 @@ library LibAllStandardOps { // LibParseOperand.handleOperandDisallowed, // max-value LibParseOperand.handleOperandDisallowed, - // // min - // LibParseOperand.handleOperandDisallowed, + // min + LibParseOperand.handleOperandDisallowed, // // mod // LibParseOperand.handleOperandDisallowed, // mul @@ -603,7 +603,7 @@ library LibAllStandardOps { // LibOpLog10.integrity, // LibOpMax.integrity, LibOpMaxValue.integrity, - // LibOpMin.integrity, + LibOpMin.integrity, // LibOpMod.integrity, LibOpMul.integrity, // LibOpPow.integrity, @@ -715,7 +715,7 @@ library LibAllStandardOps { // LibOpLog10.run, // LibOpMax.run, LibOpMaxValue.run, - // LibOpMin.run, + LibOpMin.run, // LibOpMod.run, LibOpMul.run, // LibOpPow.run, diff --git a/src/lib/op/math/LibOpMin.sol b/src/lib/op/math/LibOpMin.sol index e14db5984..1d2479475 100644 --- a/src/lib/op/math/LibOpMin.sol +++ b/src/lib/op/math/LibOpMin.sol @@ -5,6 +5,8 @@ import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpre import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {InterpreterState} from "../../state/LibInterpreterState.sol"; import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; /// @title LibOpMin /// @notice Opcode to find the min from N integers. @@ -19,16 +21,14 @@ library LibOpMin { /// min /// Finds the minimum value from N integers. function run(InterpreterState memory, OperandV2 operand, Pointer stackTop) internal pure returns (Pointer) { - uint256 a; - uint256 b; + Float a; + Float b; assembly ("memory-safe") { a := mload(stackTop) b := mload(add(stackTop, 0x20)) stackTop := add(stackTop, 0x40) } - if (a > b) { - a = b; - } + a = LibDecimalFloat.min(a, b); { uint256 inputs = uint256((OperandV2.unwrap(operand) >> 0x10) & bytes32(uint256(0x0F))); @@ -38,9 +38,8 @@ library LibOpMin { b := mload(stackTop) stackTop := add(stackTop, 0x20) } - if (a > b) { - a = b; - } + a = LibDecimalFloat.min(a, b); + unchecked { i++; } @@ -55,20 +54,20 @@ library LibOpMin { } /// Gas intensive reference implementation of minimum for testing. - function referenceFn(InterpreterState memory, OperandV2, uint256[] memory inputs) + function referenceFn(InterpreterState memory, OperandV2, StackItem[] memory inputs) internal pure - returns (uint256[] memory outputs) + returns (StackItem[] memory outputs) { // Unchecked so that when we assert that an overflow error is thrown, we // see the revert from the real function and not the reference function. unchecked { - uint256 acc = inputs[0]; + Float acc = Float.wrap(StackItem.unwrap(inputs[0])); for (uint256 i = 1; i < inputs.length; i++) { - acc = acc > inputs[i] ? inputs[i] : acc; + acc = LibDecimalFloat.min(acc, Float.wrap(StackItem.unwrap(inputs[i]))); } - outputs = new uint256[](1); - outputs[0] = acc; + outputs = new StackItem[](1); + outputs[0] = StackItem.wrap(Float.unwrap(acc)); } } } diff --git a/test/src/lib/op/math/LibOpMin.t.sol b/test/src/lib/op/math/LibOpMin.t.sol index c532b34a8..33213bb74 100644 --- a/test/src/lib/op/math/LibOpMin.t.sol +++ b/test/src/lib/op/math/LibOpMin.t.sol @@ -1,166 +1,197 @@ // SPDX-License-Identifier: CAL pragma solidity =0.8.25; -// import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; +import {OpTest, IntegrityCheckState, InterpreterState} from "test/abstract/OpTest.sol"; +import {LibOpMin} from "src/lib/op/math/LibOpMin.sol"; +import {LibOperand, OperandV2} from "test/lib/operand/LibOperand.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -// import {OpTest, IntegrityCheckState, InterpreterState} from "test/abstract/OpTest.sol"; -// import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; -// import {UnexpectedOperand} from "src/error/ErrParse.sol"; -// import {LibOpMin} from "src/lib/op/math/LibOpMin.sol"; -// import {LibOperand, Operand} from "test/lib/operand/LibOperand.sol"; +contract LibOpMinTest is OpTest { + /// Directly test the integrity logic of LibOpMin. This tests the happy + /// path where the inputs input and calc match. + function testOpMinIntegrityHappy(IntegrityCheckState memory state, uint8 inputs, uint16 operandData) + external + pure + { + inputs = uint8(bound(inputs, 2, 0x0F)); + (uint256 calcInputs, uint256 calcOutputs) = LibOpMin.integrity(state, LibOperand.build(inputs, 1, operandData)); -// contract LibOpMinTest is OpTest { -// using LibUint256Array for uint256[]; + assertEq(calcInputs, inputs); + assertEq(calcOutputs, 1); + } -// /// Directly test the integrity logic of LibOpMin. This tests the happy -// /// path where the inputs input and calc match. -// function testOpMinIntegrityHappy(IntegrityCheckState memory state, uint8 inputs, uint16 operandData) -// external -// pure -// { -// inputs = uint8(bound(inputs, 2, 0x0F)); -// (uint256 calcInputs, uint256 calcOutputs) = LibOpMin.integrity(state, LibOperand.build(inputs, 1, operandData)); + /// Directly test the integrity logic of LibOpMin. This tests the unhappy + /// path where the operand is invalid due to 0 inputs. + function testOpMinIntegrityUnhappyZeroInputs(IntegrityCheckState memory state) external pure { + (uint256 calcInputs, uint256 calcOutputs) = LibOpMin.integrity(state, OperandV2.wrap(0)); + // Calc inputs will be minimum 2. + assertEq(calcInputs, 2); + assertEq(calcOutputs, 1); + } -// assertEq(calcInputs, inputs); -// assertEq(calcOutputs, 1); -// } + /// Directly test the integrity logic of LibOpMin. This tests the unhappy + /// path where the operand is invalid due to 1 inputs. + function testOpMinIntegrityUnhappyOneInput(IntegrityCheckState memory state) external pure { + (uint256 calcInputs, uint256 calcOutputs) = + LibOpMin.integrity(state, OperandV2.wrap(bytes32(uint256(0x010000)))); + // Calc inputs will be minimum 2. + assertEq(calcInputs, 2); + assertEq(calcOutputs, 1); + } -// /// Directly test the integrity logic of LibOpMin. This tests the unhappy -// /// path where the operand is invalid due to 0 inputs. -// function testOpMinIntegrityUnhappyZeroInputs(IntegrityCheckState memory state) external pure { -// (uint256 calcInputs, uint256 calcOutputs) = LibOpMin.integrity(state, Operand.wrap(0)); -// // Calc inputs will be minimum 2. -// assertEq(calcInputs, 2); -// assertEq(calcOutputs, 1); -// } + /// Directly test the runtime logic of LibOpMin. + function testOpMinRun(StackItem[] memory inputs, uint16 operandData) external view { + InterpreterState memory state = opTestDefaultInterpreterState(); + vm.assume(inputs.length >= 2); + vm.assume(inputs.length <= 0x0F); + OperandV2 operand = LibOperand.build(uint8(inputs.length), 1, operandData); + opReferenceCheck(state, operand, LibOpMin.referenceFn, LibOpMin.integrity, LibOpMin.run, inputs); + } -// /// Directly test the integrity logic of LibOpMin. This tests the unhappy -// /// path where the operand is invalid due to 1 inputs. -// function testOpMinIntegrityUnhappyOneInput(IntegrityCheckState memory state) external pure { -// (uint256 calcInputs, uint256 calcOutputs) = LibOpMin.integrity(state, Operand.wrap(0x010000)); -// // Calc inputs will be minimum 2. -// assertEq(calcInputs, 2); -// assertEq(calcOutputs, 1); -// } + /// Test the eval of `min` opcode parsed from a string. Tests zero inputs. + function testOpMinEvalZeroInputs() external { + checkBadInputs("_: min();", 0, 2, 0); + } -// /// Directly test the runtime logic of LibOpMin. -// function testOpMinRun(uint256[] memory inputs, uint16 operandData) external view { -// InterpreterState memory state = opTestDefaultInterpreterState(); -// vm.assume(inputs.length >= 2); -// vm.assume(inputs.length <= 0x0F); -// Operand operand = LibOperand.build(uint8(inputs.length), 1, operandData); -// opReferenceCheck(state, operand, LibOpMin.referenceFn, LibOpMin.integrity, LibOpMin.run, inputs); -// } + /// Test the eval of `min` opcode parsed from a string. Tests one input. + function testOpMinEvalOneInput() external { + checkBadInputs("_: min(5);", 1, 2, 1); + checkBadInputs("_: min(0);", 1, 2, 1); + checkBadInputs("_: min(1);", 1, 2, 1); + checkBadInputs("_: min(max-value());", 1, 2, 1); + } -// /// Test the eval of `min` opcode parsed from a string. Tests zero inputs. -// function testOpMinEvalZeroInputs() external { -// checkBadInputs("_: min();", 0, 2, 0); -// } + /// Test the eval of `min` opcode parsed from a string. Tests two inputs. + function testOpMinEval2InputsHappy() external view { + checkHappy("_: min(0 0);", 0, "0 > 0 ? 0 : 1"); + checkHappy("_: min(1 0);", 0, "1 > 0 ? 1 : 0"); + checkHappy("_: min(max-value() 0);", 0, "max-value() > 0 ? max-value() : 0"); + checkHappy("_: min(0 1);", 0, "0 > 1 ? 0 : 1"); + checkHappy("_: min(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 > 1 ? 1 : 1"); + checkHappy("_: min(0 max-value());", 0, "0 > max-value() ? 0 : max-value()"); + checkHappy( + "_: min(1 max-value());", + Float.unwrap(LibDecimalFloat.packLossless(1, 0)), + "1 > max-value() ? 1 : max-value()" + ); + checkHappy( + "_: min(max-value() 1);", + Float.unwrap(LibDecimalFloat.packLossless(1, 0)), + "1 > max-value() ? 1 : max-value()" + ); + checkHappy( + "_: min(max-value() max-value());", + Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), + "max-value() > max-value() ? max-value() : max-value()" + ); + checkHappy("_: min(0 2);", 0, "0 > 2 ? 0 : 2"); + checkHappy("_: min(1 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 > 2 ? 1 : 2"); + checkHappy("_: min(2 2);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 > 2 ? 2 : 2"); + } -// /// Test the eval of `min` opcode parsed from a string. Tests one input. -// function testOpMinEvalOneInput() external { -// checkBadInputs("_: min(5e-18);", 1, 2, 1); -// checkBadInputs("_: min(0);", 1, 2, 1); -// checkBadInputs("_: min(1e-18);", 1, 2, 1); -// checkBadInputs("_: min(max-value());", 1, 2, 1); -// } + /// Test the eval of `min` opcode parsed from a string. Tests three inputs. + function testOpMinEval3InputsHappy() external view { + checkHappy("_: min(0 0 0);", 0, "0 0 0"); + checkHappy("_: min(1 0 0);", 0, "1 0 0"); + checkHappy("_: min(2 0 0);", 0, "2 0 0"); + checkHappy("_: min(0 1 0);", 0, "0 1 0"); + checkHappy("_: min(1 1 0);", 0, "1 1 0"); + checkHappy("_: min(2 1 0);", 0, "2 1 0"); + checkHappy("_: min(0 2 0);", 0, "0 2 0"); + checkHappy("_: min(1 2 0);", 0, "1 2 0"); + checkHappy("_: min(2 2 0);", 0, "2 2 0"); + checkHappy("_: min(0 0 1);", 0, "0 0 1"); + checkHappy("_: min(1 0 1);", 0, "1 0 1"); + checkHappy("_: min(2 0 1);", 0, "2 0 1"); + checkHappy("_: min(0 1 1);", 0, "0 1 1"); + checkHappy("_: min(1 1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 1 1"); + checkHappy("_: min(2 1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2 1 1"); + checkHappy("_: min(0 2 1);", 0, "0 2 1"); + checkHappy("_: min(1 2 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 2 1"); + checkHappy("_: min(2 2 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2 2 1"); + checkHappy("_: min(0 0 2);", 0, "0 0 2"); + checkHappy("_: min(1 0 2);", 0, "1 0 2"); + checkHappy("_: min(2 0 2);", 0, "2 0 2"); + checkHappy("_: min(0 1 2);", 0, "0 1 2"); + checkHappy("_: min(1 1 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 1 2"); + checkHappy("_: min(2 1 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2 1 2"); + checkHappy("_: min(0 2 2);", 0, "0 2 2"); + checkHappy("_: min(1 2 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 2 2"); + checkHappy("_: min(2 2 2);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 2 2"); + checkHappy("_: min(0 0 max-value());", 0, "0 0 max-value()"); + checkHappy("_: min(1 0 max-value());", 0, "1 0 max-value()"); + checkHappy("_: min(2 0 max-value());", 0, "2 0 max-value()"); + checkHappy("_: min(0 1 max-value());", 0, "0 1 max-value()"); + checkHappy("_: min(1 1 max-value());", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 1 max-value()"); + checkHappy("_: min(2 1 max-value());", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2 1 max-value()"); + checkHappy("_: min(0 2 max-value());", 0, "0 2 max-value()"); + checkHappy("_: min(1 2 max-value());", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 2 max-value()"); + checkHappy("_: min(2 2 max-value());", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 2 max-value()"); + checkHappy("_: min(0 max-value() 0);", 0, "0 max-value() 0"); + checkHappy("_: min(1 max-value() 0);", 0, "1 max-value() 0"); + checkHappy("_: min(2 max-value() 0);", 0, "2 max-value() 0"); + checkHappy("_: min(0 max-value() 1);", 0, "0 max-value() 1"); + checkHappy("_: min(1 max-value() 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 max-value() 1"); + checkHappy("_: min(2 max-value() 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2 max-value() 1"); + checkHappy("_: min(0 max-value() 2);", 0, "0 max-value() 2"); + checkHappy("_: min(1 max-value() 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 max-value() 2"); + checkHappy("_: min(2 max-value() 2);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 max-value() 2"); + checkHappy("_: min(0 max-value() max-value());", 0, "0 max-value() max-value()"); + checkHappy( + "_: min(1 max-value() max-value());", + Float.unwrap(LibDecimalFloat.packLossless(1, 0)), + "1 max-value() max-value()" + ); + checkHappy( + "_: min(2 max-value() max-value());", + Float.unwrap(LibDecimalFloat.packLossless(2, 0)), + "2 max-value() max-value()" + ); + checkHappy("_: min(max-value() 0 0);", 0, "max-value() 0 0"); + checkHappy("_: min(max-value() 1 0);", 0, "max-value() 1 0"); + checkHappy("_: min(max-value() 2 0);", 0, "max-value() 2 0"); + checkHappy("_: min(max-value() 0 1);", 0, "max-value() 0 1"); + checkHappy("_: min(max-value() 1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "max-value() 1 1"); + checkHappy("_: min(max-value() 2 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "max-value() 2 1"); + checkHappy("_: min(max-value() 0 2);", 0, "max-value() 0 2"); + checkHappy("_: min(max-value() 1 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "max-value() 1 2"); + checkHappy("_: min(max-value() 2 2);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "max-value() 2 2"); + checkHappy("_: min(max-value() 0 max-value());", 0, "max-value() 0 max-value()"); + checkHappy( + "_: min(max-value() 1 max-value());", + Float.unwrap(LibDecimalFloat.packLossless(1, 0)), + "max-value() 1 max-value()" + ); + checkHappy( + "_: min(max-value() 2 max-value());", + Float.unwrap(LibDecimalFloat.packLossless(2, 0)), + "max-value() 2 max-value()" + ); + checkHappy("_: min(max-value() max-value() 0);", 0, "max-value() max-value() 0"); + checkHappy( + "_: min(max-value() max-value() 1);", + Float.unwrap(LibDecimalFloat.packLossless(1, 0)), + "max-value() max-value() 1" + ); + checkHappy( + "_: min(max-value() max-value() 2);", + Float.unwrap(LibDecimalFloat.packLossless(2, 0)), + "max-value() max-value() 2" + ); + checkHappy( + "_: min(max-value() max-value() max-value());", + Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), + "max-value() max-value() max-value()" + ); + } -// /// Test the eval of `min` opcode parsed from a string. Tests two inputs. -// function testOpMinEval2InputsHappy() external view { -// checkHappy("_: min(0 0);", 0, "0 > 0 ? 0 : 1"); -// checkHappy("_: min(1e-18 0);", 0, "1 > 0 ? 1 : 0"); -// checkHappy("_: min(max-value() 0);", 0, "max-value() > 0 ? max-value() : 0"); -// checkHappy("_: min(0 1e-18);", 0, "0 > 1 ? 0 : 1"); -// checkHappy("_: min(1e-18 1e-18);", 1, "1 > 1 ? 1 : 1"); -// checkHappy("_: min(0 max-value());", 0, "0 > max-value() ? 0 : max-value()"); -// checkHappy("_: min(1e-18 max-value());", 1, "1 > max-value() ? 1 : max-value()"); -// checkHappy("_: min(max-value() 1e-18);", 1, "1 > max-value() ? 1 : max-value()"); -// checkHappy( -// "_: min(max-value() max-value());", -// type(uint256).max, -// "max-value() > max-value() ? max-value() : max-value()" -// ); -// checkHappy("_: min(0 2e-18);", 0, "0 > 2 ? 0 : 2"); -// checkHappy("_: min(1e-18 2e-18);", 1, "1 > 2 ? 1 : 2"); -// checkHappy("_: min(2e-18 2e-18);", 2, "2 > 2 ? 2 : 2"); -// } - -// /// Test the eval of `min` opcode parsed from a string. Tests three inputs. -// function testOpMinEval3InputsHappy() external view { -// checkHappy("_: min(0 0 0);", 0, "0 0 0"); -// checkHappy("_: min(1e-18 0 0);", 0, "1 0 0"); -// checkHappy("_: min(2e-18 0 0);", 0, "2 0 0"); -// checkHappy("_: min(0 1e-18 0);", 0, "0 1 0"); -// checkHappy("_: min(1e-18 1e-18 0);", 0, "1 1 0"); -// checkHappy("_: min(2e-18 1e-18 0);", 0, "2 1 0"); -// checkHappy("_: min(0 2e-18 0);", 0, "0 2 0"); -// checkHappy("_: min(1e-18 2e-18 0);", 0, "1 2 0"); -// checkHappy("_: min(2e-18 2e-18 0);", 0, "2 2 0"); -// checkHappy("_: min(0 0 1e-18);", 0, "0 0 1"); -// checkHappy("_: min(1e-18 0 1e-18);", 0, "1 0 1"); -// checkHappy("_: min(2e-18 0 1e-18);", 0, "2 0 1"); -// checkHappy("_: min(0 1e-18 1e-18);", 0, "0 1 1"); -// checkHappy("_: min(1e-18 1e-18 1e-18);", 1, "1 1 1"); -// checkHappy("_: min(2e-18 1e-18 1e-18);", 1, "2 1 1"); -// checkHappy("_: min(0 2e-18 1e-18);", 0, "0 2 1"); -// checkHappy("_: min(1e-18 2e-18 1e-18);", 1, "1 2 1"); -// checkHappy("_: min(2e-18 2e-18 1e-18);", 1, "2 2 1"); -// checkHappy("_: min(0 0 2e-18);", 0, "0 0 2"); -// checkHappy("_: min(1e-18 0 2e-18);", 0, "1 0 2"); -// checkHappy("_: min(2e-18 0 2e-18);", 0, "2 0 2"); -// checkHappy("_: min(0 1e-18 2e-18);", 0, "0 1 2"); -// checkHappy("_: min(1e-18 1e-18 2e-18);", 1, "1 1 2"); -// checkHappy("_: min(2e-18 1e-18 2e-18);", 1, "2 1 2"); -// checkHappy("_: min(0 2e-18 2e-18);", 0, "0 2 2"); -// checkHappy("_: min(1e-18 2e-18 2e-18);", 1, "1 2 2"); -// checkHappy("_: min(2e-18 2e-18 2e-18);", 2, "2 2 2"); -// checkHappy("_: min(0 0 max-value());", 0, "0 0 max-value()"); -// checkHappy("_: min(1e-18 0 max-value());", 0, "1 0 max-value()"); -// checkHappy("_: min(2e-18 0 max-value());", 0, "2 0 max-value()"); -// checkHappy("_: min(0 1e-18 max-value());", 0, "0 1 max-value()"); -// checkHappy("_: min(1e-18 1e-18 max-value());", 1, "1 1 max-value()"); -// checkHappy("_: min(2e-18 1e-18 max-value());", 1, "2 1 max-value()"); -// checkHappy("_: min(0 2e-18 max-value());", 0, "0 2 max-value()"); -// checkHappy("_: min(1e-18 2e-18 max-value());", 1, "1 2 max-value()"); -// checkHappy("_: min(2e-18 2e-18 max-value());", 2, "2 2 max-value()"); -// checkHappy("_: min(0 max-value() 0);", 0, "0 max-value() 0"); -// checkHappy("_: min(1e-18 max-value() 0);", 0, "1 max-value() 0"); -// checkHappy("_: min(2e-18 max-value() 0);", 0, "2 max-value() 0"); -// checkHappy("_: min(0 max-value() 1e-18);", 0, "0 max-value() 1"); -// checkHappy("_: min(1e-18 max-value() 1e-18);", 1, "1 max-value() 1"); -// checkHappy("_: min(2e-18 max-value() 1e-18);", 1, "2 max-value() 1"); -// checkHappy("_: min(0 max-value() 2e-18);", 0, "0 max-value() 2"); -// checkHappy("_: min(1e-18 max-value() 2e-18);", 1, "1 max-value() 2"); -// checkHappy("_: min(2e-18 max-value() 2e-18);", 2, "2 max-value() 2"); -// checkHappy("_: min(0 max-value() max-value());", 0, "0 max-value() max-value()"); -// checkHappy("_: min(1e-18 max-value() max-value());", 1, "1 max-value() max-value()"); -// checkHappy("_: min(2e-18 max-value() max-value());", 2, "2 max-value() max-value()"); -// checkHappy("_: min(max-value() 0 0);", 0, "max-value() 0 0"); -// checkHappy("_: min(max-value() 1e-18 0);", 0, "max-value() 1 0"); -// checkHappy("_: min(max-value() 2e-18 0);", 0, "max-value() 2 0"); -// checkHappy("_: min(max-value() 0 1e-18);", 0, "max-value() 0 1"); -// checkHappy("_: min(max-value() 1e-18 1e-18);", 1, "max-value() 1 1"); -// checkHappy("_: min(max-value() 2e-18 1e-18);", 1, "max-value() 2 1"); -// checkHappy("_: min(max-value() 0 2e-18);", 0, "max-value() 0 2"); -// checkHappy("_: min(max-value() 1e-18 2e-18);", 1, "max-value() 1 2"); -// checkHappy("_: min(max-value() 2e-18 2e-18);", 2, "max-value() 2 2"); -// checkHappy("_: min(max-value() 0 max-value());", 0, "max-value() 0 max-value()"); -// checkHappy("_: min(max-value() 1e-18 max-value());", 1, "max-value() 1 max-value()"); -// checkHappy("_: min(max-value() 2e-18 max-value());", 2, "max-value() 2 max-value()"); -// checkHappy("_: min(max-value() max-value() 0);", 0, "max-value() max-value() 0"); -// checkHappy("_: min(max-value() max-value() 1e-18);", 1, "max-value() max-value() 1"); -// checkHappy("_: min(max-value() max-value() 2e-18);", 2, "max-value() max-value() 2"); -// checkHappy( -// "_: min(max-value() max-value() max-value());", type(uint256).max, "max-value() max-value() max-value()" -// ); -// } - -// /// Test the eval of `min` opcode parsed from a string. -// /// Tests that operands are disallowed. -// function testOpMinEvalOperandDisallowed() external { -// checkDisallowedOperand("_: min<0>(0 0 0);"); -// checkDisallowedOperand("_: min<1>(0 0 0);"); -// checkDisallowedOperand("_: min<2>(0 0 0);"); -// checkDisallowedOperand("_: min<3 1>(0 0 0);"); -// } -// } + /// Test the eval of `min` opcode parsed from a string. + /// Tests that operands are disallowed. + function testOpMinEvalOperandDisallowed() external { + checkDisallowedOperand("_: min<0>(0 0 0);"); + checkDisallowedOperand("_: min<1>(0 0 0);"); + checkDisallowedOperand("_: min<2>(0 0 0);"); + checkDisallowedOperand("_: min<3 1>(0 0 0);"); + } +}