@@ -459,15 +459,18 @@ contract StdCheatsMock is StdCheats {
459
459
}
460
460
461
461
contract StdCheatsForkTest is Test {
462
- address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE ;
463
- address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ;
464
462
address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD ;
465
- address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7 ;
466
463
address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A ;
467
464
465
+ MockUSDT public USDT;
466
+ MockUSDC public USDC;
467
+
468
468
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 );
471
474
}
472
475
473
476
function test_RevertIf_CannotAssumeNoBlacklisted_EOA () external {
@@ -479,41 +482,67 @@ contract StdCheatsForkTest is Test {
479
482
}
480
483
481
484
function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist (address addr ) external view {
482
- assumeNotBlacklisted (SHIB, addr);
485
+ assumeNotBlacklisted (address (USDC), addr);
486
+ assumeNotBlacklisted (address (USDT), addr);
483
487
assertTrue (true );
484
488
}
485
489
486
490
function test_RevertIf_AssumeNoBlacklisted_USDC () external {
487
491
// We deploy a mock version so we can properly test the revert.
488
492
StdCheatsMock stdCheatsMock = new StdCheatsMock ();
489
493
vm.expectRevert ();
490
- stdCheatsMock.exposed_assumeNotBlacklisted (USDC, USDC_BLACKLISTED_USER);
494
+ stdCheatsMock.exposed_assumeNotBlacklisted (address ( USDC) , USDC_BLACKLISTED_USER);
491
495
}
492
496
493
497
function testFuzz_AssumeNotBlacklisted_USDC (address addr ) external view {
494
- assumeNotBlacklisted (USDC, addr);
498
+ assumeNotBlacklisted (address ( USDC) , addr);
495
499
assertFalse (USDCLike (USDC).isBlacklisted (addr));
496
500
}
497
501
498
502
function test_RevertIf_AssumeNoBlacklisted_USDT () external {
499
503
// We deploy a mock version so we can properly test the revert.
500
504
StdCheatsMock stdCheatsMock = new StdCheatsMock ();
501
505
vm.expectRevert ();
502
- stdCheatsMock.exposed_assumeNotBlacklisted (USDT, USDT_BLACKLISTED_USER);
506
+ stdCheatsMock.exposed_assumeNotBlacklisted (address ( USDT) , USDT_BLACKLISTED_USER);
503
507
}
504
508
505
509
function testFuzz_AssumeNotBlacklisted_USDT (address addr ) external view {
506
- assumeNotBlacklisted (USDT, addr);
510
+ assumeNotBlacklisted (address ( USDT) , addr);
507
511
assertFalse (USDTLike (USDT).isBlackListed (addr));
508
512
}
513
+ }
514
+
515
+ /// @dev https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#readProxyContract
516
+ interface USDCLike {
517
+ function isBlacklisted (address ) external view returns (bool );
518
+ }
509
519
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;
513
527
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;
517
546
}
518
547
}
519
548
@@ -587,14 +616,6 @@ contract BarERC721 {
587
616
mapping (address => uint256 ) private _balances;
588
617
}
589
618
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
-
598
619
contract RevertingContract {
599
620
constructor () {
600
621
revert ();
0 commit comments