// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MockUpkeep { bool public shouldCheckRevert; bool public shouldPerformRevert; bool public checkResult = true; bytes public performData; uint256 public checkGasToBurn; uint256 public performGasToBurn; event UpkeepPerformedWith(bytes upkeepData); error CheckRevert(); error PerformRevert(); function setShouldCheckRevert( bool value ) public { shouldCheckRevert = value; } function setShouldPerformRevert( bool value ) public { shouldPerformRevert = value; } function setCheckResult( bool value ) public { checkResult = value; } function setPerformData( bytes calldata data ) public { performData = data; } function setCheckGasToBurn( uint256 value ) public { checkGasToBurn = value; } function setPerformGasToBurn( uint256 value ) public { performGasToBurn = value; } function checkUpkeep( bytes calldata ) external view returns (bool callable, bytes memory executedata) { if (shouldCheckRevert) revert CheckRevert(); uint256 startGas = gasleft(); while (startGas - gasleft() < checkGasToBurn) {} // burn gas return (checkResult, performData); } function performUpkeep( bytes calldata data ) external { if (shouldPerformRevert) revert PerformRevert(); uint256 startGas = gasleft(); while (startGas - gasleft() < performGasToBurn) {} // burn gas emit UpkeepPerformedWith(data); } }