- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault. - Token-aggregation service routes, planner, chain config, relay env templates. - Config snapshots and multi-chain deployment markdown updates. - gitignore services/btc-intake/dist/ (tsc output); do not track dist. Run forge build && forge test before deploy (large solc graph). Made-with: Cursor
55 lines
1.6 KiB
Solidity
55 lines
1.6 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {Test} from "forge-std/Test.sol";
|
|
import {CompliantBTC} from "../../contracts/tokens/CompliantBTC.sol";
|
|
|
|
contract CompliantMonetaryUnitTokenTest is Test {
|
|
CompliantBTC public token;
|
|
address public owner;
|
|
address public admin;
|
|
address public user1;
|
|
|
|
function setUp() public {
|
|
owner = address(this);
|
|
admin = address(this);
|
|
user1 = address(0xB0B);
|
|
token = new CompliantBTC(owner, admin, 21_000_000 * 10**8);
|
|
}
|
|
|
|
function testDecimals() public view {
|
|
assertEq(token.decimals(), 8);
|
|
}
|
|
|
|
function testUnitCode() public view {
|
|
assertEq(token.unitCode(), "BTC");
|
|
assertTrue(token.isMonetaryUnit());
|
|
}
|
|
|
|
function testInitialSupplyUsesSatoshiPrecision() public view {
|
|
assertEq(token.totalSupply(), 21_000_000 * 10**8);
|
|
assertEq(token.balanceOf(owner), 21_000_000 * 10**8);
|
|
}
|
|
|
|
function testTransferUsesEightDecimals() public {
|
|
uint256 amount = 12_500_000;
|
|
token.transfer(user1, amount);
|
|
assertEq(token.balanceOf(user1), amount);
|
|
assertEq(token.balanceOf(owner), 21_000_000 * 10**8 - amount);
|
|
}
|
|
|
|
function testPauseBlocksTransfers() public {
|
|
token.pause();
|
|
assertTrue(token.paused());
|
|
vm.expectRevert();
|
|
token.transfer(user1, 100_000_000);
|
|
}
|
|
|
|
function testMintAndBurnUseSatoshiPrecision() public {
|
|
token.mint(user1, 250_000_000);
|
|
assertEq(token.balanceOf(user1), 250_000_000);
|
|
token.burn(100_000_000);
|
|
assertEq(token.balanceOf(owner), 21_000_000 * 10**8 - 100_000_000);
|
|
}
|
|
}
|