From 3e9bfbc77a118e5bac5bedcdddca45128b015321 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 16 Nov 2016 13:18:42 -0300 Subject: [PATCH] add simple tests for BasicToken --- contracts/test-helpers/BasicTokenMock.sol | 12 ++++++ contracts/token/BasicToken.sol | 2 +- test/BasicToken.js | 49 +++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 contracts/test-helpers/BasicTokenMock.sol create mode 100644 test/BasicToken.js diff --git a/contracts/test-helpers/BasicTokenMock.sol b/contracts/test-helpers/BasicTokenMock.sol new file mode 100644 index 000000000..9f19e47ea --- /dev/null +++ b/contracts/test-helpers/BasicTokenMock.sol @@ -0,0 +1,12 @@ +pragma solidity ^0.4.4; +import '../token/BasicToken.sol'; + +// mock class using BasicToken +contract BasicTokenMock is BasicToken { + + function BasicTokenMock(address initialAccount, uint initialBalance) { + balances[initialAccount] = initialBalance; + totalSupply = initialBalance; + } + +} diff --git a/contracts/token/BasicToken.sol b/contracts/token/BasicToken.sol index 3f54f5192..6e6a747c2 100644 --- a/contracts/token/BasicToken.sol +++ b/contracts/token/BasicToken.sol @@ -7,7 +7,7 @@ import '../SafeMath.sol'; * Basic token * Basic version of StandardToken, with no allowances */ -contract BasicToken is ERC20Lite, SafeMath { +contract BasicToken is ERC20Basic, SafeMath { mapping(address => uint) balances; diff --git a/test/BasicToken.js b/test/BasicToken.js new file mode 100644 index 000000000..12b411c41 --- /dev/null +++ b/test/BasicToken.js @@ -0,0 +1,49 @@ +contract('BasicToken', function(accounts) { + + it("should return the correct totalSupply after construction", function(done) { + return BasicTokenMock.new(accounts[0], 100) + .then(function(token) { + return token.totalSupply(); + }) + .then(function(totalSupply) { + assert.equal(totalSupply, 100); + }) + .then(done); + }) + + it("should return correct balances after transfer", function(done) { + var token; + return BasicTokenMock.new(accounts[0], 100) + .then(function(_token) { + token = _token; + return token.transfer(accounts[1], 100); + }) + .then(function() { + return token.balanceOf(accounts[0]); + }) + .then(function(balance) { + assert.equal(balance, 0); + }) + .then(function() { + return token.balanceOf(accounts[1]); + }) + .then(function(balance) { + assert.equal(balance, 100); + }) + .then(done); + }); + + it("should throw an error when trying to transfer more than balance", function(done) { + var token; + return BasicTokenMock.new(accounts[0], 100) + .then(function(_token) { + token = _token; + return token.transfer(accounts[1], 101); + }) + .catch(function(error) { + if (error.message.search('invalid JUMP') == -1) throw error + }) + .then(done); + }); + +});