Browse Source

add simple tests for BasicToken

Manuel Araoz 9 years ago
parent
commit
3e9bfbc77a
3 changed files with 62 additions and 1 deletions
  1. 12 0
      contracts/test-helpers/BasicTokenMock.sol
  2. 1 1
      contracts/token/BasicToken.sol
  3. 49 0
      test/BasicToken.js

+ 12 - 0
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;
+  }
+
+}

+ 1 - 1
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;
 

+ 49 - 0
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);
+  });
+
+});