-
-
Save MiloTruck/837ecb49fe18901d70bf03241548768b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: UNLICENSED | |
| pragma solidity 0.8.20; | |
| import "forge-std/Test.sol"; | |
| import {CrossChainMessenger} from "src/RACE.sol"; | |
| contract Receiver { | |
| bool public shouldRevert; | |
| uint256 public lastReceived; | |
| function setShouldRevert(bool _shouldRevert) external { | |
| shouldRevert = _shouldRevert; | |
| } | |
| function receiveMessage(uint256 _lastReceived) external { | |
| require(!shouldRevert); | |
| lastReceived = _lastReceived; | |
| } | |
| } | |
| contract CrossChainMessengerTest is Test { | |
| CrossChainMessenger messenger; | |
| Receiver receiver; | |
| function setUp() public { | |
| messenger = new CrossChainMessenger(); | |
| receiver = new Receiver(); | |
| } | |
| function test_forceReplayMessagesOnlyExecutesFirstMessage() public { | |
| CrossChainMessenger.Message[] memory messages = new CrossChainMessenger.Message[](2); | |
| messages[0] = CrossChainMessenger.Message({ | |
| sender: address(this), | |
| to: address(receiver), | |
| gas: 100_000, | |
| data: abi.encodeCall(Receiver.receiveMessage, (1)) | |
| }); | |
| messages[1] = CrossChainMessenger.Message({ | |
| sender: address(this), | |
| to: address(receiver), | |
| gas: 100_000, | |
| data: abi.encodeCall(Receiver.receiveMessage, (2)) | |
| }); | |
| receiver.setShouldRevert(true); | |
| messenger.relayMessage(messages[0]); | |
| messenger.relayMessage(messages[1]); | |
| assertEq(receiver.lastReceived(), 0); | |
| receiver.setShouldRevert(false); | |
| messenger.forceReplayMessages(messages); | |
| assertEq(receiver.lastReceived(), 1); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment