@@ -6,6 +6,7 @@ import {DeployPermit2} from "../util/DeployPermit2.sol";
6
6
import {
7
7
V2DutchOrder,
8
8
V2DutchOrderLib,
9
+ CosignerExtraDataLib,
9
10
CosignerData,
10
11
V2DutchOrderReactor,
11
12
ResolvedOrder,
@@ -30,6 +31,7 @@ import {DutchOrder, BaseDutchOrderReactorTest} from "./BaseDutchOrderReactor.t.s
30
31
contract V2DutchOrderTest is PermitSignature , DeployPermit2 , BaseDutchOrderReactorTest {
31
32
using OrderInfoBuilder for OrderInfo;
32
33
using V2DutchOrderLib for V2DutchOrder;
34
+ using CosignerExtraDataLib for bytes ;
33
35
34
36
uint256 constant cosignerPrivateKey = 0x99999999 ;
35
37
@@ -252,6 +254,20 @@ contract V2DutchOrderTest is PermitSignature, DeployPermit2, BaseDutchOrderReact
252
254
assertEq (tokenIn.balanceOf (address (fillContract)), inputAmount);
253
255
}
254
256
257
+ function testEncoding () public {
258
+ bytes memory encodedBytes = encodeExtraCosignerData (address (1111111111111111 ), 22222222222222 , ArrayBuilder.fill (3 , 5 ));
259
+ assertTrue (encodedBytes.hasExclusiveFiller ());
260
+ assertTrue (encodedBytes.hasInputOverride ());
261
+ assertTrue (encodedBytes.hasOutputOverrides ());
262
+ (address filler , uint256 input , uint256 [] memory output ) = encodedBytes.decodeExtraParameters ();
263
+ assertEq (filler, address (1111111111111111 ));
264
+ assertEq (input, 22222222222222 );
265
+ assertEq (output.length , 3 );
266
+ assertEq (output[0 ], 5 );
267
+ assertEq (output[1 ], 5 );
268
+ assertEq (output[2 ], 5 );
269
+ }
270
+
255
271
function testExclusivity () public {
256
272
uint256 inputAmount = 1 ether ;
257
273
tokenIn.mint (swapper, inputAmount);
@@ -299,7 +315,7 @@ contract V2DutchOrderTest is PermitSignature, DeployPermit2, BaseDutchOrderReact
299
315
{
300
316
bool hasExclusiveFiller = (exclusiveFiller != address (0 ));
301
317
bool hasInputOverride = (inputOverride != 0 );
302
- bool hasOutputOverrides = (outputOverrides.length = = 0 );
318
+ bool hasOutputOverrides = (outputOverrides.length ! = 0 );
303
319
304
320
bytes1 firstByte = 0x00 ;
305
321
if (hasExclusiveFiller) firstByte |= 0x80 ;
@@ -309,8 +325,11 @@ contract V2DutchOrderTest is PermitSignature, DeployPermit2, BaseDutchOrderReact
309
325
if (firstByte == 0x00 ) return "" ;
310
326
311
327
extraData = abi.encodePacked (firstByte);
312
- if (hasExclusiveFiller) bytes .concat (extraData, abi.encodePacked (exclusiveFiller));
313
- if (hasInputOverride) bytes .concat (extraData, abi.encodePacked (inputOverride));
314
- if (hasOutputOverrides) bytes .concat (extraData, abi.encode (outputOverrides));
328
+ if (hasExclusiveFiller) extraData = bytes .concat (extraData, abi.encodePacked (exclusiveFiller));
329
+ if (hasInputOverride) extraData = bytes .concat (extraData, abi.encodePacked (inputOverride));
330
+ if (hasOutputOverrides) {
331
+ extraData = bytes .concat (extraData, abi.encodePacked (outputOverrides.length ));
332
+ extraData = bytes .concat (extraData, abi.encodePacked (outputOverrides));
333
+ }
315
334
}
316
335
}
0 commit comments