The test coverage is incomplete (no vulnerability, only informational).
Manual review.
function testResolveDisputeFuzz(uint256 award, uint256 extraBalance) public escrowDeployed {
uint256 escrowInitialBalance = ERC20Mock(address(i_tokenContract)).balanceOf(address(escrow));
vm.assume(extraBalance <= type(uint256).max - escrowInitialBalance);
ERC20Mock(address(i_tokenContract)).mint(address(escrow), extraBalance);
uint256 escrowStartingBalance = ERC20Mock(address(i_tokenContract)).balanceOf(address(escrow));
vm.assume(award <= type(uint256).max - ARBITER_FEE);
uint256 totalFee = ARBITER_FEE + award;
vm.assume(totalFee <= escrowStartingBalance);
uint256 sellerAward = escrowStartingBalance - totalFee;
uint256 buyerStartingBalance = ERC20Mock(address(i_tokenContract)).balanceOf(BUYER);
uint256 sellerStartingBalance = ERC20Mock(address(i_tokenContract)).balanceOf(SELLER);
uint256 arbiterStartingBalance = ERC20Mock(address(i_tokenContract)).balanceOf(ARBITER);
vm.prank(BUYER);
escrow.initiateDispute();
vm.prank(ARBITER);
escrow.resolveDispute(award);
assertEq(ERC20Mock(address(i_tokenContract)).balanceOf(address(escrow)), 0);
assertEq(ERC20Mock(address(i_tokenContract)).balanceOf(BUYER), buyerStartingBalance + award);
assertEq(ERC20Mock(address(i_tokenContract)).balanceOf(SELLER), sellerStartingBalance + sellerAward);
assertEq(ERC20Mock(address(i_tokenContract)).balanceOf(ARBITER), arbiterStartingBalance + ARBITER_FEE);
}