123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- pragma solidity ^0.4.18;
- import '../token/ERC20.sol';
- import '../token/SafeERC20.sol';
- contract ERC20FailingMock is ERC20 {
- function transfer(address, uint256) public returns (bool) {
- return false;
- }
- function transferFrom(address, address, uint256) public returns (bool) {
- return false;
- }
- function approve(address, uint256) public returns (bool) {
- return false;
- }
- function balanceOf(address) public constant returns (uint256) {
- return 0;
- }
- function allowance(address, address) public constant returns (uint256) {
- return 0;
- }
- }
- contract ERC20SucceedingMock is ERC20 {
- function transfer(address, uint256) public returns (bool) {
- return true;
- }
- function transferFrom(address, address, uint256) public returns (bool) {
- return true;
- }
- function approve(address, uint256) public returns (bool) {
- return true;
- }
- function balanceOf(address) public constant returns (uint256) {
- return 0;
- }
- function allowance(address, address) public constant returns (uint256) {
- return 0;
- }
- }
- contract SafeERC20Helper {
- using SafeERC20 for ERC20;
- ERC20 failing;
- ERC20 succeeding;
- function SafeERC20Helper() public {
- failing = new ERC20FailingMock();
- succeeding = new ERC20SucceedingMock();
- }
- function doFailingTransfer() public {
- failing.safeTransfer(0, 0);
- }
- function doFailingTransferFrom() public {
- failing.safeTransferFrom(0, 0, 0);
- }
- function doFailingApprove() public {
- failing.safeApprove(0, 0);
- }
- function doSucceedingTransfer() public {
- succeeding.safeTransfer(0, 0);
- }
- function doSucceedingTransferFrom() public {
- succeeding.safeTransferFrom(0, 0, 0);
- }
- function doSucceedingApprove() public {
- succeeding.safeApprove(0, 0);
- }
- }
|