Skip to content

Commit

Permalink
Add determineAddress tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ScreamingHawk committed May 14, 2024
1 parent ea8a562 commit 44af096
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 27 deletions.
44 changes: 33 additions & 11 deletions test/tokens/ERC1155/presets/ERC1155Items.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,28 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {
assertTrue(token.hasRole(keccak256("ROYALTY_ADMIN_ROLE"), owner));
}

function testFactoryDetermineAddress(
address _proxyOwner,
address tokenOwner,
string memory name,
string memory baseURI,
string memory contractURI,
address royaltyReceiver,
uint96 royaltyFeeNumerator
) public {
vm.assume(_proxyOwner != address(0));
vm.assume(tokenOwner != address(0));
vm.assume(royaltyReceiver != address(0));
royaltyFeeNumerator = uint96(bound(royaltyFeeNumerator, 0, 10_000));
ERC1155ItemsFactory factory = new ERC1155ItemsFactory(address(this));
address deployedAddr =
factory.deploy(_proxyOwner, tokenOwner, name, baseURI, contractURI, royaltyReceiver, royaltyFeeNumerator);
address predictedAddr = factory.determineAddress(
_proxyOwner, tokenOwner, name, baseURI, contractURI, royaltyReceiver, royaltyFeeNumerator
);
assertEq(deployedAddr, predictedAddr);
}

