From 71edad126b3c8a400000f8e8e4aff339eb88a474 Mon Sep 17 00:00:00 2001 From: Arseniy Klempner Date: Thu, 27 Oct 2016 22:17:21 -0700 Subject: [PATCH] Create tests for StandardToken --- contracts/test-helpers/StandardTokenMock.sol | 11 +++ test/StandardToken.js | 81 ++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 contracts/test-helpers/StandardTokenMock.sol create mode 100644 test/StandardToken.js diff --git a/contracts/test-helpers/StandardTokenMock.sol b/contracts/test-helpers/StandardTokenMock.sol new file mode 100644 index 000000000..38be987bd --- /dev/null +++ b/contracts/test-helpers/StandardTokenMock.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.4.0; +import '../StandardToken.sol'; + +// mock class using StandardToken +contract StandardTokenMock is StandardToken { + + function StandardTokenMock(address initialAccount, uint initialBalance) { + balances[initialAccount] = initialBalance; + } + +} diff --git a/test/StandardToken.js b/test/StandardToken.js new file mode 100644 index 000000000..40382c175 --- /dev/null +++ b/test/StandardToken.js @@ -0,0 +1,81 @@ +contract('StandardToken', function(accounts) { + + it("should return the correct allowance amount after approval", function(done) { + var token; + return StandardTokenMock.new() + .then(function(_token) { + token = _token; + return token.approve(accounts[1], 100); + }) + .then(function() { + return token.allowance(accounts[0], accounts[1]); + }) + .then(function(allowance) { + assert.equal(allowance, 100); + }) + .then(done); + }); + + it("should return correct balances after transfer", function(done) { + var token; + return StandardTokenMock.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 StandardTokenMock.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); + }); + + it("should return correct balances after transfering from another account", function(done) { + var token; + return StandardTokenMock.new(accounts[0], 100) + .then(function(_token) { + token = _token; + return token.approve(accounts[1], 100); + }) + .then(function() { + return token.transferFrom(accounts[0], accounts[2], 100, {from: accounts[1]}); + }) + .then(function() { + return token.balanceOf(accounts[0]); + }) + .then(function(balance) { + assert.equal(balance, 0); + return token.balanceOf(accounts[2]); + }) + .then(function(balance) { + assert.equal(balance, 100) + return token.balanceOf(accounts[1]); + }) + .then(function(balance) { + assert.equal(balance, 0); + }) + .then(done); + }); + +});