From 350aae09d2807c7b93e065740d02f96a77a9e814 Mon Sep 17 00:00:00 2001 From: Aniket <30843294+Aniket-Engg@users.noreply.github.com> Date: Fri, 4 Jan 2019 22:17:25 +0530 Subject: [PATCH] BigNumber comparison improved (#1581) * signing prefix added * Minor improvement * Successfully tested * Minor improvements * Minor improvements * Revert "Dangling commas are now required. (#1359)" This reverts commit a6889776f46adca374b6ebf014aa7b0038112a9d. * updates * fixes #1404 * approve failing test * suggested changes done * ISafeERC20 removed * conflict fixes * added examples * fixes #706 * linting * fixes #204 * file fixing * deep bignumber comparison removed * Update SafeERC20Helper.sol * Update IERC20.sol * Update SafeERC20.sol * Update package-lock.json * Revert "deep bignumber comparison removed" This reverts commit 230b27214fc96ab4c990b169bbc15df129bad657. --- test/helpers/test/balanceDifference.test.js | 5 +-- test/helpers/test/ether.test.js | 5 +-- test/helpers/test/expectEvent.test.js | 2 +- test/helpers/test/makeInterfaceId.test.js | 3 +- test/helpers/test/send.test.js | 5 +-- test/helpers/test/shouldFail.test.js | 5 +-- test/helpers/test/time.test.js | 5 +-- test/math/Math.test.js | 4 +-- test/token/ERC721/ERC721.behavior.js | 14 ++++---- test/token/ERC721/ERC721Full.test.js | 36 ++++++++++----------- 10 files changed, 34 insertions(+), 50 deletions(-) diff --git a/test/helpers/test/balanceDifference.test.js b/test/helpers/test/balanceDifference.test.js index 98846db9d..3f6ed59bc 100644 --- a/test/helpers/test/balanceDifference.test.js +++ b/test/helpers/test/balanceDifference.test.js @@ -2,10 +2,7 @@ const { balanceDifference } = require('../balanceDifference'); const send = require('../send'); const { ether } = require('../ether'); -const BigNumber = web3.BigNumber; -require('chai') - .use(require('chai-bignumber')(BigNumber)) - .should(); +require('../setup'); contract('balanceDifference', function ([sender, receiver]) { it('returns balance increments', async function () { diff --git a/test/helpers/test/ether.test.js b/test/helpers/test/ether.test.js index c06161571..c4787a8b1 100644 --- a/test/helpers/test/ether.test.js +++ b/test/helpers/test/ether.test.js @@ -1,9 +1,6 @@ const { ether } = require('../ether'); -const BigNumber = web3.BigNumber; -require('chai') - .use(require('chai-bignumber')(BigNumber)) - .should(); +const { BigNumber } = require('../setup'); describe('ether', function () { it('returns a BigNumber', function () { diff --git a/test/helpers/test/expectEvent.test.js b/test/helpers/test/expectEvent.test.js index 4dd81560f..b93ca29b5 100644 --- a/test/helpers/test/expectEvent.test.js +++ b/test/helpers/test/expectEvent.test.js @@ -4,7 +4,7 @@ const shouldFail = require('../shouldFail'); const EventEmitter = artifacts.require('EventEmitter'); const IndirectEventEmitter = artifacts.require('IndirectEventEmitter'); -const { should, BigNumber } = require('../../helpers/setup'); +const { should, BigNumber } = require('../setup'); describe('expectEvent', function () { beforeEach(async function () { diff --git a/test/helpers/test/makeInterfaceId.test.js b/test/helpers/test/makeInterfaceId.test.js index fd4920438..3e0ea9ebd 100644 --- a/test/helpers/test/makeInterfaceId.test.js +++ b/test/helpers/test/makeInterfaceId.test.js @@ -2,8 +2,7 @@ const { makeInterfaceId } = require('../makeInterfaceId'); const OwnableInterfaceId = artifacts.require('OwnableInterfaceId'); -require('chai') - .should(); +require('../setup'); describe('makeInterfaceId', function () { it('calculates the EIP165 interface id from function signatures', async function () { diff --git a/test/helpers/test/send.test.js b/test/helpers/test/send.test.js index c868626a1..75971ba66 100644 --- a/test/helpers/test/send.test.js +++ b/test/helpers/test/send.test.js @@ -6,10 +6,7 @@ const { ethGetBalance } = require('../web3'); const Acknowledger = artifacts.require('Acknowledger'); -const BigNumber = web3.BigNumber; -require('chai') - .use(require('chai-bignumber')(BigNumber)) - .should(); +require('../setup'); contract('send', function ([sender, receiver]) { describe('ether', function () { diff --git a/test/helpers/test/shouldFail.test.js b/test/helpers/test/shouldFail.test.js index 8f99efe30..825cf4ce4 100644 --- a/test/helpers/test/shouldFail.test.js +++ b/test/helpers/test/shouldFail.test.js @@ -1,9 +1,6 @@ const shouldFail = require('../shouldFail'); -const BigNumber = web3.BigNumber; -const should = require('chai') - .use(require('chai-bignumber')(BigNumber)) - .should(); +const { should } = require('../setup'); const Failer = artifacts.require('Failer'); diff --git a/test/helpers/test/time.test.js b/test/helpers/test/time.test.js index 556ae92f8..a8455c4e9 100644 --- a/test/helpers/test/time.test.js +++ b/test/helpers/test/time.test.js @@ -1,10 +1,7 @@ const time = require('../time'); const shouldFail = require('../shouldFail'); -const BigNumber = web3.BigNumber; -require('chai') - .use(require('chai-bignumber')(BigNumber)) - .should(); +require('../setup'); describe('time', function () { const TOLERANCE_SECONDS = 1; diff --git a/test/math/Math.test.js b/test/math/Math.test.js index 99ab04531..25458ca99 100644 --- a/test/math/Math.test.js +++ b/test/math/Math.test.js @@ -3,8 +3,8 @@ const MathMock = artifacts.require('MathMock'); const { BigNumber } = require('../helpers/setup'); contract('Math', function () { - const min = 1234; - const max = 5678; + const min = new BigNumber(1234); + const max = new BigNumber(5678); beforeEach(async function () { this.math = await MathMock.new(); diff --git a/test/token/ERC721/ERC721.behavior.js b/test/token/ERC721/ERC721.behavior.js index b7600872c..e52d2f3d7 100644 --- a/test/token/ERC721/ERC721.behavior.js +++ b/test/token/ERC721/ERC721.behavior.js @@ -5,16 +5,16 @@ const { ZERO_ADDRESS } = require('../../helpers/constants'); const send = require('../../helpers/send'); const ERC721ReceiverMock = artifacts.require('ERC721ReceiverMock.sol'); -require('../../helpers/setup'); +const { BigNumber } = require('../../helpers/setup'); function shouldBehaveLikeERC721 ( creator, minter, [owner, approved, anotherApproved, operator, anyone] ) { - const firstTokenId = 1; - const secondTokenId = 2; - const unknownTokenId = 3; + const firstTokenId = new BigNumber(1); + const secondTokenId = new BigNumber(2); + const unknownTokenId = new BigNumber(3); const RECEIVER_MAGIC_VALUE = '0x150b7a02'; describe('like an ERC721', function () { @@ -107,9 +107,9 @@ function shouldBehaveLikeERC721 ( it('adjusts owners tokens by index', async function () { if (!this.token.tokenOfOwnerByIndex) return; - (await this.token.tokenOfOwnerByIndex(this.toWhom, 0)).toNumber().should.be.equal(tokenId); + (await this.token.tokenOfOwnerByIndex(this.toWhom, 0)).should.be.bignumber.equal(tokenId); - (await this.token.tokenOfOwnerByIndex(owner, 0)).toNumber().should.not.be.equal(tokenId); + (await this.token.tokenOfOwnerByIndex(owner, 0)).should.not.be.bignumber.equal(tokenId); }); }; @@ -173,7 +173,7 @@ function shouldBehaveLikeERC721 ( const tokensListed = await Promise.all( [0, 1].map(i => this.token.tokenOfOwnerByIndex(owner, i)) ); - tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + tokensListed.should.have.deep.members([firstTokenId, secondTokenId]); }); }); diff --git a/test/token/ERC721/ERC721Full.test.js b/test/token/ERC721/ERC721Full.test.js index a7642184f..42ed20da9 100644 --- a/test/token/ERC721/ERC721Full.test.js +++ b/test/token/ERC721/ERC721Full.test.js @@ -4,7 +4,7 @@ const { shouldSupportInterfaces } = require('../../introspection/SupportsInterfa const ERC721FullMock = artifacts.require('ERC721FullMock.sol'); -require('../../helpers/setup'); +const { BigNumber } = require('../../helpers/setup'); contract('ERC721Full', function ([ creator, @@ -12,10 +12,10 @@ contract('ERC721Full', function ([ ]) { const name = 'Non Fungible Token'; const symbol = 'NFT'; - const firstTokenId = 100; - const secondTokenId = 200; - const thirdTokenId = 300; - const nonExistentTokenId = 999; + const firstTokenId = new BigNumber(100); + const secondTokenId = new BigNumber(200); + const thirdTokenId = new BigNumber(300); + const nonExistentTokenId = new BigNumber(999); const minter = creator; @@ -41,11 +41,11 @@ contract('ERC721Full', function ([ }); it('adjusts owner tokens by index', async function () { - (await this.token.tokenOfOwnerByIndex(newOwner, 0)).toNumber().should.be.equal(thirdTokenId); + (await this.token.tokenOfOwnerByIndex(newOwner, 0)).should.be.bignumber.equal(thirdTokenId); }); it('adjusts all tokens list', async function () { - (await this.token.tokenByIndex(2)).toNumber().should.be.equal(thirdTokenId); + (await this.token.tokenByIndex(2)).should.be.bignumber.equal(thirdTokenId); }); }); @@ -55,16 +55,16 @@ contract('ERC721Full', function ([ }); it('removes that token from the token list of the owner', async function () { - (await this.token.tokenOfOwnerByIndex(owner, 0)).toNumber().should.be.equal(secondTokenId); + (await this.token.tokenOfOwnerByIndex(owner, 0)).should.be.bignumber.equal(secondTokenId); }); it('adjusts all tokens list', async function () { - (await this.token.tokenByIndex(0)).toNumber().should.be.equal(secondTokenId); + (await this.token.tokenByIndex(0)).should.be.bignumber.equal(secondTokenId); }); it('burns all tokens', async function () { await this.token.burn(secondTokenId, { from: owner }); - (await this.token.totalSupply()).toNumber().should.be.equal(0); + (await this.token.totalSupply()).should.be.bignumber.equal(0); await shouldFail.reverting(this.token.tokenByIndex(0)); }); }); @@ -145,15 +145,15 @@ contract('ERC721Full', function ([ }); it('returns correct token IDs for target', async function () { - (await this.token.balanceOf(another)).toNumber().should.be.equal(2); + (await this.token.balanceOf(another)).should.be.bignumber.equal(2); const tokensListed = await Promise.all( [0, 1].map(i => this.token.tokenOfOwnerByIndex(another, i)) ); - tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + tokensListed.should.have.deep.members([firstTokenId, secondTokenId]); }); it('returns empty collection for original owner', async function () { - (await this.token.balanceOf(owner)).toNumber().should.be.equal(0); + (await this.token.balanceOf(owner)).should.be.bignumber.equal(0); await shouldFail.reverting(this.token.tokenOfOwnerByIndex(owner, 0)); }); }); @@ -164,7 +164,7 @@ contract('ERC721Full', function ([ const tokensListed = await Promise.all( [0, 1].map(i => this.token.tokenByIndex(i)) ); - tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + tokensListed.should.have.deep.members([firstTokenId, secondTokenId]); }); it('should revert if index is greater than supply', async function () { @@ -173,14 +173,14 @@ contract('ERC721Full', function ([ [firstTokenId, secondTokenId].forEach(function (tokenId) { it(`should return all tokens after burning token ${tokenId} and minting new tokens`, async function () { - const newTokenId = 300; - const anotherNewTokenId = 400; + const newTokenId = new BigNumber(300); + const anotherNewTokenId = new BigNumber(400); await this.token.burn(tokenId, { from: owner }); await this.token.mint(newOwner, newTokenId, { from: minter }); await this.token.mint(newOwner, anotherNewTokenId, { from: minter }); - (await this.token.totalSupply()).toNumber().should.be.equal(3); + (await this.token.totalSupply()).should.be.bignumber.equal(3); const tokensListed = await Promise.all( [0, 1, 2].map(i => this.token.tokenByIndex(i)) @@ -188,7 +188,7 @@ contract('ERC721Full', function ([ const expectedTokens = [firstTokenId, secondTokenId, newTokenId, anotherNewTokenId].filter( x => (x !== tokenId) ); - tokensListed.map(t => t.toNumber()).should.have.members(expectedTokens); + tokensListed.should.have.deep.members(expectedTokens); }); }); });