Skip to content

Commit

Permalink
test: remove bundle, use the right encoder
Browse files Browse the repository at this point in the history
  • Loading branch information
adjisb authored and mvanmeerbeck committed Oct 2, 2023
1 parent 48cded2 commit 17070f7
Showing 1 changed file with 11 additions and 61 deletions.
72 changes: 11 additions & 61 deletions packages/marketplace/test/utils/assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,7 @@
// "20 eth" == AssetETH(20), "11 Sand" == AssetERC20(SandTokenAddress, 11)
// some NFT" == AssetERC721(nftContractAddress, tokenId), etc
// SEE: LibAsset.sol
import {
AbiCoder,
BytesLike,
Contract,
keccak256,
Numeric,
solidityPackedKeccak256,
} from 'ethers';
import {AbiCoder, BytesLike, Contract, keccak256, Numeric} from 'ethers';

export enum AssetClassType {
INVALID_ASSET_CLASS = '0x0',
Expand Down Expand Up @@ -81,66 +74,23 @@ export const AssetERC1155 = async (
value: value,
});

export const AssetBundle = async (
erc20: {token: Contract; value: Numeric}[],
erc721: {
token: Contract;
tokenId: Numeric;
}[],
erc1155: {
token: Contract;
tokenId: Numeric;
value: Numeric;
}[]
): Promise<Asset> => {
const erc20Details = [];
for (const x of erc20) {
erc20Details.push([await x.token.getAddress(), x.value]);
}
const erc721Details = [];
for (const x of erc721) {
erc721Details.push([
await x.token.getAddress(),
x.tokenId,
// TODO: Test value !=1
1,
]);
}
const erc1155Details = [];
for (const x of erc1155) {
erc1155Details.push([await x.token.getAddress(), x.tokenId, x.value]);
}
return {
assetType: {
assetClass: BUNDLE_ASSET_CLASS,
data: AbiCoder.defaultAbiCoder().encode(
[
'tuple(address, uint256)[]',
'tuple(address, uint256, uint256)[]',
'tuple(address, uint256, uint256)[]',
],
[erc20Details, erc721Details, erc1155Details]
),
},
// TODO: It make sense tho have multipler bundles >1 ????
value: 1,
};
};

export function hashAssetType(a: AssetType) {
if (a.assetClass === AssetClassType.INVALID_ASSET_CLASS) {
throw new Error('Invalid assetClass' + a.assetClass);
}
// There is aproblem with solidityPackedKeccak256 and byte4 => a.assetClass + '0'.repeat(56)
return solidityPackedKeccak256(
['bytes32', 'uint256', 'bytes32'],
[ASSET_TYPE_TYPEHASH, a.assetClass, keccak256(a.data)]
return keccak256(
AbiCoder.defaultAbiCoder().encode(
['bytes32', 'uint256', 'bytes32'],
[ASSET_TYPE_TYPEHASH, a.assetClass, keccak256(a.data)]
)
);
}

export function hashAsset(a: Asset) {
return solidityPackedKeccak256(
['bytes32', 'bytes32', 'uint256'],
[ASSET_TYPEHASH, hashAssetType(a.assetType), a.value]
return keccak256(
AbiCoder.defaultAbiCoder().encode(
['bytes32', 'bytes32', 'uint256'],
[ASSET_TYPEHASH, hashAssetType(a.assetType), a.value]
)
);
}

1 comment on commit 17070f7

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage for this commit

70.42%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/marketplace/contracts/exchange
   AssetMatcher.sol100%100%100%100%
   Exchange.sol86.79%85%85.71%89.47%152, 54, 79, 79–80
   ExchangeCore.sol78.76%59.09%100%89.66%116, 139–140, 140, 140, 140, 140, 143, 143, 204–205, 207–208, 245, 247–249, 255–257, 280–281, 298, 76
   OrderValidator.sol69.81%53.85%100%81.82%38, 54, 61–62, 62, 62, 72, 82–83, 88, 90, 90, 90, 90–91, 93
   WhiteList.sol97.73%93.75%100%100%57
packages/marketplace/contracts/exchange/libraries
   LibFill.sol55%33.33%66.67%63.64%48–49, 61, 71–72, 72, 72–73
   LibOrderDataGeneric.sol22.81%22.22%40%20.59%16–23, 25–26, 28, 41, 43, 43, 43–44, 46–47, 50, 50, 50–51, 53, 56, 56, 56–57, 59, 62, 66, 68, 68, 68–70, 73, 82, 82, 82–84
packages/marketplace/contracts/interfaces
   IAssetMatcher.sol100%100%100%100%
   IOrderValidator.sol100%100%100%100%
   IRoyaltiesProvider.sol100%100%100%100%
   IWhiteList.sol100%100%100%100%
packages/marketplace/contracts/lib-asset
   LibAsset.sol100%100%100%100%
packages/marketplace/contracts/lib-bp
   BpLibrary.sol100%100%100%100%
packages/marketplace/contracts/lib-order
   LibMath.sol27.50%18.75%50%30%100–103, 17–18, 33–34, 50, 50, 50–51, 72, 72, 72–73, 75, 88, 88, 88–89, 93, 93, 93, 93, 93, 97
   LibOrder.sol66.67%50%100%72.73%105, 105, 107, 107, 41–43, 54, 66
   LibOrderData.sol100%100%100%100%
packages/marketplace/contracts/lib-part
   LibPart.sol0%100%0%0%21
packages/marketplace/contracts/royalties
   IERC2981.sol100%100%100%100%
   LibRoyalties2981.sol35.71%25%100%33.33%19, 22–23, 23, 23–27
packages/marketplace/contracts/royalties-registry
   IMultiRoyaltyRecipients.sol100%100%100%100%
   RoyaltiesRegistry.sol70.40%67.65%93.33%67.11%160, 166, 166, 166–167, 170, 170, 170–171, 174, 202–203, 212, 216, 232–233, 236–244, 247, 247, 247–248, 250, 256, 259, 273–274, 276, 60
packages/marketplace/contracts/transfer-manager
   TransferExecutor.sol75.76%64.29%100%81.25%49–51, 58–59, 63, 66–67
   TransferManager.sol72.26%57.14%100%78.16%110, 114–115, 146–148, 148, 148–149, 156–157, 192–194, 194, 194–195, 195, 195–196, 202–203, 203, 203–204, 208, 248, 265, 269–271, 271, 271–273, 278–279, 302, 306–307, 62, 82–83
packages/marketplace/contracts/transfer-manager/interfaces
   IRoyaltyUGC.sol100%100%100%100%
   ITransferExecutor.sol100%100%100%100%
   ITransferManager.sol100%100%100%100%
packages/marketplace/contracts/transfer-manager/lib
   LibDeal.sol100%100%100%100%
   LibFeeSide.sol44.44%37.50%100%44.44%21, 24, 24, 24–25, 27, 27, 27–28, 30
   LibTransfer.sol0%0%0%0%7–8, 8, 8

Please sign in to comment.