'user strict'; import assertRevert from './helpers/assertRevert'; var PausableTokenMock = artifacts.require('./mocks/PausableTokenMock.sol'); contract('PausableToken', function (accounts) { let token; beforeEach(async function () { token = await PausableTokenMock.new(accounts[0], 100); }); it('should return paused false after construction', async function () { let paused = await token.paused(); assert.equal(paused, false); }); it('should return paused true after pause', async function () { await token.pause(); let paused = await token.paused(); assert.equal(paused, true); }); it('should return paused false after pause and unpause', async function () { await token.pause(); await token.unpause(); let paused = await token.paused(); assert.equal(paused, false); }); it('should be able to transfer if transfers are unpaused', async function () { await token.transfer(accounts[1], 100); let balance0 = await token.balanceOf(accounts[0]); assert.equal(balance0, 0); let balance1 = await token.balanceOf(accounts[1]); assert.equal(balance1, 100); }); it('should be able to transfer after transfers are paused and unpaused', async function () { await token.pause(); await token.unpause(); await token.transfer(accounts[1], 100); let balance0 = await token.balanceOf(accounts[0]); assert.equal(balance0, 0); let balance1 = await token.balanceOf(accounts[1]); assert.equal(balance1, 100); }); it('should throw an error trying to transfer while transactions are paused', async function () { await token.pause(); await assertRevert(token.transfer(accounts[1], 100)); }); it('should throw an error trying to transfer from another account while transactions are paused', async function () { await token.pause(); await assertRevert(token.transferFrom(accounts[0], accounts[1], 100)); }); });