@@ -459,15 +459,18 @@ contract StdCheatsMock is StdCheats {
459459}
460460
461461contract StdCheatsForkTest is Test {
462- address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE ;
463- address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ;
464462 address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD ;
465- address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7 ;
466463 address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A ;
467464
465+ MockUSDT public USDT;
466+ MockUSDC public USDC;
467+
468468 function setUp () public {
469- // All tests of the `assumeNotBlacklisted` method are fork tests using live contracts.
470- vm.createSelectFork ({urlOrAlias: "mainnet " , blockNumber: 16_428_900 });
469+ USDT = new MockUSDT ();
470+ USDC = new MockUSDC ();
471+
472+ USDC.setBlacklisted (USDC_BLACKLISTED_USER, true );
473+ USDT.setBlacklisted (USDT_BLACKLISTED_USER, true );
471474 }
472475
473476 function test_RevertIf_CannotAssumeNoBlacklisted_EOA () external {
@@ -479,41 +482,67 @@ contract StdCheatsForkTest is Test {
479482 }
480483
481484 function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist (address addr ) external view {
482- assumeNotBlacklisted (SHIB, addr);
485+ assumeNotBlacklisted (address (USDC), addr);
486+ assumeNotBlacklisted (address (USDT), addr);
483487 assertTrue (true );
484488 }
485489
486490 function test_RevertIf_AssumeNoBlacklisted_USDC () external {
487491 // We deploy a mock version so we can properly test the revert.
488492 StdCheatsMock stdCheatsMock = new StdCheatsMock ();
489493 vm.expectRevert ();
490- stdCheatsMock.exposed_assumeNotBlacklisted (USDC, USDC_BLACKLISTED_USER);
494+ stdCheatsMock.exposed_assumeNotBlacklisted (address ( USDC) , USDC_BLACKLISTED_USER);
491495 }
492496
493497 function testFuzz_AssumeNotBlacklisted_USDC (address addr ) external view {
494- assumeNotBlacklisted (USDC, addr);
498+ assumeNotBlacklisted (address ( USDC) , addr);
495499 assertFalse (USDCLike (USDC).isBlacklisted (addr));
496500 }
497501
498502 function test_RevertIf_AssumeNoBlacklisted_USDT () external {
499503 // We deploy a mock version so we can properly test the revert.
500504 StdCheatsMock stdCheatsMock = new StdCheatsMock ();
501505 vm.expectRevert ();
502- stdCheatsMock.exposed_assumeNotBlacklisted (USDT, USDT_BLACKLISTED_USER);
506+ stdCheatsMock.exposed_assumeNotBlacklisted (address ( USDT) , USDT_BLACKLISTED_USER);
503507 }
504508
505509 function testFuzz_AssumeNotBlacklisted_USDT (address addr ) external view {
506- assumeNotBlacklisted (USDT, addr);
510+ assumeNotBlacklisted (address ( USDT) , addr);
507511 assertFalse (USDTLike (USDT).isBlackListed (addr));
508512 }
513+ }
514+
515+ /// @dev https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#readProxyContract
516+ interface USDCLike {
517+ function isBlacklisted (address ) external view returns (bool );
518+ }
509519
510- function test_dealUSDC () external {
511- // roll fork to the point when USDC contract updated to store balance in packed slots
512- vm.rollFork (19279215 );
520+ /// @dev https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract
521+ interface USDTLike {
522+ function isBlackListed (address ) external view returns (bool );
523+ }
524+
525+ contract MockUSDT is USDTLike {
526+ mapping (address => bool ) private blacklist;
513527
514- uint256 balance = 100e6 ;
515- deal (USDC, address (this ), balance);
516- assertEq (IERC20 (USDC).balanceOf (address (this )), balance);
528+ function isBlackListed (address addr ) external view returns (bool ) {
529+ return blacklist[addr];
530+ }
531+
532+ function setBlacklisted (address addr , bool value ) external {
533+ blacklist[addr] = value;
534+ }
535+ }
536+
537+ contract MockUSDC is USDCLike {
538+ mapping (address => bool ) private blacklist;
539+
540+ function isBlacklisted (address addr ) external view returns (bool ) {
541+ return blacklist[addr];
542+ }
543+
544+ function setBlacklisted (address addr , bool value ) external {
545+ blacklist[addr] = value;
517546 }
518547}
519548
@@ -587,14 +616,6 @@ contract BarERC721 {
587616 mapping (address => uint256 ) private _balances;
588617}
589618
590- interface USDCLike {
591- function isBlacklisted (address ) external view returns (bool );
592- }
593-
594- interface USDTLike {
595- function isBlackListed (address ) external view returns (bool );
596- }
597-
598619contract RevertingContract {
599620 constructor () {
600621 revert ();
0 commit comments