mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openzeppelin-contracts/contracts/mocks/ERC721ReceiverMock.sol

43 lines
730 B

pragma solidity ^0.4.24;
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
import "../token/ERC721/ERC721Receiver.sol";
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
contract ERC721ReceiverMock is ERC721Receiver {
bytes4 retval_;
bool reverts_;
event Received(
address _operator,
address _from,
uint256 _tokenId,
bytes _data,
uint256 _gas
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
constructor(bytes4 _retval, bool _reverts) public {
retval_ = _retval;
reverts_ = _reverts;
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
}
function onERC721Received(
address _operator,
address _from,
uint256 _tokenId,
bytes _data
)
public
returns(bytes4)
{
require(!reverts_);
emit Received(
_operator,
_from,
_tokenId,
_data,
gasleft() // msg.gas was deprecated in solidityv0.4.21
);
return retval_;
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
}
}