How to test your contract
import {MangroveTest} from "mgv_test/lib/MangroveTest.sol";
import {PolygonFork, PinnedPolygonFork} from "mgv_test/lib/forks/Polygon.sol";
import {Ghost, IMangrove, IERC20} from "src/toy_strategies/offer_maker/Ghost.sol";
import {MgvStructs} from "src/MgvLib.sol";
import {MgvReader} from "src/periphery/MgvReader.sol";
import {console} from "lib/forge-std-vendored/src/console.sol";
contract GhostTest is MangroveTest {
IERC20 weth;
IERC20 dai;
IERC20 usdc;
PolygonFork fork;
address payable taker;
Ghost strat;
receive() external payable virtual {} // Needed if the contract should receive funds
function setUp() public override {
// use the pinned Polygon fork
fork = new PinnedPolygonFork(); // use polygon fork to use dai, usdc and weth addresses
fork.setUp();
// use convenience helpers to setup Mangrove
mgv = setupMangrove();
// setup tokens, markets and approve them
dai = IERC20(fork.get("DAI"));
weth = IERC20(fork.get("WETH"));
usdc = IERC20(fork.get("USDC"));
setupMarket(dai, weth);
setupMarket(usdc, weth);
// setup separate taker and give some native token (for gas) + USDC and DAI
taker = freshAddress("taker");
deal(taker, 10_000_000);
deal($(usdc), taker, cash(usdc, 10_000));
deal($(dai), taker, cash(dai, 10_000));
// approve DAI and USDC on Mangrove for taker
vm.startPrank(taker);
dai.approve($(mgv), type(uint).max);
usdc.approve($(mgv), type(uint).max);
vm.stopPrank();
}
...Last updated
Was this helpful?