@@ -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