From 3fd51955731cb8497923e8647b52e490fab5b2ef Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Mon, 28 Jan 2019 19:08:16 -0300 Subject: [PATCH] remove StandardToken (unnecessary duplicate effort) --- contracts/examples/StandardToken.sol | 42 ------------- test/examples/StandardToken.test.js | 93 ---------------------------- 2 files changed, 135 deletions(-) delete mode 100644 contracts/examples/StandardToken.sol delete mode 100644 test/examples/StandardToken.test.js diff --git a/contracts/examples/StandardToken.sol b/contracts/examples/StandardToken.sol deleted file mode 100644 index c0414c1ca..000000000 --- a/contracts/examples/StandardToken.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity ^0.5.0; - -import "zos-lib/contracts/Initializable.sol"; -import "../token/ERC20/ERC20Detailed.sol"; -import "../token/ERC20/ERC20Mintable.sol"; -import "../token/ERC20/ERC20Pausable.sol"; - - -/** - * @title Standard ERC20 token, with minting and pause functionality. - * - */ -contract StandardToken is Initializable, ERC20Detailed, ERC20Mintable, ERC20Pausable { - function initialize( - string memory name, string memory symbol, uint8 decimals, uint256 initialSupply, address initialHolder, - address[] memory minters, address[] memory pausers, address sender - ) public initializer { - ERC20Detailed.initialize(name, symbol, decimals); - - // Mint the initial supply - if (initialSupply > 0) { // To allow passing a null address when not doing any initial supply - _mint(initialHolder, initialSupply); - } - - // Initialize the minter and pauser roles, and renounce them - ERC20Mintable.initialize(sender); - _removeMinter(sender); - - ERC20Pausable.initialize(sender); - _removePauser(sender); - - // Add the requested minters and pausers (this can be done after renouncing since - // these are the internal calls) - for (uint256 i = 0; i < minters.length; ++i) { - _addMinter(minters[i]); - } - - for (uint256 i = 0; i < pausers.length; ++i) { - _addPauser(pausers[i]); - } - } -} diff --git a/test/examples/StandardToken.test.js b/test/examples/StandardToken.test.js deleted file mode 100644 index 59926c81b..000000000 --- a/test/examples/StandardToken.test.js +++ /dev/null @@ -1,93 +0,0 @@ -const { shouldBehaveLikeERC20Mintable } = require('../token/ERC20/behaviors/ERC20Mintable.behavior'); - -const { BN } = require('openzeppelin-test-helpers'); - -const StandardToken = artifacts.require('StandardToken'); - -contract('StandardToken', function ([ - _, deployer, initialHolder, minterA, minterB, pauserA, pauserB, anyone, ...otherAccounts -]) { - const name = 'StdToken'; - const symbol = 'STDT'; - const decimals = new BN('18'); - - const initialSupply = new BN('300'); - - const minters = [minterA, minterB]; - const pausers = [pauserA, pauserB]; - - const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; - - beforeEach(async function () { - this.token = await StandardToken.new({ from: deployer }); - }); - - async function initialize (token, name, symbol, decimals, initialSupply, initialHolder, minters, pausers, from) { - const signature = 'initialize(string,string,uint8,uint256,address,address[],address[],address)'; - const args = [name, symbol, decimals, initialSupply, initialHolder, minters, pausers, from]; - await token.methods[signature](...args, { from }); - } - - context('with all arguments', function () { - beforeEach(async function () { - await initialize(this.token, name, symbol, decimals, initialSupply, initialHolder, minters, pausers, deployer); - }); - - it('initializes metadata', async function () { - (await this.token.name()).should.equal(name); - (await this.token.symbol()).should.equal(symbol); - (await this.token.decimals()).should.be.bignumber.equal(decimals); - }); - - it('assigns the initial supply to the initial holder', async function () { - (await this.token.balanceOf(initialHolder)).should.be.bignumber.equal(initialSupply); - }); - - describe('mintability', function () { - beforeEach(function () { - this.contract = this.token; - }); - - it('all minters have the minter role', async function () { - for (const minter of minters) { - (await this.token.isMinter(minter)).should.equal(true); - } - }); - - shouldBehaveLikeERC20Mintable(minterA, otherAccounts); - }); - - describe('pausability', function () { - beforeEach(function () { - this.contract = this.token; - }); - - it('all pausers have the minter role', async function () { - for (const pauser of pausers) { - (await this.token.isPauser(pauser)).should.equal(true); - } - }); - }); - }); - - it('can be created with zero initial balance', async function () { - await initialize(this.token, name, symbol, decimals, new BN(0), ZERO_ADDRESS, minters, pausers, deployer); - (await this.token.balanceOf(initialHolder)).should.be.bignumber.equal('0'); - }); - - it('can be created with no minters', async function () { - await initialize(this.token, name, symbol, decimals, initialSupply, initialHolder, [], pausers, deployer); - - for (const minter of minters) { - (await this.token.isMinter(minter)).should.equal(false); - } - }); - - it('can be created with no pausers', async function () { - await initialize(this.token, name, symbol, decimals, initialSupply, initialHolder, minters, [], deployer); - - for (const pauser of pausers) { - (await this.token.isPauser(pauser)).should.equal(false); - } - }); -});