synapsecns/sanguine

View on GitHub
packages/contracts-rfq/test/mocks/WETHMock.sol

Summary

Maintainability
Test Coverage
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {Address} from "@openzeppelin/contracts/utils/Address.sol";

import {CommonBase} from "forge-std/Base.sol";

// solhint-disable no-empty-blocks
/// @notice WETH mock for testing purposes. DO NOT USE IN PRODUCTION.
contract WETHMock is ERC20, CommonBase {
    constructor() ERC20("Mock Wrapped Ether", "Mock WETH") {}

    receive() external payable {
        deposit();
    }

    /// @notice We include an empty "test" function so that this contract does not appear in the coverage report.
    function testWETHMock() external {}

    function mint(address to, uint256 amount) external {
        uint256 newBalance = address(this).balance + amount;
        vm.deal(address(this), newBalance);
        _mint(to, amount);
    }

    function withdraw(uint256 amount) external {
        _burn(msg.sender, amount);
        Address.sendValue(payable(msg.sender), amount);
    }

    function deposit() public payable {
        _mint(msg.sender, msg.value);
    }
}