Skip to content

Commit

Permalink
Merge branch '2024-09-13-FlowERC1155PreviewDefinedFlowIOForERC1155Sin…
Browse files Browse the repository at this point in the history
…gleElementArraysTest' into 2024-09-13-FlowERC1155PreviewDefinedFlowIOForERC721SingleElementArrays
  • Loading branch information
Erikd-dev committed Sep 15, 2024
2 parents 4f49a01 + bfc204d commit 99ad033
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 33 deletions.
63 changes: 32 additions & 31 deletions test/abstract/FlowTransferOperation.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: CAL
pragma solidity = 0.8.19;
pragma solidity ^0.8.19;

import {Test, Vm} from "forge-std/Test.sol";
import {
Expand Down Expand Up @@ -44,24 +44,25 @@ abstract contract FlowTransferOperation is Test {
address addressA,
address addressB,
uint256 erc721InTokenId,
uint256 erc1155OutAmmount,
uint256 erc1155OutAmount,
uint256 erc1155OutTokenId
) internal returns (FlowTransferV1 memory transfer) {
transfer = onlyTransferRC721ToERC1155(addressA, addressB, erc721InTokenId, erc1155OutAmmount, erc1155OutTokenId);
mockTransferRC721ToERC1155(addressA, addressB, erc721InTokenId, erc1155OutAmmount, erc1155OutTokenId);
transfer =
createTransferERC721ToERC1155(addressA, addressB, erc721InTokenId, erc1155OutAmount, erc1155OutTokenId);
mockTransferERC721ToERC1155(addressA, addressB, erc721InTokenId, erc1155OutAmount, erc1155OutTokenId);
}

function onlyTransferRC721ToERC1155(
function createTransferERC721ToERC1155(
address addressA,
address addressB,
uint256 erc721InTokenId,
uint256 erc1155OutAmmount,
uint256 erc1155OutAmount,
uint256 erc1155OutTokenId
) internal view returns (FlowTransferV1 memory) {
{
vm.assume(sentinel != erc721InTokenId);
vm.assume(sentinel != erc1155OutTokenId);
vm.assume(sentinel != erc1155OutAmmount);
vm.assume(sentinel != erc1155OutAmount);
assumeAddressNotSentinel(addressA);
assumeAddressNotSentinel(addressB);
}
Expand All @@ -76,17 +77,17 @@ abstract contract FlowTransferOperation is Test {
from: addressB,
to: addressA,
id: erc1155OutTokenId,
amount: erc1155OutAmmount
amount: erc1155OutAmount
});

return FlowTransferV1(new ERC20Transfer[](0), erc721Transfers, erc1155Transfers);
}

function mockTransferRC721ToERC1155(
function mockTransferERC721ToERC1155(
address addressA,
address addressB,
uint256 erc721InTokenId,
uint256 erc1155OutAmmount,
uint256 erc1155OutAmount,
uint256 erc1155OutTokenId
) internal {
vm.mockCall(iTokenB, abi.encodeWithSelector(bytes4(keccak256("safeTransferFrom(address,address,uint256)"))), "");
Expand All @@ -101,7 +102,7 @@ abstract contract FlowTransferOperation is Test {
vm.expectCall(
iTokenC,
abi.encodeWithSelector(
IERC1155.safeTransferFrom.selector, addressB, addressA, erc1155OutTokenId, erc1155OutAmmount, ""
IERC1155.safeTransferFrom.selector, addressB, addressA, erc1155OutTokenId, erc1155OutAmount, ""
)
);
}
Expand All @@ -110,11 +111,11 @@ abstract contract FlowTransferOperation is Test {
internal
returns (FlowTransferV1 memory transfer)
{
transfer = onlyTransferERC20ToERC721(addressA, addressB, erc20InAmount, erc721OutTokenId);
transfer = createTransferERC20ToERC721(addressA, addressB, erc20InAmount, erc721OutTokenId);
mockTransferERC20ToERC721(addressA, addressB, erc20InAmount, erc721OutTokenId);
}

function onlyTransferERC20ToERC721(
function createTransferERC20ToERC721(
address addressA,
address addressB,
uint256 erc20InAmount,
Expand Down Expand Up @@ -163,11 +164,11 @@ abstract contract FlowTransferOperation is Test {
uint256 erc721InTokenId,
uint256 erc721OutTokenId
) internal returns (FlowTransferV1 memory transfer) {
transfer = onlyTransferERC721ToERC721(addressA, addressB, erc721InTokenId, erc721OutTokenId);
transfer = createTransferERC721ToERC721(addressA, addressB, erc721InTokenId, erc721OutTokenId);
mockTransferERC721ToERC721(addressA, addressB, erc721InTokenId, erc721OutTokenId);
}

function onlyTransferERC721ToERC721(
function createTransferERC721ToERC721(
address addressA,
address addressB,
uint256 erc721InTokenId,
Expand Down Expand Up @@ -213,50 +214,50 @@ abstract contract FlowTransferOperation is Test {
);
}

function transfersERC20toERC20(address addressA, address addressB, uint256 erc20BInAmmount, uint256 erc20OutAmmount)
function transfersERC20toERC20(address addressA, address addressB, uint256 erc20BInAmount, uint256 erc20OutAmount)
internal
returns (FlowTransferV1 memory transfer)
{
transfer = onlyTransfersERC20toERC20(addressA, addressB, erc20BInAmmount, erc20OutAmmount);
mockTransfersERC20toERC20(addressA, addressB, erc20BInAmmount, erc20OutAmmount);
transfer = createTransfersERC20toERC20(addressA, addressB, erc20BInAmount, erc20OutAmount);
mockTransfersERC20toERC20(addressA, addressB, erc20BInAmount, erc20OutAmount);
}

function onlyTransfersERC20toERC20(
function createTransfersERC20toERC20(
address addressA,
address addressB,
uint256 erc20BInAmmount,
uint256 erc20OutAmmount
uint256 erc20BInAmount,
uint256 erc20OutAmount
) internal view returns (FlowTransferV1 memory transfer) {
{
vm.assume(sentinel != erc20BInAmmount);
vm.assume(sentinel != erc20OutAmmount);
vm.assume(sentinel != erc20BInAmount);
vm.assume(sentinel != erc20OutAmount);
assumeAddressNotSentinel(addressA);
assumeAddressNotSentinel(addressB);
}

{
ERC20Transfer[] memory erc20Transfers = new ERC20Transfer[](2);
erc20Transfers[0] =
ERC20Transfer({token: address(iTokenA), from: addressA, to: addressB, amount: erc20BInAmmount});
ERC20Transfer({token: address(iTokenA), from: addressA, to: addressB, amount: erc20BInAmount});
erc20Transfers[1] =
ERC20Transfer({token: address(iTokenB), from: addressB, to: addressA, amount: erc20OutAmmount});
ERC20Transfer({token: address(iTokenB), from: addressB, to: addressA, amount: erc20OutAmount});
transfer = FlowTransferV1(erc20Transfers, new ERC721Transfer[](0), new ERC1155Transfer[](0));
}
}

function mockTransfersERC20toERC20(
address addressA,
address addressB,
uint256 erc20BInAmmount,
uint256 erc20OutAmmount
uint256 erc20BInAmount,
uint256 erc20OutAmount
) internal {
vm.mockCall(address(iTokenA), abi.encodeWithSelector(IERC20.transferFrom.selector), abi.encode(true));
vm.expectCall(
address(iTokenA), abi.encodeWithSelector(IERC20.transferFrom.selector, addressA, addressB, erc20BInAmmount)
address(iTokenA), abi.encodeWithSelector(IERC20.transferFrom.selector, addressA, addressB, erc20BInAmount)
);

vm.mockCall(address(iTokenB), abi.encodeWithSelector(IERC20.transfer.selector), abi.encode(true));
vm.expectCall(address(iTokenB), abi.encodeWithSelector(IERC20.transfer.selector, addressA, erc20OutAmmount));
vm.expectCall(address(iTokenB), abi.encodeWithSelector(IERC20.transfer.selector, addressA, erc20OutAmount));
}

function transferERC1155ToERC1155(
Expand All @@ -267,15 +268,15 @@ abstract contract FlowTransferOperation is Test {
uint256 erc1155OutTokenId,
uint256 erc1155OutAmount
) internal returns (FlowTransferV1 memory transfer) {
transfer = onlyTransferERC1155ToERC1155(
transfer = createTransferERC1155ToERC1155(
addressA, addressB, erc1155BInTokenId, erc1155BInAmount, erc1155OutTokenId, erc1155OutAmount
);
MockTransferERC1155ToERC1155(
addressA, addressB, erc1155BInTokenId, erc1155BInAmount, erc1155OutTokenId, erc1155OutAmount
);
}

function onlyTransferERC1155ToERC1155(
function createTransferERC1155ToERC1155(
address addressA,
address addressB,
uint256 erc1155BInTokenId,
Expand Down
4 changes: 2 additions & 2 deletions test/abstract/flow/AbstractPreviewTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ contract AbstractPreviewTest is FlowBasicTest {
20 ether,
10 ether,
5,
onlyTransferERC1155ToERC1155(alice, flow, erc1155TokenId, erc1155Amount, erc1155TokenId, erc1155Amount)
createTransferERC1155ToERC1155(alice, flow, erc1155TokenId, erc1155Amount, erc1155TokenId, erc1155Amount)
);

assertEq(transferHash, abstractStackToFlowCall(flow, stack), "wrong compare Structs");
Expand All @@ -117,7 +117,7 @@ contract AbstractPreviewTest is FlowBasicTest {
assumeEtchable(alice, address(flow));

(uint256[] memory stack, bytes32 transferHash) = mintAndBurnFlowStack(
alice, 20 ether, 10 ether, 5, onlyTransferERC721ToERC721(alice, flow, erc721TokenInId, erc721TokenOutId)
alice, 20 ether, 10 ether, 5, createTransferERC721ToERC721(alice, flow, erc721TokenInId, erc721TokenOutId)
);

assertEq(transferHash, abstractStackToFlowCall(flow, stack), "wrong compare Structs");
Expand Down

0 comments on commit 99ad033

Please sign in to comment.