Skip to content

Commit

Permalink
Testing isL2Available
Browse files Browse the repository at this point in the history
  • Loading branch information
brickpop committed May 24, 2024
1 parent 6c656fb commit d77bf0a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/OptimisticTokenVotingPlugin.sol
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,8 @@ contract OptimisticTokenVotingPlugin is

// The last L2 block is too old
TaikoData.Block memory _block = taikoL1.getBlock(_id - 1);
if (_block.proposedAt < (block.timestamp - governanceSettings.l2InactivityPeriod)) return false;
// proposedAt < (block.timestamp - l2InactivityPeriod), written as a sum
if ((_block.proposedAt + governanceSettings.l2InactivityPeriod) < block.timestamp) return false;

return true;
}
Expand Down
26 changes: 26 additions & 0 deletions test/OptimisticTokenVotingPlugin.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,32 @@ contract OptimisticTokenVotingPluginTest is AragonTest {
assertEq(optimisticPlugin.isMember(randomWallet), false, "Random wallet should not be a member");
}

function test_IsL2AvailableReturnsTheRightValues() public {
assertEq(optimisticPlugin.isL2Available(), true, "isL2Available should be true");

// paused
(, optimisticPlugin,,, votingToken,) = builder.withPausedTaikoL1().build();
assertEq(optimisticPlugin.isL2Available(), false, "isL2Available should be false");

// out of sync
(, optimisticPlugin,,, votingToken,) = builder.withOutOfSyncTaikoL1().build();
assertEq(optimisticPlugin.isL2Available(), false, "isL2Available should be false");

// out of sync: diff below lowerl2InactivityPeriod
setTime(5 minutes);
assertEq(optimisticPlugin.isL2Available(), true, "isL2Available should be true");

// out of sync: still within the period
setTime(50 days);
(, optimisticPlugin,,, votingToken,) = builder.withL2InactivityPeriod(50 days).build();
assertEq(optimisticPlugin.isL2Available(), true, "isL2Available should be true");

// out of sync: over
setTime(50 days + 1);
(, optimisticPlugin,,, votingToken,) = builder.withL2InactivityPeriod(50 days).build();
assertEq(optimisticPlugin.isL2Available(), false, "isL2Available should be false");
}

// Create proposal
function test_CreateProposalRevertsWhenCalledByANonProposer() public {
switchTo(bob);
Expand Down
2 changes: 1 addition & 1 deletion test/mocks/TaikoL1Mock.sol
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ contract TaikoL1WithOldLastBlock is TaikoL1 {
}

function slotB() public pure override returns (TaikoData.SlotB memory result) {
result.numBlocks = 0;
result.numBlocks = 1;
}

function getBlock(uint64 _blockId) public pure override returns (TaikoData.Block memory result) {
Expand Down

0 comments on commit d77bf0a

Please sign in to comment.