Skip to content

Commit

Permalink
test: add WrappedAvail tests
Browse files Browse the repository at this point in the history
  • Loading branch information
QEDK committed Dec 23, 2023
1 parent 92ec80a commit 3710338
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/WrappedAvail.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,25 @@ import {IWrappedAvail} from "src/interfaces/IWrappedAvail.sol";
contract WrappedAvail is ERC20Permit, IWrappedAvail {
address public immutable bridge;

error OnlyBridge();
error OnlyAvailBridge();

constructor(address _bridge) ERC20Permit("Wrapped Avail") ERC20("WAVL", "Wrapped Avail") {
// slither-disable-next-line missing-zero-check
bridge = _bridge;
}

modifier onlyBridge() {
modifier onlyAvailBridge() {
if (msg.sender != bridge) {
revert OnlyBridge();
revert OnlyAvailBridge();
}
_;
}

function mint(address destination, uint256 amount) external onlyBridge {
function mint(address destination, uint256 amount) external onlyAvailBridge {
_mint(destination, amount);
}

function burn(address from, uint256 amount) external onlyBridge {
function burn(address from, uint256 amount) external onlyAvailBridge {
_burn(from, amount);
}
}
47 changes: 47 additions & 0 deletions test/WrappedAvailTest.t.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.23;

import {WrappedAvail} from "src/WrappedAvail.sol";
import {Vm, Test} from "forge-std/Test.sol";

contract WrappedAvailTest is Test {
WrappedAvail public avail;
address public bridge;

function setUp() external {
bridge = makeAddr("bridge");
avail = new WrappedAvail(bridge);
}

function testRevertOnlyAvailBridge_mint(address sender, address dest, uint256 amount) external {
vm.assume(dest != address(0) && sender != bridge);
vm.prank(sender);
vm.expectRevert(WrappedAvail.OnlyAvailBridge.selector);
avail.mint(dest, amount);
assertEq(avail.balanceOf(dest), 0);
}

function test_mint(address dest, uint256 amount) external {
vm.assume(dest != address(0));
vm.prank(bridge);
avail.mint(dest, amount);
assertEq(avail.balanceOf(dest), amount);
}

function testRevertOnlyAvailBridge_burn(address sender, address dest, uint256 amount) external {
vm.assume(dest != address(0) && sender != bridge);
vm.prank(sender);
vm.expectRevert(WrappedAvail.OnlyAvailBridge.selector);
avail.burn(dest, amount);
assertEq(avail.balanceOf(dest), 0);
}

function test_burn(address dest, uint256 mintAmount, uint256 burnAmount) external {
vm.assume(dest != address(0) && burnAmount < mintAmount);
vm.startPrank(bridge);
avail.mint(dest, mintAmount);
assertEq(avail.balanceOf(dest), mintAmount);
avail.burn(dest, burnAmount);
assertEq(avail.balanceOf(dest), mintAmount - burnAmount);
}
}

0 comments on commit 3710338

Please sign in to comment.