Skip to content

Commit 17ab693

Browse files
committed
add SafeERC20 tests for succeeding operations
1 parent 7b46376 commit 17ab693

File tree

2 files changed

+52
-5
lines changed

2 files changed

+52
-5
lines changed

test/SafeERC20.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,15 @@ contract('SafeERC20', function () {
2424
await this.helper.doFailingApprove().should.be.rejectedWith(EVMThrow);
2525
});
2626

27+
it('should fulfill on succeeding transfer', async function () {
28+
await this.helper.doSucceedingTransfer().should.be.fulfilled;
29+
});
30+
31+
it('should fulfill on succeeding transferFrom', async function () {
32+
await this.helper.doSucceedingTransferFrom().should.be.fulfilled;
33+
});
34+
35+
it('should fulfill on succeeding approve', async function () {
36+
await this.helper.doSucceedingApprove().should.be.fulfilled;
37+
});
2738
});

test/helpers/SafeERC20Helper.sol

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,60 @@ contract ERC20FailingMock is ERC20 {
2525
}
2626
}
2727

28+
contract ERC20SucceedingMock is ERC20 {
29+
function transfer(address, uint256) returns (bool) {
30+
return true;
31+
}
32+
33+
function transferFrom(address, address, uint256) returns (bool) {
34+
return true;
35+
}
36+
37+
function approve(address, uint256) returns (bool) {
38+
return true;
39+
}
40+
41+
function balanceOf(address) constant returns (uint256) {
42+
return 0;
43+
}
44+
45+
function allowance(address, address) constant returns (uint256) {
46+
return 0;
47+
}
48+
}
49+
2850
contract SafeERC20Helper {
2951
using SafeERC20 for ERC20;
3052

31-
ERC20 token;
53+
ERC20 failing;
54+
ERC20 succeeding;
3255

3356
function SafeERC20Helper() {
34-
token = new ERC20FailingMock();
57+
failing = new ERC20FailingMock();
58+
succeeding = new ERC20SucceedingMock();
3559
}
3660

3761
function doFailingTransfer() {
38-
token.safeTransfer(0, 0);
62+
failing.safeTransfer(0, 0);
3963
}
4064

4165
function doFailingTransferFrom() {
42-
token.safeTransferFrom(0, 0, 0);
66+
failing.safeTransferFrom(0, 0, 0);
4367
}
4468

4569
function doFailingApprove() {
46-
token.safeApprove(0, 0);
70+
failing.safeApprove(0, 0);
71+
}
72+
73+
function doSucceedingTransfer() {
74+
succeeding.safeTransfer(0, 0);
75+
}
76+
77+
function doSucceedingTransferFrom() {
78+
succeeding.safeTransferFrom(0, 0, 0);
79+
}
80+
81+
function doSucceedingApprove() {
82+
succeeding.safeApprove(0, 0);
4783
}
4884
}

0 commit comments

Comments
 (0)