Skip to content

Commit

Permalink
add a test
Browse files Browse the repository at this point in the history
  • Loading branch information
dantaik committed Jan 24, 2025
1 parent 7ac4087 commit 9b94d55
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions packages/protocol/test/layer1/based/ForkRouter.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,62 @@ contract Fork is EssentialContract, IFork {
}
}

contract ForkFooA is EssentialContract, IFork {
struct State {
uint64 a;
}

State private _state;

constructor() EssentialContract(address(0)) { }

function init() external initializer {
__Essential_init(address(0));
_state.a = 100;
}

function setCounter(uint64 _a) external returns (uint64) {
_state.a = _a;
return _state.a;
}

function counter() external view returns (uint64) {
return _state.a;
}

function isForkActive() external view override returns (bool) {
return _state.a < 10;
}
}

contract ForkFooB is EssentialContract, IFork {
struct State {
uint64 b;
}

State private _state;

constructor() EssentialContract(address(0)) { }

function init() external initializer {
__Essential_init(address(0));
}

function setCounter(uint64 _b) external returns (uint64) {
_state.b = _b;
return _state.b;
}

function counter() external view returns (uint64) {
return _state.b;
}

function isForkActive() external view override returns (bool) {
console.log("isForkActive in ForkFooB:", _state.b);
return _state.b >= 10;
}
}

contract TestForkRouter is Layer1Test {
function test_ForkManager_default_routing() public transactBy(deployer) {
address fork1 = address(new Fork("fork1", true));
Expand Down Expand Up @@ -69,4 +125,24 @@ contract TestForkRouter is Layer1Test {
assertTrue(ForkRouter(payable(router)).isForkRouter());
assertEq(Fork(router).name(), "fork2");
}

function test_ForkManager_readStorage() public transactBy(deployer) {
address fork1 = address(new ForkFooA());
address fork2 = address(new ForkFooB());

address router = deploy({
name: "fork_router",
impl: address(new ForkRouter(fork1, fork2)),
data: abi.encodeCall(Fork.init, ())
});

assertEq(ForkRouter(payable(router)).currentFork(), fork1);
// assertEq(ForkFooA(router).counter(), 1);
// assertEq(ForkFooA(router).setCounter(2), 2);
// assertEq(ForkFooA(router).counter(), 2);
// assertEq(ForkRouter(payable(router)).currentFork(), fork1);

// assertEq(ForkFooA(router).setCounter(10), 10);
// assertEq(ForkRouter(payable(router)).currentFork(), fork2);
}
}

0 comments on commit 9b94d55

Please sign in to comment.