Skip to content

Commit 5a2666c

Browse files
Krishang NadgaudaKrishang Nadgauda
authored andcommitted
add tests for wrapping native tokens
1 parent 118b483 commit 5a2666c

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/test/Multiwrap.t.sol

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,40 @@ contract MultiwrapTest is BaseTest {
137137
assertEq(uriForWrappedToken, multiwrap.tokenURI(expectedIdForWrappedToken));
138138
}
139139

140+
/*
141+
* note: Testing state changes; token owner calls `wrap` to wrap native tokens.
142+
*/
143+
function test_state_wrap_nativeTokens() public {
144+
uint256 expectedIdForWrappedToken = multiwrap.nextTokenIdToMint();
145+
address recipient = address(0x123);
146+
147+
ITokenBundle.Token[] memory nativeTokenContentToWrap = new ITokenBundle.Token[](1);
148+
149+
vm.deal(address(tokenOwner), 100 ether);
150+
nativeTokenContentToWrap[0] = ITokenBundle.Token({
151+
assetContract: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,
152+
tokenType: ITokenBundle.TokenType.ERC20,
153+
tokenId: 0,
154+
totalAmount: 10 ether
155+
});
156+
157+
vm.prank(address(tokenOwner));
158+
multiwrap.wrap{ value: 10 ether }(nativeTokenContentToWrap, uriForWrappedToken, recipient);
159+
160+
assertEq(expectedIdForWrappedToken + 1, multiwrap.nextTokenIdToMint());
161+
162+
ITokenBundle.Token[] memory contentsOfWrappedToken = multiwrap.getWrappedContents(expectedIdForWrappedToken);
163+
assertEq(contentsOfWrappedToken.length, nativeTokenContentToWrap.length);
164+
for (uint256 i = 0; i < contentsOfWrappedToken.length; i += 1) {
165+
assertEq(contentsOfWrappedToken[i].assetContract, nativeTokenContentToWrap[i].assetContract);
166+
assertEq(uint256(contentsOfWrappedToken[i].tokenType), uint256(nativeTokenContentToWrap[i].tokenType));
167+
assertEq(contentsOfWrappedToken[i].tokenId, nativeTokenContentToWrap[i].tokenId);
168+
assertEq(contentsOfWrappedToken[i].totalAmount, nativeTokenContentToWrap[i].totalAmount);
169+
}
170+
171+
assertEq(uriForWrappedToken, multiwrap.tokenURI(expectedIdForWrappedToken));
172+
}
173+
140174
/**
141175
* note: Testing event emission; token owner calls `wrap` to wrap owned tokens.
142176
*/
@@ -235,6 +269,27 @@ contract MultiwrapTest is BaseTest {
235269
multiwrap.wrap(wrappedContent, uriForWrappedToken, recipient);
236270
}
237271

272+
/**
273+
* note: Testing revert condition; token owner calls `wrap` with insufficient value when wrapping native tokens.
274+
*/
275+
function test_revert_wrap_nativeTokens_insufficientValue() public {
276+
address recipient = address(0x123);
277+
278+
ITokenBundle.Token[] memory nativeTokenContentToWrap = new ITokenBundle.Token[](1);
279+
280+
vm.deal(address(tokenOwner), 100 ether);
281+
nativeTokenContentToWrap[0] = ITokenBundle.Token({
282+
assetContract: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,
283+
tokenType: ITokenBundle.TokenType.ERC20,
284+
tokenId: 0,
285+
totalAmount: 10 ether
286+
});
287+
288+
vm.prank(address(tokenOwner));
289+
vm.expectRevert("msg.value != amount");
290+
multiwrap.wrap(nativeTokenContentToWrap, uriForWrappedToken, recipient);
291+
}
292+
238293
/**
239294
* note: Testing revert condition; token owner calls `wrap` to wrap un-owned ERC20 tokens.
240295
*/

0 commit comments

Comments
 (0)