//
// Metadata
//
Expand All @@ -128,7 +150,10 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {

vm.expectRevert(
abi.encodePacked(
"AccessControl: account ", Strings.toHexString(caller), " is missing role ", vm.toString(keccak256("MINTER_ROLE"))
"AccessControl: account ",
Strings.toHexString(caller),
" is missing role ",
vm.toString(keccak256("MINTER_ROLE"))
)
);
vm.prank(caller);
Expand All @@ -140,7 +165,10 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {
amounts[0] = 1;
vm.expectRevert(
abi.encodePacked(
"AccessControl: account ", Strings.toHexString(caller), " is missing role ", vm.toString(keccak256("MINTER_ROLE"))
"AccessControl: account ",
Strings.toHexString(caller),
" is missing role ",
vm.toString(keccak256("MINTER_ROLE"))
)
);
vm.prank(caller);
Expand Down Expand Up @@ -265,9 +293,7 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {
uint256[] memory tokenIds,
uint256[] memory amounts,
uint256[] memory burnAmounts
)
public
{
) public {
assumeSafeAddress(caller);
vm.assume(caller != owner);
vm.assume(caller != proxyOwner);
Expand Down Expand Up @@ -426,9 +452,7 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {
address receiver,
uint96 feeNumerator,
uint256 salePrice
)
public
{
) public {
vm.assume(feeNumerator <= 10000);
vm.assume(receiver != address(0));
vm.assume(caller != owner);
Expand Down Expand Up @@ -460,9 +484,7 @@ contract ERC1155ItemsTest is TestHelper, IERC1155ItemsSignals {
address receiver,
uint96 feeNumerator,
uint256 salePrice
)
public
{
) public {
vm.assume(feeNumerator <= 10000);
vm.assume(receiver != address(0));
vm.assume(caller != owner);
Expand Down
19 changes: 11 additions & 8 deletions test/tokens/ERC1155/utility/sale/ERC1155SaleBase.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,15 @@ contract ERC1155SaleTest is TestHelper, IERC1155SaleSignals, IERC1155SupplySigna
checkSelectorCollision(0x4782f779); // withdrawETH(address,uint256)
}

function testFactoryDetermineAddress(address _proxyOwner, address tokenOwner, address items) public {
vm.assume(_proxyOwner != address(0));
vm.assume(tokenOwner != address(0));
ERC1155SaleFactory factory = new ERC1155SaleFactory(address(this));
address deployedAddr = factory.deploy(_proxyOwner, tokenOwner, items);
address predictedAddr = factory.determineAddress(_proxyOwner, tokenOwner, items);
assertEq(deployedAddr, predictedAddr);
}

//
// Withdraw
//
Expand All @@ -113,10 +122,7 @@ contract ERC1155SaleTest is TestHelper, IERC1155SaleSignals, IERC1155SupplySigna
}

// Withdraw success ETH
function testWithdrawETH(bool useFactory, address withdrawTo, uint256 amount)
public
withFactory(useFactory)
{
function testWithdrawETH(bool useFactory, address withdrawTo, uint256 amount) public withFactory(useFactory) {
assumeSafeAddress(withdrawTo);

address _sale = address(sale);
Expand All @@ -131,10 +137,7 @@ contract ERC1155SaleTest is TestHelper, IERC1155SaleSignals, IERC1155SupplySigna
}

// Withdraw success ERC20
function testWithdrawERC20(bool useFactory, address withdrawTo, uint256 amount)
public
withFactory(useFactory)
{
function testWithdrawERC20(bool useFactory, address withdrawTo, uint256 amount) public withFactory(useFactory) {
assumeSafeAddress(withdrawTo);

address _sale = address(sale);
Expand Down
20 changes: 19 additions & 1 deletion test/tokens/ERC20/ERC20Items.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,21 @@ contract ERC20ItemsTest is TestHelper, IERC20ItemsSignals {
assertEq(token.decimals(), DECIMALS);
}

function testFactoryDetermineAddress(
address _proxyOwner,
address tokenOwner,
string memory name,
string memory symbol,
uint8 decimals
) public {
vm.assume(_proxyOwner != address(0));
vm.assume(tokenOwner != address(0));
ERC20ItemsFactory factory = new ERC20ItemsFactory(address(this));
address deployedAddr = factory.deploy(_proxyOwner, tokenOwner, name, symbol, decimals);
address predictedAddr = factory.determineAddress(_proxyOwner, tokenOwner, name, symbol, decimals);
assertEq(deployedAddr, predictedAddr);
}

//
// Minting
//
Expand All @@ -99,7 +114,10 @@ contract ERC20ItemsTest is TestHelper, IERC20ItemsSignals {

vm.expectRevert(
abi.encodePacked(
"AccessControl: account ", Strings.toHexString(caller), " is missing role ", vm.toString(keccak256("MINTER_ROLE"))
"AccessControl: account ",
Strings.toHexString(caller),
" is missing role ",
vm.toString(keccak256("MINTER_ROLE"))
)
);
vm.prank(caller);
Expand Down
37 changes: 30 additions & 7 deletions test/tokens/ERC721/presets/ERC721Items.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,30 @@ contract ERC721ItemsTest is TestHelper, IERC721ItemsSignals {
assertTrue(token.hasRole(keccak256("ROYALTY_ADMIN_ROLE"), owner));
}

function testFactoryDetermineAddress(
address _proxyOwner,
address tokenOwner,
string memory name,
string memory symbol,
string memory baseURI,
string memory contractURI,
address royaltyReceiver,
uint96 royaltyFeeNumerator
) public {
vm.assume(_proxyOwner != address(0));
vm.assume(tokenOwner != address(0));
vm.assume(royaltyReceiver != address(0));
royaltyFeeNumerator = uint96(bound(royaltyFeeNumerator, 0, 10_000));
ERC721ItemsFactory factory = new ERC721ItemsFactory(address(this));
address deployedAddr = factory.deploy(
_proxyOwner, tokenOwner, name, symbol, baseURI, contractURI, royaltyReceiver, royaltyFeeNumerator
);
address predictedAddr = factory.determineAddress(
_proxyOwner, tokenOwner, name, symbol, baseURI, contractURI, royaltyReceiver, royaltyFeeNumerator
);
assertEq(deployedAddr, predictedAddr);
}

//
// Metadata
//
Expand Down Expand Up @@ -155,7 +179,10 @@ contract ERC721ItemsTest is TestHelper, IERC721ItemsSignals {

vm.expectRevert(
abi.encodePacked(
"AccessControl: account ", Strings.toHexString(caller), " is missing role ", vm.toString(keccak256("MINTER_ROLE"))
"AccessControl: account ",
Strings.toHexString(caller),
" is missing role ",
vm.toString(keccak256("MINTER_ROLE"))
)
);
vm.prank(caller);
Expand Down Expand Up @@ -357,9 +384,7 @@ contract ERC721ItemsTest is TestHelper, IERC721ItemsSignals {
address receiver,
uint96 feeNumerator,
uint256 salePrice
)
public
{
) public {
vm.assume(feeNumerator <= 10000);
vm.assume(receiver != address(0));
vm.assume(caller != owner);
Expand Down Expand Up @@ -391,9 +416,7 @@ contract ERC721ItemsTest is TestHelper, IERC721ItemsSignals {
address receiver,
uint96 feeNumerator,
uint256 salePrice
)
public
{
) public {
vm.assume(feeNumerator <= 10000);
vm.assume(receiver != address(0));
vm.assume(caller != owner);
Expand Down
9 changes: 9 additions & 0 deletions test/tokens/ERC721/utility/sale/ERC721SaleBase.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,15 @@ contract ERC721SaleTest is TestHelper, IERC721SaleSignals {
checkSelectorCollision(0x4782f779); // withdrawETH(address,uint256)
}

function testFactoryDetermineAddress(address _proxyOwner, address tokenOwner, address items) public {
vm.assume(_proxyOwner != address(0));
vm.assume(tokenOwner != address(0));
ERC721SaleFactory factory = new ERC721SaleFactory(address(this));
address deployedAddr = factory.deploy(_proxyOwner, tokenOwner, items);
address predictedAddr = factory.determineAddress(_proxyOwner, tokenOwner, items);
assertEq(deployedAddr, predictedAddr);
}

//
// Withdraw
//
Expand Down

0 comments on commit 44af096

Please sign in to comment.