Skip to content
Merged
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
94 changes: 94 additions & 0 deletions perfTest/token/erc721/ERC721Perf.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,100 @@ abstract contract ERC721PerfTest is ERC721BaseTest {
emit log_named_uint("totalSupply gas", gasStart - gasEnd);
}


function testSetNFTRoyaltyReceiverBatch1() public {
emit log("Scenario: NFTs 10, different receiver and fee");
uint256 scenarioCount = 10;
uint96 newFeeNumerator = 100;
address newRoyaltyReceiver = makeAddr("newRoyaltyReceiver");

// Have a new fee receiver and different feeNumerator
assertNotEq(newFeeNumerator, feeNumerator, "Fee numerator should be different");
assertNotEq(newRoyaltyReceiver, feeReceiver, "newRoyaltyReceiver should be different");

checkSetNFTRoyaltyReceiverBatch(newRoyaltyReceiver, newFeeNumerator, scenarioCount);
}

function testSetNFTRoyaltyReceiverBatch2() public {
emit log("Scenario: NFTs 100, different receiver and fee");
uint256 scenarioCount = 100;
uint96 newFeeNumerator = 100;
address newRoyaltyReceiver = makeAddr("newRoyaltyReceiver");

// Have a new fee receiver and different feeNumerator
assertNotEq(newFeeNumerator, feeNumerator, "Fee numerator should be different");
assertNotEq(newRoyaltyReceiver, feeReceiver, "newRoyaltyReceiver should be different");

checkSetNFTRoyaltyReceiverBatch(newRoyaltyReceiver, newFeeNumerator, scenarioCount);
}

function testSetNFTRoyaltyReceiverBatch3() public {
emit log("Scenario: NFTs 1000, different receiver and fee");
uint256 scenarioCount = 1000;
uint96 newFeeNumerator = 100;
address newRoyaltyReceiver = makeAddr("newRoyaltyReceiver");

// Have a new fee receiver and different feeNumerator
assertNotEq(newFeeNumerator, feeNumerator, "Fee numerator should be different");
assertNotEq(newRoyaltyReceiver, feeReceiver, "newRoyaltyReceiver should be different");

checkSetNFTRoyaltyReceiverBatch(newRoyaltyReceiver, newFeeNumerator, scenarioCount);
}

function testSetNFTRoyaltyReceiverBatch4() public {
emit log("Scenario: NFTs 10000, different receiver and fee");
uint256 scenarioCount = 10000;
uint96 newFeeNumerator = 100;
address newRoyaltyReceiver = makeAddr("newRoyaltyReceiver");

// Have a new fee receiver and different feeNumerator
assertNotEq(newFeeNumerator, feeNumerator, "Fee numerator should be different");
assertNotEq(newRoyaltyReceiver, feeReceiver, "newRoyaltyReceiver should be different");

checkSetNFTRoyaltyReceiverBatch(newRoyaltyReceiver, newFeeNumerator, scenarioCount);
}

function testSetNFTRoyaltyReceiverBatch5() public {
emit log("Scenario: NFTs 1000, different fee");
uint256 scenarioCount = 1000;
uint96 newFeeNumerator = 100;

// Have a new fee receiver and different feeNumerator
assertNotEq(newFeeNumerator, feeNumerator, "Fee numerator should be different");

checkSetNFTRoyaltyReceiverBatch(feeReceiver, newFeeNumerator, scenarioCount);
}

function testSetNFTRoyaltyReceiverBatch6() public {
emit log("Scenario: NFTs 1000, different receiver");
uint256 scenarioCount = 1000;
address newRoyaltyReceiver = makeAddr("newRoyaltyReceiver");

// Have a new fee receiver and different feeNumerator
assertNotEq(newRoyaltyReceiver, feeReceiver, "newRoyaltyReceiver should be different");

checkSetNFTRoyaltyReceiverBatch(newRoyaltyReceiver, feeNumerator, scenarioCount);
}


function checkSetNFTRoyaltyReceiverBatch(address newRoyaltyReceiver, uint96 newFeeNumerator, uint256 scenarioCount) private {
// Mint tokens.
uint256 first = mintLots(user3, 100000, scenarioCount);

uint256[] memory nfts = new uint256[](scenarioCount);
for (uint256 i = 0; i < nfts.length; i++) {
nfts[i] = first + i;
}

uint256 gasStart = gasleft();
vm.prank(minter);
erc721.setNFTRoyaltyReceiverBatch(nfts, newRoyaltyReceiver, newFeeNumerator);
uint256 gasEnd = gasleft();
emit log_named_uint("setNFTRoyaltyReceiverBatch gas", gasStart - gasEnd);
}



function mintLots(address _recipient, uint256 _start, uint256 _quantity) public virtual returns (uint256) {
uint256[] memory ids = new uint256[](_quantity);
for (uint256 i = 0; i < _quantity; i++) {
Expand Down
2 changes: 1 addition & 1 deletion perfTest/token/erc721/ImmutableERC721ByIdPerf.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ contract ImmutableERC721ByIdPerfTest is ERC721PerfTest {
super.setUpStart();

ImmutableERC721MintByID immutableERC721 = new ImmutableERC721MintByID(
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, 300
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, feeNumerator
);

// ImmutableERC721 does not implement the interface, and hence must be cast to the
Expand Down
2 changes: 1 addition & 1 deletion perfTest/token/erc721/ImmutableERC721ByQuantityPerf.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ contract ImmutableERC721ByQuantityPerfTest is ERC721ByQuantityPerfTest {
super.setUpStart();

ImmutableERC721 immutableERC721 = new ImmutableERC721(
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, 300
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, feeNumerator
);

// ImmutableERC721 does not implement the interface, and hence must be cast to the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ contract ImmutableERC721V2ByQuantityPerfTest is ERC721ByQuantityPerfTest {
super.setUpStart();

ImmutableERC721V2 immutableERC721 = new ImmutableERC721V2(
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, 300
owner, name, symbol, baseURI, contractURI, address(allowlist), feeReceiver, feeNumerator
);

// ImmutableERC721 does not implement the interface, and hence must be cast to the
Expand Down
Loading