mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol

51 lines
1.4 KiB

3 years ago
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../token/ERC20/extensions/ERC4626.sol";
3 years ago
contract ERC4626Mock is ERC4626 {
constructor(IERC20Metadata asset, string memory name, string memory symbol) ERC20(name, symbol) ERC4626(asset) {}
3 years ago
function mockMint(address account, uint256 amount) public {
_mint(account, amount);
}
function mockBurn(address account, uint256 amount) public {
_burn(account, amount);
}
}
contract ERC4626DecimalMock is ERC4626Mock {
using Math for uint256;
uint8 private immutable _decimals;
constructor(
IERC20Metadata asset,
string memory name,
string memory symbol,
uint8 decimalsOverride
) ERC4626Mock(asset, name, symbol) {
_decimals = decimalsOverride;
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function _initialConvertToShares(
uint256 assets,
Math.Rounding rounding
) internal view virtual override returns (uint256 shares) {
return assets.mulDiv(10 ** decimals(), 10 ** super.decimals(), rounding);
}
function _initialConvertToAssets(
uint256 shares,
Math.Rounding rounding
) internal view virtual override returns (uint256 assets) {
return shares.mulDiv(10 ** super.decimals(), 10 ** decimals(), rounding);
}
}