Skip to content

Commit

Permalink
formatting: Reorder and rename tests (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
lucas-manuel authored Mar 7, 2022
1 parent 3d3f2d6 commit faf36fe
Showing 1 changed file with 93 additions and 91 deletions.
184 changes: 93 additions & 91 deletions contracts/test/Migrator.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,16 @@ contract MigratorTest is TestUtils {
newToken.mint(address(migrator), OLD_SUPPLY);
}

function test_migration(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

// Mint amount of old token
oldToken.mint(address(this), amount_);
function test_migrate_zeroAmount() external {
uint256 amount_ = 0;

// Approve
oldToken.approve(address(migrator), amount_);
vm.expectRevert("M:M:ZERO_AMOUNT");
migrator.migrate(amount_);

assertEq(oldToken.allowance(address(this), address(migrator)), amount_);
amount_ = 1;

assertEq(oldToken.balanceOf(address(this)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(this)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);
oldToken.mint(address(this), amount_);
oldToken.approve(address(migrator), amount_);

migrator.migrate(amount_);

Expand All @@ -60,65 +55,21 @@ contract MigratorTest is TestUtils {
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_migrationForSpecifiedOwner(uint256 amount_) external {
function test_migrate_insufficientApproval(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

SomeAccount someAccount = new SomeAccount();

// Mint amount of old token
oldToken.mint(address(someAccount), amount_);

// Approve
someAccount.approve(address(oldToken), address(migrator), amount_);

assertEq(oldToken.allowance(address(someAccount), address(migrator)), amount_);

assertEq(oldToken.balanceOf(address(someAccount)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(someAccount)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);

migrator.migrate(address(someAccount), amount_);

assertEq(oldToken.allowance(address(someAccount), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(someAccount)), 0);
assertEq(oldToken.balanceOf(address(migrator)), amount_);
assertEq(newToken.balanceOf(address(someAccount)), amount_);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_partialMigration(uint256 amount_, uint256 partialAmount_) external {
amount_ = constrictToRange(amount_, 2, OLD_SUPPLY);
partialAmount_ = constrictToRange(partialAmount_, 1, amount_ - 1);

// Mint amount of old token
oldToken.mint(address(this), amount_);

// Approve partial
oldToken.approve(address(migrator), partialAmount_);

assertEq(oldToken.allowance(address(this), address(migrator)), partialAmount_);

assertEq(oldToken.balanceOf(address(this)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(this)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);
oldToken.approve(address(migrator), amount_ - 1);

migrator.migrate(partialAmount_);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(this)), amount_ - partialAmount_);
assertEq(oldToken.balanceOf(address(migrator)), partialAmount_);
assertEq(newToken.balanceOf(address(this)), partialAmount_);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - partialAmount_);

uint256 remaining = amount_ - partialAmount_;
vm.expectRevert("M:M:TRANSFER_FROM_FAILED");
migrator.migrate(amount_);

oldToken.approve(address(migrator), remaining);
// Approve
oldToken.approve(address(migrator), amount_);

migrator.migrate(remaining);
migrator.migrate(amount_);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);

Expand All @@ -128,17 +79,19 @@ contract MigratorTest is TestUtils {
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_zeroAmount() external {
uint256 amount_ = 0;

vm.expectRevert("M:M:ZERO_AMOUNT");
migrator.migrate(amount_);
function test_migrate_insufficientBalance(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

amount_ = 1;
oldToken.mint(address(this), amount_ - 1);

oldToken.mint(address(this), amount_);
oldToken.approve(address(migrator), amount_);

vm.expectRevert("M:M:TRANSFER_FROM_FAILED");
migrator.migrate(amount_);

// Mint
oldToken.mint(address(this), 1);

migrator.migrate(amount_);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);
Expand All @@ -149,40 +102,48 @@ contract MigratorTest is TestUtils {
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_failWithoutApprove(uint256 amount_) external {
function test_migrate_newTokenInsufficientBalance(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

// Burn new supply that was added in setUp
newToken.burn(address(migrator), OLD_SUPPLY - amount_ + 1);

// Mint amount of old token
oldToken.mint(address(this), amount_);

vm.expectRevert("M:M:TRANSFER_FROM_FAILED");
migrator.migrate(amount_);

// Approve
oldToken.approve(address(migrator), amount_);

vm.expectRevert("M:M:TRANSFER_FAILED");
migrator.migrate(amount_);

newToken.mint(address(migrator), 1);

migrator.migrate(amount_);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(this)), 0);
assertEq(oldToken.balanceOf(address(migrator)), amount_);
assertEq(newToken.balanceOf(address(this)), amount_);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
assertEq(newToken.balanceOf(address(migrator)), 0);
}

function test_failWithoutBalance(uint256 amount_) external {
function test_migrate_success(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

oldToken.mint(address(this), amount_ - 1);
// Mint amount of old token
oldToken.mint(address(this), amount_);

// Approve
oldToken.approve(address(migrator), amount_);

vm.expectRevert("M:M:TRANSFER_FROM_FAILED");
migrator.migrate(amount_);
assertEq(oldToken.allowance(address(this), address(migrator)), amount_);

// Mint
oldToken.mint(address(this), 1);
assertEq(oldToken.balanceOf(address(this)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(this)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);

migrator.migrate(amount_);

Expand All @@ -194,31 +155,72 @@ contract MigratorTest is TestUtils {
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_failWithoutNewToken(uint256 amount_) external {
function test_migration_specifiedOwner(uint256 amount_) external {
amount_ = constrictToRange(amount_, 1, OLD_SUPPLY);

// Burn new supply that was added in setUp
newToken.burn(address(migrator), OLD_SUPPLY - amount_ + 1);
SomeAccount someAccount = new SomeAccount();

// Mint amount of old token
oldToken.mint(address(this), amount_);
oldToken.mint(address(someAccount), amount_);

// Approve
oldToken.approve(address(migrator), amount_);
someAccount.approve(address(oldToken), address(migrator), amount_);

vm.expectRevert("M:M:TRANSFER_FAILED");
migrator.migrate(amount_);
assertEq(oldToken.allowance(address(someAccount), address(migrator)), amount_);

newToken.mint(address(migrator), 1);
assertEq(oldToken.balanceOf(address(someAccount)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(someAccount)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);

migrator.migrate(amount_);
migrator.migrate(address(someAccount), amount_);

assertEq(oldToken.allowance(address(someAccount), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(someAccount)), 0);
assertEq(oldToken.balanceOf(address(migrator)), amount_);
assertEq(newToken.balanceOf(address(someAccount)), amount_);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

function test_migrate_partialMigration(uint256 amount_, uint256 partialAmount_) external {
amount_ = constrictToRange(amount_, 2, OLD_SUPPLY);
partialAmount_ = constrictToRange(partialAmount_, 1, amount_ - 1);

// Mint amount of old token
oldToken.mint(address(this), amount_);

// Approve partial
oldToken.approve(address(migrator), partialAmount_);

assertEq(oldToken.allowance(address(this), address(migrator)), partialAmount_);

assertEq(oldToken.balanceOf(address(this)), amount_);
assertEq(oldToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(this)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY);

migrator.migrate(partialAmount_);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(this)), amount_ - partialAmount_);
assertEq(oldToken.balanceOf(address(migrator)), partialAmount_);
assertEq(newToken.balanceOf(address(this)), partialAmount_);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - partialAmount_);

uint256 remaining = amount_ - partialAmount_;

oldToken.approve(address(migrator), remaining);

migrator.migrate(remaining);

assertEq(oldToken.allowance(address(this), address(migrator)), 0);

assertEq(oldToken.balanceOf(address(this)), 0);
assertEq(oldToken.balanceOf(address(migrator)), amount_);
assertEq(newToken.balanceOf(address(this)), amount_);
assertEq(newToken.balanceOf(address(migrator)), 0);
assertEq(newToken.balanceOf(address(migrator)), OLD_SUPPLY - amount_);
}

}

0 comments on commit faf36fe

Please sign in to comment.