mirror of https://github.com/embarklabs/embark.git
add tests to test_app
This commit is contained in:
parent
af908bc5f9
commit
98f0bd45e9
|
@ -11,3 +11,4 @@ test_app/dist/
|
|||
test_app/.embark/development/
|
||||
test_app/config/production/password
|
||||
test_app/node_modules/
|
||||
test_app/chains.json
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
// https://github.com/nexusdev/erc20/blob/master/contracts/base.sol
|
||||
|
||||
pragma solidity ^0.4.2;
|
||||
contract Token {
|
||||
|
||||
event Transfer(address indexed from, address indexed to, uint value);
|
||||
event Approval( address indexed owner, address indexed spender, uint value);
|
||||
|
||||
mapping( address => uint ) _balances;
|
||||
mapping( address => mapping( address => uint ) ) _approvals;
|
||||
uint public _supply;
|
||||
function Token( uint initial_balance ) {
|
||||
_balances[msg.sender] = initial_balance;
|
||||
_supply = initial_balance;
|
||||
}
|
||||
function totalSupply() constant returns (uint supply) {
|
||||
return _supply;
|
||||
}
|
||||
function balanceOf( address who ) constant returns (uint value) {
|
||||
return _balances[who];
|
||||
}
|
||||
function transfer( address to, uint value) returns (bool ok) {
|
||||
if( _balances[msg.sender] < value ) {
|
||||
throw;
|
||||
}
|
||||
if( !safeToAdd(_balances[to], value) ) {
|
||||
throw;
|
||||
}
|
||||
_balances[msg.sender] -= value;
|
||||
_balances[to] += value;
|
||||
Transfer( msg.sender, to, value );
|
||||
return true;
|
||||
}
|
||||
function transferFrom( address from, address to, uint value) returns (bool ok) {
|
||||
// if you don't have enough balance, throw
|
||||
if( _balances[from] < value ) {
|
||||
throw;
|
||||
}
|
||||
// if you don't have approval, throw
|
||||
if( _approvals[from][msg.sender] < value ) {
|
||||
throw;
|
||||
}
|
||||
if( !safeToAdd(_balances[to], value) ) {
|
||||
throw;
|
||||
}
|
||||
// transfer and return true
|
||||
_approvals[from][msg.sender] -= value;
|
||||
_balances[from] -= value;
|
||||
_balances[to] += value;
|
||||
Transfer( from, to, value );
|
||||
return true;
|
||||
}
|
||||
function approve(address spender, uint value) returns (bool ok) {
|
||||
// TODO: should increase instead
|
||||
_approvals[msg.sender][spender] = value;
|
||||
Approval( msg.sender, spender, value );
|
||||
return true;
|
||||
}
|
||||
function allowance(address owner, address spender) constant returns (uint _allowance) {
|
||||
return _approvals[owner][spender];
|
||||
}
|
||||
function safeToAdd(uint a, uint b) internal returns (bool) {
|
||||
return (a + b >= a);
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,53 @@
|
|||
|
||||
$(document).ready(function() {
|
||||
|
||||
async.waterfall([
|
||||
function test1(callback) {
|
||||
AnotherStorage.simpleStorageAddress().then(function(simpleStorageAddress) {
|
||||
$("#tests").append("<br>test 1: " + (simpleStorageAddress === SimpleStorage.address));
|
||||
callback();
|
||||
});
|
||||
},
|
||||
function test2(callback) {
|
||||
SimpleStorage.storedData().then(function(result) {
|
||||
$("#tests").append("<br>test 2 (true first time): " + (result.toNumber() === 100));
|
||||
$("#tests").append("<br>test 2 (true after): " + (result.toNumber() === 150));
|
||||
callback();
|
||||
});
|
||||
},
|
||||
function test3(callback) {
|
||||
SimpleStorage.set(150).then(function() {
|
||||
SimpleStorage.get().then(function(result) {
|
||||
$("#tests").append("<br>test 3: " + (result.toNumber() === 150));
|
||||
callback();
|
||||
});
|
||||
});
|
||||
},
|
||||
function test4(callback) {
|
||||
$("#tests").append("<br>test 4: " + (Token.address === "undefined"));
|
||||
$("#tests").append("<br>test 4: " + (MyToken.address !== undefined));
|
||||
$("#tests").append("<br>test 4: " + (MyToken2.address !== undefined));
|
||||
callback();
|
||||
},
|
||||
function test5(callback) {
|
||||
MyToken._supply().then(function(result) {
|
||||
$("#tests").append("<br>test 5: " + (result.toNumber() === 1000));
|
||||
callback();
|
||||
});
|
||||
},
|
||||
function test6(callback) {
|
||||
MyToken2._supply().then(function(result) {
|
||||
$("#tests").append("<br>test 6: " + (result.toNumber() === 2000));
|
||||
callback();
|
||||
});
|
||||
},
|
||||
function test7(callback) {
|
||||
$("#tests").append("<br>test 7: " + (AlreadyDeployedToken.address === "0x123"));
|
||||
callback();
|
||||
}
|
||||
], function (err, result) {
|
||||
$("#tests").append("<br>done");
|
||||
});
|
||||
|
||||
});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Embark - TestApp</title>
|
||||
<link rel="stylesheet" href="css/app.css">
|
||||
<script src="js/app.js"></script>
|
||||
</head>
|
||||
<body class="container">
|
||||
|
||||
<div id="tests"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"0xb6cfeab83614da04c03db0fb8a6787a45d0be8d576fcc6f8f457a5a816d22ab3": {
|
||||
"name": "development",
|
||||
"contracts": {
|
||||
"0x54e0e43bdd12bfce76988ea8f9e936bcdbfff7d5ba494a2522666c4cd57c1490": {
|
||||
"address": "0x5520587bfafb95e2ef4ed26bb56571050fd3e1b2",
|
||||
"name": "SimpleStorage"
|
||||
},
|
||||
"0x5bfc346ae2758ec398e301cd18b5b42e31817ef2c0eba0de8d921eee73310477": {
|
||||
"address": "0x042cc0d1ea786d15ad62a025c63fbd47ebdf3237",
|
||||
"name": "AnotherStorage"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -11,6 +11,21 @@
|
|||
"args": [
|
||||
"$SimpleStorage"
|
||||
]
|
||||
},
|
||||
"Token": {
|
||||
"deploy": false,
|
||||
"args": [1000]
|
||||
},
|
||||
"MyToken": {
|
||||
"instanceOf": "Token"
|
||||
},
|
||||
"MyToken2": {
|
||||
"instanceOf": "Token",
|
||||
"args": [2000]
|
||||
},
|
||||
"AlreadyDeployedToken": {
|
||||
"address": "0x123",
|
||||
"instanceOf": "Token"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
"css/app.css": ["app/css/**"],
|
||||
"images/": ["app/images/**"],
|
||||
"js/app.js": ["embark.js", "app/js/_vendor/jquery.min.js", "app/js/_vendor/bootstrap.min.js", "app/js/**"],
|
||||
"index.html": "app/index.html"
|
||||
"index.html": "app/index.html",
|
||||
"test.html": "app/test.html"
|
||||
},
|
||||
"buildDir": "dist/",
|
||||
"config": "config/",
|
||||
"plugins": {
|
||||
"embark-babel": {}
|
||||
"embark-babel": {"files": ["**/*.js", "**/*.jsx", "!**/_vendor/*.js"]}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,12 +11,23 @@ describe("AnotherStorage", function() {
|
|||
},
|
||||
"AnotherStorage": {
|
||||
args: ["$SimpleStorage"]
|
||||
},
|
||||
"Token": {
|
||||
deploy: false,
|
||||
args: [1000]
|
||||
},
|
||||
"MyToken": {
|
||||
instanceOf: "Token"
|
||||
},
|
||||
"MyToken2": {
|
||||
instanceOf: "Token",
|
||||
args: [2000]
|
||||
}
|
||||
};
|
||||
EmbarkSpec.deployAll(contractsConfig, done);
|
||||
});
|
||||
|
||||
it("should set constructor value", function(done) {
|
||||
it("set SimpleStorage address", function(done) {
|
||||
AnotherStorage.simpleStorageAddress(function(err, result) {
|
||||
assert.equal(result.toString(), SimpleStorage.address);
|
||||
done();
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
var assert = require('assert');
|
||||
var Embark = require('embark');
|
||||
var EmbarkSpec = Embark.initTests();
|
||||
var web3 = EmbarkSpec.web3;
|
||||
|
||||
describe("Token", function() {
|
||||
before(function(done) {
|
||||
var contractsConfig = {
|
||||
"SimpleStorage": {
|
||||
args: [100]
|
||||
},
|
||||
"AnotherStorage": {
|
||||
args: ["$SimpleStorage"]
|
||||
},
|
||||
"Token": {
|
||||
deploy: false,
|
||||
args: [1000]
|
||||
},
|
||||
"MyToken": {
|
||||
instanceOf: "Token"
|
||||
},
|
||||
"MyToken2": {
|
||||
instanceOf: "Token",
|
||||
args: [2000]
|
||||
},
|
||||
"AlreadyDeployedToken": {
|
||||
"address": "0x123",
|
||||
instanceOf: "Token"
|
||||
}
|
||||
};
|
||||
EmbarkSpec.deployAll(contractsConfig, done);
|
||||
});
|
||||
|
||||
it("not deploy Token", function(done) {
|
||||
assert.equal(Token.address, "undefined");
|
||||
done();
|
||||
});
|
||||
|
||||
it("not deploy MyToken and MyToken2", function(done) {
|
||||
assert.notEqual(MyToken.address, "undefined");
|
||||
assert.notEqual(MyToken2.address, "undefined");
|
||||
done();
|
||||
});
|
||||
|
||||
it("set MyToken Balance correctly", function(done) {
|
||||
MyToken._supply(function(err, result) {
|
||||
assert.equal(result.toNumber(), 1000);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("set MyToken2 Balance correctly", function(done) {
|
||||
MyToken2._supply(function(err, result) {
|
||||
assert.equal(result.toNumber(), 2000);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("get right address", function(done) {
|
||||
assert.equal(AlreadyDeployedToken.address, "0x123");
|
||||
done();
|
||||
});
|
||||
|
||||
});
|
Loading…
Reference in New Issue