Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added test suit for erc155 still work in progress #13

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions contracts/BoringBatchable.sol
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ contract BaseBoringBatchable {
return abi.decode(_returnData, (string)); // All that remains is the revert string
}




/// @notice Allows batched call to self (this contract).
/// @param calls An array of inputs for each call.
/// @param revertOnFail If True then reverts after a failed call and stops doing further calls.
Expand Down
1 change: 1 addition & 0 deletions contracts/ERC1155.sol
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ abstract contract ERC1155 is IERC1155 {
) internal {
require(to != address(0), "No 0 address");


for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 value = values[i];
Expand Down
39 changes: 39 additions & 0 deletions contracts/mocks/MockERC1155.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "../ERC1155.sol";

contract MockERC1155 is ERC1155 {

uint256 public uniqueness;

mapping (uint256 => address) public creators;

function create(uint256 _initialSupply, string calldata _uri) external returns(uint256 _id) {

_id = ++uniqueness;
creators[_id] = msg.sender;
// balanceOf[ msg.sender][_id] = _initialSupply;

// Transfer event with mint semantic
emit TransferSingle(msg.sender, address(0), address(0), _id, _initialSupply);

if (bytes(_uri).length > 0)
emit URI(_uri, _id);
}


function mint(
address to,
uint256 id,
uint256 value) public {
_mint(to, id, value );
}

function burn(
address from,
uint256 id,
uint256 value) public {
_burn(from, id, value);
}

}
58 changes: 58 additions & 0 deletions contracts/mocks/MockERC1155Receiver.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "../interfaces/IERC1155TokenReceiver.sol";
import "../ERC1155.sol";

contract MockERC1155Receiver is IERC1155TokenReceiver {
address public sender;
address public operator;
address public from;
uint256 public id;
uint256 public value;
uint256[] public ids;
uint256[] public values;
bytes public data; // don't think it should be same arg for onERC1155Received and onERC1155BatchReceived for this mock contract

function onERC1155Received(
address _operator,
address _from,
uint256 _id,
uint256 _value,
bytes calldata _data
) external override returns (bytes4) {
sender = msg.sender;
operator = _operator;
from = _from;
id = _id;
value = _value;
data = _data;

return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"));
}

function returnSingleToken() external {
ERC1155(sender).safeTransferFrom(address(this), from, id, value, data);
}


function onERC1155BatchReceived(
address _operator,
address _from,
uint256[] calldata _ids,
uint256[] calldata _values,
bytes calldata _data
) external override returns (bytes4) {
sender = msg.sender;
operator = _operator;
from = _from;
ids = _ids;
values = _values;
data = _data;

return bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"));
}

function returnBatchToken() external {
ERC1155(sender).safeBatchTransferFrom(address(this), from, ids, values, data);
}
}
58 changes: 58 additions & 0 deletions contracts/mocks/MockERC1155WrongReceiver.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "../interfaces/IERC1155TokenReceiver.sol";
import "../ERC1155.sol";

contract MockERC1155WrongReceiver is IERC1155TokenReceiver {
address public sender;
address public operator;
address public from;
uint256 public id;
uint256 public value;
uint256[] public ids;
uint256[] public values;
bytes public data; // don't think it should be same arg for onERC1155Received and onERC1155BatchReceived for this mock contract

function onERC1155Received(
address _operator,
address _from,
uint256 _id,
uint256 _value,
bytes calldata _data
) external override returns (bytes4) {
sender = msg.sender;
operator = _operator;
from = _from;
id = _id;
value = _value;
data = _data;

return bytes4(keccak256(""));
}

function returnSingleToken() external {
ERC1155(sender).safeTransferFrom(address(this), from, id, value, data);
}


function onERC1155BatchReceived(
address _operator,
address _from,
uint256[] calldata _ids,
uint256[] calldata _values,
bytes calldata _data
) external override returns (bytes4) {
sender = msg.sender;
operator = _operator;
from = _from;
ids = _ids;
values = _values;
data = _data;

return bytes4(keccak256(""));
}

function returnBatchToken() external {
ERC1155(sender).safeBatchTransferFrom(address(this), from, ids, values, data);
}
}
2 changes: 1 addition & 1 deletion contracts/mocks/MockERC721Receiver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ contract MockERC721Receiver is IERC721TokenReceiver {
function returnToken() external {
BoringMultipleNFT(sender).transferFrom(address(this), from, tokenId);
}
}
}
2 changes: 1 addition & 1 deletion test/BoringMultipleNFT.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ describe("BoringMultipleNFT", async function () {
describe("supports interface", async function () {
it("should support the interface EIP-165 and EIP-721 + extensions", async function () {
assert.isTrue(await this.contract.supportsInterface("0x01ffc9a7", { gasLimit: 30000 })) // EIP-165
assert.isTrue(await this.contract.supportsInterface("0x80ac58cd", { gasLimit: 30000 })) // EIP-721
assert.isTrue(await this.contract.supportsInterface("0xd9b67a26", { gasLimit: 30000 })) // EIP-721
assert.isTrue(await this.contract.supportsInterface("0x5b5e139f", { gasLimit: 30000 })) // EIP-721 metadata extension
assert.isTrue(await this.contract.supportsInterface("0x780e9d63", { gasLimit: 30000 })) // EIP-721 enumeration extension
assert.isFalse(await this.contract.supportsInterface("0xffffffff", { gasLimit: 30000 })) // Must be false
Expand Down
Loading