Files
smom-dbis-138/test/compliance/CompliantFiatTokenTest.t.sol
2026-03-02 12:14:09 -08:00

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);
}
}