67 lines
1.8 KiB
Solidity
67 lines
1.8 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.19;
|
|
|
|
import {Test} from "forge-std/Test.sol";
|
|
import {CompliantFiatToken} from "../../contracts/tokens/CompliantFiatToken.sol";
|
|
|
|
contract CompliantFiatTokenTest is Test {
|
|
CompliantFiatToken public token;
|
|
address public owner;
|
|
address public admin;
|
|
address public user1;
|
|
|
|
function setUp() public {
|
|
owner = address(this);
|
|
admin = address(this);
|
|
user1 = address(0x1);
|
|
token = new CompliantFiatToken(
|
|
"Euro Coin (Compliant)",
|
|
"cEURC",
|
|
6,
|
|
"EUR",
|
|
owner,
|
|
admin,
|
|
1_000_000 * 10**6
|
|
);
|
|
}
|
|
|
|
function testDecimals() public view {
|
|
assertEq(token.decimals(), 6);
|
|
}
|
|
|
|
function testCurrencyCode() public view {
|
|
assertEq(token.currencyCode(), "EUR");
|
|
}
|
|
|
|
function testInitialSupply() public view {
|
|
assertEq(token.totalSupply(), 1_000_000 * 10**6);
|
|
assertEq(token.balanceOf(owner), 1_000_000 * 10**6);
|
|
}
|
|
|
|
function testTransfer() public {
|
|
uint256 amount = 1000 * 10**6;
|
|
token.transfer(user1, amount);
|
|
assertEq(token.balanceOf(user1), amount);
|
|
assertEq(token.balanceOf(owner), 1_000_000 * 10**6 - amount);
|
|
}
|
|
|
|
function testPause() public {
|
|
token.pause();
|
|
assertTrue(token.paused());
|
|
vm.expectRevert();
|
|
token.transfer(user1, 1000 * 10**6);
|
|
}
|
|
|
|
function testMint() public {
|
|
token.mint(user1, 5000 * 10**6);
|
|
assertEq(token.balanceOf(user1), 5000 * 10**6);
|
|
assertEq(token.totalSupply(), 1_000_000 * 10**6 + 5000 * 10**6);
|
|
}
|
|
|
|
function testBurn() public {
|
|
token.burn(1000 * 10**6);
|
|
assertEq(token.balanceOf(owner), 1_000_000 * 10**6 - 1000 * 10**6);
|
|
assertEq(token.totalSupply(), 1_000_000 * 10**6 - 1000 * 10**6);
|
|
}
|
|
}
|