ERC721ReceiverMock.sol 717 B

12345678910111213141516171819202122232425
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.7.0;
  3. import "../token/ERC721/IERC721Receiver.sol";
  4. contract ERC721ReceiverMock is IERC721Receiver {
  5. bytes4 private _retval;
  6. bool private _reverts;
  7. event Received(address operator, address from, uint256 tokenId, bytes data, uint256 gas);
  8. constructor (bytes4 retval, bool reverts) {
  9. _retval = retval;
  10. _reverts = reverts;
  11. }
  12. function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)
  13. public override returns (bytes4)
  14. {
  15. require(!_reverts, "ERC721ReceiverMock: reverting");
  16. emit Received(operator, from, tokenId, data, gasleft());
  17. return _retval;
  18. }
  19. }