// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {Test} from "forge-std/Test.sol"; import {CompliantWrappedToken} from "../../contracts/tokens/CompliantWrappedToken.sol"; contract CompliantWrappedTokenTest is Test { CompliantWrappedToken public token; address public admin; address public bridge; address public user1; bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE"); bytes32 constant BURNER_ROLE = keccak256("BURNER_ROLE"); function setUp() public { admin = address(this); bridge = address(0xb); user1 = address(0x1); token = new CompliantWrappedToken("Wrapped cUSDT", "cWUSDT", 6, admin); token.grantRole(MINTER_ROLE, bridge); token.grantRole(BURNER_ROLE, bridge); } function testDecimals() public view { assertEq(token.decimals(), 6); } function testMint() public { vm.prank(bridge); token.mint(user1, 1000e6); assertEq(token.balanceOf(user1), 1000e6); } function testMintRevertsNonMinter() public { vm.prank(user1); vm.expectRevert(); token.mint(user1, 1000e6); } function testBurn() public { vm.prank(bridge); token.mint(user1, 1000e6); vm.prank(bridge); token.burn(user1, 400e6); assertEq(token.balanceOf(user1), 600e6); } function testBurnFrom() public { vm.prank(bridge); token.mint(user1, 1000e6); vm.prank(bridge); token.burnFrom(user1, 400e6); assertEq(token.balanceOf(user1), 600e6); } function testBurnFromRevertsNonBurner() public { vm.prank(bridge); token.mint(user1, 1000e6); vm.prank(user1); vm.expectRevert(); token.burnFrom(user1, 400e6); } }