Skip to content

Commit 5ae8bf3

Browse files
authored
add ParsePermit lib tests (#65)
1 parent bd2eebb commit 5ae8bf3

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

test/PermintParsing.t.sol

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
// SPDX-License-Identifier: Apache 2
2+
3+
pragma solidity ^0.8.24;
4+
5+
import "forge-std/Test.sol";
6+
7+
import { BytesParsing } from "wormhole-sdk/libraries/BytesParsing.sol";
8+
import { PermitParsing } from "wormhole-sdk/libraries/PermitParsing.sol";
9+
10+
contract PermitParsingTest is Test {
11+
using BytesParsing for bytes;
12+
13+
function parsePermit(
14+
bytes calldata params,
15+
uint offset
16+
) external pure returns (uint256, uint256, bytes32, bytes32, uint8, uint) {
17+
return PermitParsing.asPermitCdUnchecked(params, offset);
18+
}
19+
20+
function parsePermit2Permit(
21+
bytes calldata params,
22+
uint offset
23+
) external pure returns (uint160, uint48, uint48, uint256, bytes memory, uint) {
24+
return PermitParsing.asPermit2PermitCdUnchecked(params, offset);
25+
}
26+
27+
function parsePermit2Transfer(
28+
bytes calldata params,
29+
uint offset
30+
) external pure returns (uint256, uint256, uint256, bytes memory, uint) {
31+
return PermitParsing.asPermit2TransferCdUnchecked(params, offset);
32+
}
33+
34+
function testParsePermit(
35+
uint256 value,
36+
uint256 deadline,
37+
bytes32 r,
38+
bytes32 s,
39+
uint8 v
40+
) public {
41+
bytes memory params = abi.encodePacked(value, deadline, r, s, v);
42+
43+
(
44+
uint256 _value,
45+
uint256 _deadline,
46+
bytes32 _r,
47+
bytes32 _s,
48+
uint8 _v,
49+
uint offset
50+
) = PermitParsing.asPermitUnchecked(params, 0);
51+
assertEq(_value, value);
52+
assertEq(_deadline, deadline);
53+
assertEq(_r, r);
54+
assertEq(_s, s);
55+
assertEq(_v, v);
56+
assertEq(offset, params.length);
57+
58+
(
59+
_value,
60+
_deadline,
61+
_r,
62+
_s,
63+
_v,
64+
offset
65+
) = this.parsePermit(params, 0);
66+
assertEq(_value, value);
67+
assertEq(_deadline, deadline);
68+
assertEq(_r, r);
69+
assertEq(_s, s);
70+
assertEq(_v, v);
71+
assertEq(offset, params.length);
72+
}
73+
74+
function testParsePermit2Permit(
75+
uint160 amount,
76+
uint48 expiration,
77+
uint48 nonce,
78+
uint256 sigDeadline,
79+
bytes memory signature
80+
) public {
81+
vm.assume(signature.length == 65);
82+
bytes memory params = abi.encodePacked(amount, expiration, nonce, sigDeadline, signature);
83+
84+
(
85+
uint160 _amount,
86+
uint48 _expiration,
87+
uint48 _nonce,
88+
uint256 _sigDeadline,
89+
bytes memory _signature,
90+
uint offset
91+
) = PermitParsing.asPermit2PermitUnchecked(params, 0);
92+
assertEq(_amount, amount);
93+
assertEq(_expiration, expiration);
94+
assertEq(_nonce, nonce);
95+
assertEq(_sigDeadline, sigDeadline);
96+
assertEq(_signature, signature);
97+
assertEq(offset, params.length);
98+
99+
100+
(
101+
_amount,
102+
_expiration,
103+
_nonce,
104+
_sigDeadline,
105+
_signature,
106+
offset
107+
) = this.parsePermit2Permit(params, 0);
108+
assertEq(_amount, amount);
109+
assertEq(_expiration, expiration);
110+
assertEq(_nonce, nonce);
111+
assertEq(_sigDeadline, sigDeadline);
112+
assertEq(_signature, signature);
113+
assertEq(offset, params.length);
114+
}
115+
116+
function testParsePermit2Transfer(
117+
uint256 amount,
118+
uint256 nonce,
119+
uint256 sigDeadline,
120+
bytes memory signature
121+
) public {
122+
vm.assume(signature.length == 65);
123+
bytes memory params = abi.encodePacked(amount, nonce, sigDeadline, signature);
124+
125+
(
126+
uint256 _amount,
127+
uint256 _nonce,
128+
uint256 _sigDeadline,
129+
bytes memory _signature,
130+
uint offset
131+
) = PermitParsing.asPermit2TransferUnchecked(params, 0);
132+
assertEq(_amount, amount);
133+
assertEq(_nonce, nonce);
134+
assertEq(_sigDeadline, sigDeadline);
135+
assertEq(_signature, signature);
136+
assertEq(offset, params.length);
137+
138+
(
139+
_amount,
140+
_nonce,
141+
_sigDeadline,
142+
_signature,
143+
offset
144+
) = this.parsePermit2Transfer(params, 0);
145+
assertEq(_amount, amount);
146+
assertEq(_nonce, nonce);
147+
assertEq(_sigDeadline, sigDeadline);
148+
assertEq(_signature, signature);
149+
assertEq(offset, params.length);
150+
}
151+
}

0 commit comments

Comments
 (0)