Skip to content

Commit 13e1c8a

Browse files
Krishang NadgaudaKrishang Nadgauda
authored andcommitted
add fuzz test for unwrap
1 parent 94436ae commit 13e1c8a

File tree

1 file changed

+45
-16
lines changed

1 file changed

+45
-16
lines changed

src/test/Multiwrap.t.sol

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -527,31 +527,60 @@ contract MultiwrapTest is BaseTest {
527527
}
528528

529529
function test_fuzz_state_wrap(uint256 x) public {
530+
531+
if(x == 0) {
532+
return;
533+
}
534+
530535
ITokenBundle.Token[] memory tokensToWrap = getTokensToWrap(x);
531536

532537
uint256 expectedIdForWrappedToken = multiwrap.nextTokenIdToMint();
533538
address recipient = address(0x123);
534539

535540
vm.prank(address(tokenOwner));
536-
if(x == 0) {
537-
vm.expectRevert("TokenBundle: no tokens to bind.");
538-
multiwrap.wrap(tokensToWrap, uriForWrappedToken, recipient);
539-
} else {
540-
541-
multiwrap.wrap(tokensToWrap, uriForWrappedToken, recipient);
541+
multiwrap.wrap(tokensToWrap, uriForWrappedToken, recipient);
542542

543-
assertEq(expectedIdForWrappedToken + 1, multiwrap.nextTokenIdToMint());
543+
assertEq(expectedIdForWrappedToken + 1, multiwrap.nextTokenIdToMint());
544544

545-
ITokenBundle.Token[] memory contentsOfWrappedToken = multiwrap.getWrappedContents(expectedIdForWrappedToken);
546-
assertEq(contentsOfWrappedToken.length, tokensToWrap.length);
547-
for (uint256 i = 0; i < contentsOfWrappedToken.length; i += 1) {
548-
assertEq(contentsOfWrappedToken[i].assetContract, tokensToWrap[i].assetContract);
549-
assertEq(uint256(contentsOfWrappedToken[i].tokenType), uint256(tokensToWrap[i].tokenType));
550-
assertEq(contentsOfWrappedToken[i].tokenId, tokensToWrap[i].tokenId);
551-
assertEq(contentsOfWrappedToken[i].totalAmount, tokensToWrap[i].totalAmount);
552-
}
545+
ITokenBundle.Token[] memory contentsOfWrappedToken = multiwrap.getWrappedContents(expectedIdForWrappedToken);
546+
assertEq(contentsOfWrappedToken.length, tokensToWrap.length);
547+
for (uint256 i = 0; i < contentsOfWrappedToken.length; i += 1) {
548+
assertEq(contentsOfWrappedToken[i].assetContract, tokensToWrap[i].assetContract);
549+
assertEq(uint256(contentsOfWrappedToken[i].tokenType), uint256(tokensToWrap[i].tokenType));
550+
assertEq(contentsOfWrappedToken[i].tokenId, tokensToWrap[i].tokenId);
551+
assertEq(contentsOfWrappedToken[i].totalAmount, tokensToWrap[i].totalAmount);
552+
}
553+
554+
assertEq(uriForWrappedToken, multiwrap.tokenURI(expectedIdForWrappedToken));
555+
}
556+
557+
function test_fuzz_state_unwrap(uint256 x) public {
553558

554-
assertEq(uriForWrappedToken, multiwrap.tokenURI(expectedIdForWrappedToken));
559+
// ===== setup: wrap tokens =====
560+
561+
if(x == 0) {
562+
return;
555563
}
564+
565+
ITokenBundle.Token[] memory tokensToWrap = getTokensToWrap(x);
566+
567+
uint256 expectedIdForWrappedToken = multiwrap.nextTokenIdToMint();
568+
address recipient = address(0x123);
569+
570+
vm.prank(address(tokenOwner));
571+
multiwrap.wrap(tokensToWrap, uriForWrappedToken, recipient);
572+
573+
// ===== target test content =====
574+
575+
vm.prank(recipient);
576+
multiwrap.unwrap(expectedIdForWrappedToken, recipient);
577+
578+
vm.expectRevert("ERC721: owner query for nonexistent token");
579+
multiwrap.ownerOf(expectedIdForWrappedToken);
580+
581+
assertEq("", multiwrap.tokenURI(expectedIdForWrappedToken));
582+
583+
ITokenBundle.Token[] memory contentsOfWrappedToken = multiwrap.getWrappedContents(expectedIdForWrappedToken);
584+
assertEq(contentsOfWrappedToken.length, 0);
556585
}
557586
}

0 commit comments

Comments
 (0)